- 浏览: 1204446 次
- 性别:
- 来自: 荆州
文章分类
- 全部博客 (396)
- Android 基础 (72)
- Java 基础 (42)
- Android(动画效果) (26)
- Android(自定义组件) (13)
- Android(手机服务) (38)
- Android(网络相关) (27)
- Android(多媒体) (12)
- Android(小技巧) (30)
- Android(用户界面) (39)
- 基础概念 (24)
- Android组件学习 (21)
- Android数据库相关 (11)
- 生活杂谈 (10)
- 调试技巧部分 (8)
- Sql Server相关 (1)
- Android(xml相关) (2)
- Android 开发 (12)
- 韩语学习 (4)
- Mac添加环境变量的三种方法 (1)
- iPhone开发 (1)
- Android Studio (1)
最新评论
-
ppfbsar:
下载网络文件到SD卡上 -
851228082:
好文!彻底理解单类型导入与按需导入的区别了。还有一点可以通过 ...
谈java的导入(import) -
麦田的设计者:
老乡啊
sqlite 数据库保存图片 -
sf_dream:
我要是读写list、map之类的集合呢
ObjectOutputStream和ObjectInputStream类的学习 -
xfyunyun:
博主,请问webview加载html字符串时怎么进行缓存处理呢 ...
WebView使用总结2(加载HTML内容形式的String)
直接上代码把,上面都写了很清楚的注释:
还有重要的就是这个anim文件夹中的explosion.xml
附件是图片资源
package com.ray.bubble; import android.app.Activity; import android.content.Context; import android.graphics.drawable.AnimationDrawable; import android.os.Bundle; import android.view.MotionEvent; import android.view.View; import android.view.Window; import android.view.WindowManager; import android.view.View.OnTouchListener; import android.widget.FrameLayout; import android.widget.ImageView; public class BubbleExplosion extends Activity { private FrameLayout parentLayout; private ExplosionView customView; private AnimationDrawable exa1; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 设置无标题栏,全屏效果 requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); // 代码创建一个FrameLayout,设置背景图片 parentLayout = new FrameLayout(this); parentLayout.setBackgroundResource(R.drawable.bg); // 代码创建一个自定义ImageView,并添加到上面的FrameLayout当中 // 并且设置这个ImageView有个动画的背景效果, // 设置为不可见 customView = new ExplosionView(this); customView.setVisibility(View.INVISIBLE); customView.setBackgroundResource(R.anim.explosion); // 获取动画效果背景的图像 exa1 = (AnimationDrawable) customView.getBackground(); parentLayout.addView(customView); // 设置页面点击监听 parentLayout.setOnTouchListener(new LayoutListener()); setContentView(parentLayout); } class ExplosionView extends ImageView { public ExplosionView(Context context) { super(context); } // handle the location of the explosion public void setLocation(int top, int left) { this.setFrame(left, top, left + 40, top + 40); } } class LayoutListener implements OnTouchListener { public boolean onTouch(View v, MotionEvent event) { // first u have to stop the animation,or if the animation // is starting ,u can start it again! customView.setVisibility(View.INVISIBLE); // 如果动画已在运行,则不起效果 exa1.stop(); float x = event.getX(); float y = event.getY(); // 重新定位ImageView在layout上的坐标位置 customView.setLocation((int) y - 20, (int) x - 20); customView.setVisibility(View.VISIBLE); exa1.start(); return false; } } }
还有重要的就是这个anim文件夹中的explosion.xml
<animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="true"> <item android:drawable="@drawable/explode1" android:duration="50" /> <item android:drawable="@drawable/explode2" android:duration="50" /> <item android:drawable="@drawable/explode3" android:duration="50" /> <item android:drawable="@drawable/explode4" android:duration="50" /> </animation-list>
附件是图片资源
- explosion.rar (55.5 KB)
- 下载次数: 145
评论
4 楼
java_chaochao
2010-12-22
不管怎么样动画都演绎两次 - -
3 楼
java_chaochao
2010-12-22
刚刚是我的代码, bubble0.png 会显示两次, 不知到怎解决这问题 :(
2 楼
java_chaochao
2010-12-22
package net.tq5.bubbleexplosion; import android.app.Activity; import android.content.Context; import android.graphics.drawable.AnimationDrawable; import android.os.Bundle; import android.util.Log; import android.view.MotionEvent; import android.view.View; import android.view.Window; import android.view.WindowManager; import android.view.View.OnTouchListener; import android.widget.FrameLayout; import android.widget.ImageView; public class BubbleExplosionActivity extends Activity { public static final String TAG = "BubbleExplosionActivity"; /** Called when the activity is first created. */ private FrameLayout parent; private ExplosionView customView; private AnimationDrawable exal; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // set no title; requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); // Create a FrameLayout and set the background; parent = new FrameLayout(this); parent.setBackgroundResource(R.drawable.bg); customView = new ExplosionView(this); customView.setVisibility(View.INVISIBLE); customView.setBackgroundResource(R.anim.explosion); exal = (AnimationDrawable) customView.getBackground(); parent.addView(customView); parent.setOnTouchListener(new LayoutListener()); setContentView(parent); } class ExplosionView extends ImageView { public ExplosionView(Context context) { super(context); } // handle the location of the Explosion; public void setLocation(int left, int top) { this.setFrame(left, top, left + 40, top + 40); } } class LayoutListener implements OnTouchListener { @Override public boolean onTouch(View view, MotionEvent event) { // first you stop the animation // you can always restart it; customView.setVisibility(View.INVISIBLE); if (exal.isRunning()) return false; // exal.stop(); float x = event.getX(); float y = event.getY(); Log.i(TAG, "on Touch"); customView.setLocation((int) x - 20, (int) y - 20); customView.setVisibility(View.VISIBLE); exal.start(); return false; } } }
<?xml version="1.0" encoding="utf-8"?> <animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="true"> <item android:drawable="@drawable/bubble0" android:duration="500" /> <item android:drawable="@drawable/explode1" android:duration="500" /> <item android:drawable="@drawable/explode2" android:duration="500" /> <item android:drawable="@drawable/explode3" android:duration="500" /> <item android:drawable="@drawable/explode4" android:duration="500" /> <item android:drawable="@drawable/explode5" android:duration="500" /> </animation-list>
1 楼
java_chaochao
2010-12-22
我尝试把资源中的bubble0.png 也写进了exlosion.xml (第一个), 运行是发现有些不对劲,把每个item的duration 都设为500 放慢速度发现, bubble0.png会显示两次。
然后我在代码中用log输出发现每次触摸屏幕都会至少触发两次 onTouch,
我以为是重复调用onTouch回调方法的原因,便做测试:
在 onTouch 中添加代码:
结果还是不能解决问题, 你测试的时候有这问题吗? 还是我这里什么写错了?
然后我在代码中用log输出发现每次触摸屏幕都会至少触发两次 onTouch,
我以为是重复调用onTouch回调方法的原因,便做测试:
在 onTouch 中添加代码:
if (exal.isRunning) return false;
结果还是不能解决问题, 你测试的时候有这问题吗? 还是我这里什么写错了?
发表评论
-
自定义ProgressDialog
2013-04-21 15:58 1101就2段关键代码: <?xml version=&qu ... -
弹性 ScrollView
2013-04-21 15:14 1354CustomerScrollView.java: clas ... -
走马灯效果文字
2012-02-15 16:05 1844走马灯效果的代码,对Tex ... -
API DEMO中3D旋转Layout效果
2011-12-08 13:07 2971LayoutChange.java: package cn ... -
自定义Loading Dialog
2011-09-12 21:00 2675好久没有更新blog,这段时间忙着换工作的事情,现在赶紧的拾掇 ... -
关于旋转动画效果
2011-05-01 17:13 2217好久没有写过blog了,5.1还在继续劳动,:( 刚研究完一个 ... -
Dialog伸缩动画效果
2011-01-13 14:45 6560效果图: ViewScale.java: publ ... -
球体旋转Anim(主要学习点Matrix知识)
2010-12-09 20:20 2083这点Code主要对View重写进行球体旋转: 知识点: 1.重 ... -
Anim中实现Scale和Alpha操作ImageView
2010-12-09 19:51 2825针对这个动画效果的应用,可以了解如下几个知识点: 1.几种动画 ... -
Image的放大,缩小(zoom in,zoom out)
2010-09-15 10:51 3341package com.example; impor ... -
TextView中各种Interpolator的使用
2010-09-09 13:07 3526package net.blogjava.mobile.i ... -
点击button拖动效果
2010-09-09 10:05 1571这个简单的代码段可以熟悉getX(),getRawX()等方法 ... -
API中画arc的简单代码
2010-09-07 14:45 1466package com.test; import a ... -
文本抖动效果
2010-09-05 21:58 2805几句代码如下: Animation animation = ... -
球体运动效果
2010-08-14 22:42 1747看个效果图: 自定义的View: package ... -
一种动画2中不同实现方式(代码和xml)
2010-08-05 21:01 1434AnimTwo.java文件: package cn.co ... -
Activity之间切换的各种效果(遗憾没有3D的效果)
2010-08-05 19:25 7161下面的Demo是我找到的一个觉得用来在程序中进行Activit ... -
Layout之间3D切换效果Demo
2010-07-26 21:58 4051先上个效果图(跟自己Blog中的浏览图片的代码类似,不过是la ... -
ImageView点击透明度变化效果
2010-07-26 20:53 45971. ClickAlphaChange.java文件 pa ... -
图片3D浏览的Demo
2010-07-26 14:21 2123这是个图片浏览的例子; 刚在群里一个家伙给提供的思路: 1. ...
相关推荐
Drawable基础Demo
Android的Drawable学习Demo
自定义Drawable实现灵动的红鲤鱼动画,附:算法计算。
Android基础——Tween动画、Drawable动画、Property动画、MaterialDesign动画、Trasition动画
github最新android-gif-drawable资源so; android-async-http-1.4.5.jar demo中实现了本地gif显示和网络加载gif显示
这个程序是对android的部分Drawable的实现。包括了BitmapDrawable,InsetDrawable,ClipDrawable,TransitionDrawable,GradientDrawable,...里面没有什么复杂的东西,只是简单实现了这些Drawable,供参考。
DrawableStatesDemo 一个学习自定义Drawable以及学习DrawableState的demo #Author Wangjia55 () #效果图
DEMO APK How? The library provides a few implementations like SearchArrowDrawable, SearchCrossDrawable or DrawerArrowDrawable: ToggleDrawable drawable = new SearchArrowDrawable(context); ...
代码实现drawable的selector效果,不用为每个控件写selector样式; 另外,实现圆形图片处理、圆角图片处理功能
使用android-gif-drawable实现gif的图片加载显示
使用android-gif-drawable实现gif的加载显示
我的博客《Android动画之一:Drawable Animation》附带源码
Android自定义Drawable的代码例子。用于演示自定义Drawable的功能,包括自定义形状、自定义水印、自定义淡出等几种类型的Drawable。
Android用drawable实行属性按钮3种状态demo,原博客地址http://blog.csdn.net/u010356768/article/details/78351416
自定义Drawable实现圆形图片和圆角图片,个人感觉挺简单的
自定义属性动画 详细介绍见:https://blog.csdn.net/lantianZMH01/article/details/80039200
我的博客《Android动画之一:Drawable Animation》的附带源码
可绘制动画演示可绘制和动画的 Android 演示。 有一个简单的按钮,它使用可绘制的样式,然后在单击时进行动画处理。 查看相关指南: