使用样例
下面的代码是一个 view,系统创建 view 时会调用 onCreate 方法,该方法定义了一个 TranslateAniamtion,指定了移动起点和终点,动画持续时间为 1s,最后调用
startAnimation 将该动画保存在 View 的成员 mCurrentAnianmtion 中并启动动画。
注意,在 View 中需要定义成员变量 mCurrentAnimation 和 mTransformation ,分别记录 当前的动画和变换。另外需要定义成员函数 startAnimation 启动动画。
Java 代码
1. class MyView extends View { 2.
3. Animation mCurrentAnimation = null;
4.
5. Transformation mTransformation = new Transformation;
6.
7.
8.
9. private void setAnimation(Animation animation) { 10. mCurrentAnimation = animation;
11. if (animation != null) { 12. animation.reset();
13. } 14. } 15.
16.
17.
18. public void startAnimation(Animation animation) {
19. animation.setStartTime(animation.START_ON_FIRST_FRAME);
20. setAnimation(animation);
21. invalidate();
22. } 23.
24.
25. onDraw (Canvas canvas) { 26.
27. long curTime = SystemClock.uptimeMillis ();
28.
29. if (mCurrentAniamtion == null){
30.
31. canvas.drawBitmap (b, x, y, mPaint);
41. boolean more = mCurrentAnimation.getTransformation (curTime, mTransformatio n);
74. Animation anim = new TranslateAnimation (10, 20, 0, 0);
75.
76. anim.setDuration (1000); // 1s 77.
78. anim.setInterpolator (new AcceleratInterpolator(3.0f));
79.
80. startAniamtion (anim);
81.
82. } 83. }
Android Animation Frame 动画
文章分类:Java 编程 1.java 代码实现:
Java 代码
1. package com.Aina.Android;
2.
3. import android.content.Context;
4. import android.graphics.Canvas;
5. import android.graphics.drawable.AnimationDrawable;
6. import android.graphics.drawable.Drawable;
7. import android.view.KeyEvent;
8. import android.view.View;
9. import android.widget.ImageView;
10.
11. /**
12. * com.Aina.Android Pro_AnimationFrame 13. *
14. * @author Aina.huang E-mail: [email protected]
15. * @version 创建时间:2010 Jun 18, 2010 1:56:18 PM 类说明 16. */
17. public class GameView extends View { 18.
19. private AnimationDrawable mAnimationDrawable = null;
20. private Context mContext = null;
21. private Drawable mDrawable = null;
22.
23. public GameView(Context context) { 24. super(context);
25. this.mContext = context;
26.
27. mAnimationDrawable = new AnimationDrawable();
28. for (int i = 1; i <= 15; i++) {
29. int id = this.getResources().getIdentifier("a" + i, "drawable", 30. mContext.getPackageName());
31. mDrawable = this.getResources().getDrawable(id);
32. mAnimationDrawable.addFrame(mDrawable, 100);// 为动画添加一帧.时间为毫秒 33. }
34. mAnimationDrawable.setOneShot(false);// 设置播放模式是否循环,false 循环,true 不循环.
35.
36. // ImageView iv = new ImageView(mContext);
37. // iv.setBackgroundResource(R.anim.frame);
38. // mAnimationDrawable = (AnimationDrawable) iv.getBackground();
39. this.setBackgroundDrawable(mAnimationDrawable);// 显示动画.
40.
41. } 42.
43. @Override
44. protected void onDraw(Canvas canvas) { 45. super.onDraw(canvas);
46. }
47. public boolean onKeyDown(int keyCode, KeyEvent event) { 48. if(keyCode==KeyEvent.KEYCODE_1){
49. mAnimationDrawable.start();//启动动画.
50. }
51. return super.onKeyDown(keyCode, event);
52. } 53. }
Java 代码
1. package com.Aina.Android;
2.
3. import android.app.Activity;
4. import android.os.Bundle;
5. import android.view.KeyEvent;
6.
7. public class Test_Frame extends Activity { 8. /** Called when the activity is first created. */
9. private GameView gv = null;
10. @Override
11. public void onCreate(Bundle savedInstanceState) { 12. super.onCreate(savedInstanceState);
13. gv = new GameView(this);
14. setContentView(gv);
15. }
16. @Override
17. public boolean onKeyDown(int keyCode, KeyEvent event) { 18. return gv.onKeyDown(keyCode, event);
19. } 20.
21. }
2.xml 布局文件实现:
Java 代码
1. <?xml version="1.0" encoding="utf-8"?>
2. <animation-list
3. xmlns:android="http://schemas.android.com/apk/res/android"
4. android:oneshot="false">
5. <item android:drawable="@drawable/a1" android:duration="100" />
6. <item android:drawable="@drawable/a2" android:duration="100" />
7. <item android:drawable="@drawable/a3" android:duration="100" />
8. <item android:drawable="@drawable/a4" android:duration="100" />
9. <item android:drawable="@drawable/a5" android:duration="100" />
10. <item android:drawable="@drawable/a6" android:duration="100" />
11. <item android:drawable="@drawable/a7" android:duration="100" />
12. <item android:drawable="@drawable/a8" android:duration="100" />
13. <item android:drawable="@drawable/a9" android:duration="100" />
14. <item android:drawable="@drawable/a10" android:duration="100" />
15. <item android:drawable="@drawable/a11" android:duration="100" />
16. <item android:drawable="@drawable/a12" android:duration="100" />
17. <item android:drawable="@drawable/a13" android:duration="100" />
18. <item android:drawable="@drawable/a14" android:duration="100" />
19. <item android:drawable="@drawable/a15" android:duration="100" />
20. </animation-list>
Java 代码
1. package com.Aina.Android;
2.
3. import android.content.Context;
4. import android.graphics.Canvas;
5. import android.graphics.drawable.AnimationDrawable;
6. import android.graphics.drawable.Drawable;
7. import android.view.KeyEvent;
8. import android.view.View;
9. import android.widget.ImageView;
10.
11. /**
12. * com.Aina.Android Pro_AnimationFrame 13. *
14. * @author Aina.huang E-mail: [email protected]
15. * @version 创建时间:2010 Jun 18, 2010 1:56:18 PM 类说明 16. */
17. public class GameView extends View { 18.
19. private AnimationDrawable mAnimationDrawable = null;
20. private Context mContext = null;
34. mAnimationDrawable.setOneShot(false);// 设置播放模式是否循环,false 循环,
true 不循环.
47. public boolean onKeyDown(int keyCode, KeyEvent event) { 48. if(keyCode==KeyEvent.KEYCODE_1){
49. mAnimationDrawable.start();//启动动画.
50. }
51. return super.onKeyDown(keyCode, event);
52. } 53. }
Android ImageSwithcher 的使用
文章分类:Java 编程
图片切换 ImageSwitcher 的使用:
Java 代码
1. package com.Aina.Android;
2. import android.app.Activity;
3. import android.os.Bundle;
4. import android.util.Log;
5. import android.view.View;
6. import android.view.View.OnClickListener;
7. import android.widget.Button;
8. import android.widget.ImageSwitcher;
9. import android.widget.ImageView;
10. import android.widget.LinearLayout;
11. import android.widget.ViewSwitcher.ViewFactory;
12.
13. public class Test_ImageSwitcher extends Activity implements OnClickListener,ViewFactor y{
14. /** Called when the activity is first created. */
15. //所有要显示的图片资源索引
16. private static final Integer[] imagelist = { 17. R.drawable.img1,
18. R.drawable.img2, 19. R.drawable.img3, 20. R.drawable.img4, 21. R.drawable.img5, 22. R.drawable.img6, 23. R.drawable.img7, 24. R.drawable.img8 25. };
26. private ImageSwitcher imageswitcher;
27. private static int index = 0;
28. //设置各组件 ID
29. private static final int Button_NEXT = 0x123456;
39. LinearLayout.LayoutParams p2 = new LinearLayout.LayoutParams(120,120);
40. layout.addView(imageswitcher,p2);
51. LinearLayout.LayoutParams p = new LinearLayout.LayoutParams(100,100);
52. layout.addView(next, p);
73. imageswitcher.setImageResource(imagelist[index]);
74. } 75. }
76. @Override
77. public View makeView() { 78. Log.i("TAG", "makeView()");
79. return new ImageView(this);
80. } 81. }
android 图形图像
文章分类:移动开发
一、 android.graphics.Matrix
有关图形的变换、缩放等相关操作常用的方法有:
void reset() // 重置一个 matrix 对象。
void set(Matrix src) //复制一个源矩阵,和本类的构造方法 Matrix(Matrix src) 一样 boolean isIdentity() //返回这个矩阵是否定义(已经有意义)
void setRotate(float degrees) //指定一个角度以 0,0 为坐标进行旋转
void setRotate(float degrees, float px, float py) //指定一个角度以 px,py 为坐标进行旋转
void setScale(float sx, float sy) // 缩放
void setScale(float sx, float sy, float px, float py) //以坐标 px,py 进行缩放
void setTranslate(float dx, float dy) //平移
void setSkew (float kx, float ky, float px, float py) //以坐标 px,py 进行倾斜 void setSkew (float kx, float ky) //倾斜
二、android.graphics.NinePatch
NinePatch 是 Android 平台特有的一种非矢量图形自然拉伸处理方法,可以帮助常规的图形 在拉伸时不会缩放,实例中 Android 开发网提示大家对于 Toast 的显示就是该原理,同时 SDK 中提供了一个工具名为 Draw 9-Patch,有关该工具的使用方法可以参考我们经发布的 Draw 9-Patch 使用方法介绍一文。由于该类提供了高质量支持透明的缩放方式,所以图形格式为 PNG,文件命名方式为.9.png 的后缀比如 android123.9.png。
三、android.graphics.Paint
Paint 类我们可以理解为画笔、画刷的属性定义,本类常用的方法如下:
void reset() //重置
void setARGB(int a, int r, int g, int b) 或 void setColor(int color) 均为设置 Paint 对象的颜色 void setAntiAlias(boolean aa) //是否抗锯齿,需要配合 void setFlags (Paint.ANTI_ALIAS_FLAG) 来帮助消除锯齿使其边缘更平滑。
Shader setShader(Shader shader) //设置阴影,Shader 类是一个矩阵对象,如果为 NULL 将清 除阴影。
void setStyle(Paint.Style style) //设置样式,一般为 FILL 填充,或者 STROKE 凹陷效果。
void setTextSize(float textSize) //设置字体大小 void setTextAlign(Paint.Align align) //文本对齐方式
Typeface setTypeface(Typeface typeface) //设置字体,通过 Typeface 可以加载 Android 内部 的字体,一般为宋体对于中文,部分 ROM 可以自己添加比如雅黑等等
void setUnderlineText(boolean underlineText) //是否设置下划线,需要撇和 void setFlags (Paint.UNDERLINE_TEXT_FLAG) 方法。
四、android.graphics.Rect
Rect 我们可以理解为矩形区域,类似的还有 Point 一个点,Rect 类除了表示一个矩形区域 位置描述外,android123 提示主要可以帮助我们计算图形之间是否碰撞(包含)关系,对于 Android 游戏开发比较有用,其主要的成员 contains 包含了三种重载方法,来判断包含关系