• 沒有找到結果。

使用样例

使用样例

下面的代码是一个 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 包含了三种重载方法,来判断包含关系

boolean contains(int left, int top, int right, int bottom)

boolean contains(int x, int y)