zl程序教程

您现在的位置是:首页 >  移动开发

当前栏目

Android开发之50个常见实用技巧——添加悦目的动画效果详解手机开发

Android动画手机开发 详解 添加 效果 常见
2023-06-13 09:20:14 时间

实现步骤:

1、通过findViewById()方法获取TextSwitcher对象的引用Swithcer,当然也可直接在代码中构造持续对象;

2、通过Switcher.setFactory()方法指定TextSwitcher的ViewFactory;

3、通过Switcher的.setInAnimation()方法设置换人动画效果;

4、通过Switcher.setOutAnimation 方法设置换出动画效果。

代码如下:

 1 private TextSwitcher mTextSwitcher; 

 3 @Override 

 4 public void onCreate(Bundle savedInstanceState) { 

 5 super.onCreate(savedInstanceState); 

 6 setContentView(R.layout.main); 

 7 Animation in = AnimationUtils.loadAnimation(this, 

 8 android.R.anim.fade_in); 

 9 Animation out = AnimationUtils.loadAnimation(this, 

10 android.R.anim.fade_out); 

11 mTextSwitcher = (TextSwitcher) findViewById(R.id.your_textview); 

12 mTextSwitcher.setFactory(new ViewFactory() { 

13 @Override 

14 public View makeView() { 

15 TextView t = new TextView(YourActivity.this); 

16 t.setGravity(Gravity.CENTER);17 return t; 

18 } 

19 }); 

20 mTextSwitcher.setInAnimation(in); 

21 mTextSwitcher.setOutAnimation(out); 

22 }

 

Hack.6 为ViewGroup的子视图添加悦目的动画效果

步骤:

1、获取ListView的引用;

2、创建默认动画集合对象,AnimationSet;

3、创建透明度渐变动画,移位动画,分别为AlphaAnimation,TranslateAnimation;

4、创建LayoutAnimationController对象并设置子视图,动画效果持续时间;

5、将LayoutAnimationController对象设置到ListView中;

关键代码如下:

mListView = (ListView) findViewById(R.id.my_listview_id); 

AnimationSet set = new AnimationSet(true); 

Animation animation = new AlphaAnimation(0.0f, 1.0f); 

animation.setDuration(50); 

set.addAnimation(animation); 

animation = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 0.0f, 

Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF, 

 -1.0f, Animation.RELATIVE_TO_SELF, 0.0f); 

animation.setDuration(100); 

set.addAnimation(animation); 

LayoutAnimationController controller = 
new LayoutAnimationController(set, 0.5f); mListView.setLayoutAnimation(controller);

 

 

 

 Hcak.7 在Canvas上显示动画

关于Canvas:

可以把 Canvas 视为 Surface 的替身或者接口,图形便是绘制在 Surface 上的。Canvas 封装了所有绘图调用。通过 Canvas,绘制

到 Surface 上的内容首先存储到与之关联的 Bitmap 中,该 Bitmap最终会呈现到窗口上。

在onDraw()方法中调用。。。

关键代码如下:

Activity代码:

public class MainActivity extends Activity { 

 private DrawView mDrawView; 

 @Override 

 public void onCreate(Bundle savedInstanceState) { 

 super.onCreate(savedInstanceState); 

 Display display = getWindowManager().getDefaultDispla y(); 

 mDrawView = new DrawView(this); 

 mDrawView.height = display.getHeight(); 

 mDrawView.width = display.getWidth(); 

 setContentView(mDrawView); 

}

 

DrawView类:

public class DrawView extends View { 

 private Rectangle mRectangle; 

 public int width; 

 public int height; 

 public DrawView(Context context) { 

 super(context); 

 mRectangle = new Rectangle(context, this); 

 mRectangle.setARGB(255, 255, 0, 0); 

 mRectangle.setSpeedX(3); 

 mRectangle.setSpeedY(3); 

 @Override 

 protected void onDraw(Canvas canvas) { 

 mRectangle.move(); 

 mRectangle.onDraw(canvas); 

 invalidate(); 

}

 

分析:

1、创建一个Rectangle实例,代表一个方块;Rectangle类内部实现了将自身绘制到Canvas上的逻辑,

并且已经包含了正确变换其位置的代码逻辑。

2、当调用onDraw()方法时,通过move()方法,方块的位置就会改变

3、通过onDraw()方法绘制到Canvas上;

4、在invalidate()中,强制重绘视图。

其实,就是通过循环调用Rectangle的move()和onDraw()方法实现一个动画效果。

 

Hack.8 附加Ken Burns 特效的幻灯片

要创建Ken Burns特效,需要预设一些动画

案例分析:

将动画随机应用到ImageView,当一个动画显示完毕,即开始显示另一个动画和图片;

主布局使用FrameLayout,把ImageView置于该布局;

代码如下:

略。。。

旧动画API的特点:

1、只支持视图对象的动画效果

2、仅限于移动、旋转、缩放、渐变等效果

3、只改变视图移动时的视觉效果,并未改变其真实位置属性

6006.html

app程序应用开发手机开发无线开发移动端开发