1.TimePicker控件
最近感觉每个开发平台的控件基本都差不多,在Android中控件的事件和.net控件直接写事件有一定的区别,net事件可以直接界面进行事件的绑定哈。不过在Silverlight中,如果用MVVM设计模式的话,也可以自己为控件写Command命令的,可以取代控件的事件。
TimePicker控件,也就是事件控件,可以用设置时间的。在页面拖入控件后,默认是显示系统时间的。
1 <TimePicker 2 android:id="@+id/timePicker1" 3 android:layout_width="wrap_content" 4 android:layout_height="wrap_content" 5 android:layout_alignLeft="@+id/textView1" 6 android:layout_alignTop="@+id/textView1" />
该控件可以通过OnTimeChangedListener监听时间的改变,可以获得时和分,并不能精确到秒。
1 public void onTimeChanged(TimePicker view, int hourOfDay, int minute) { 2 // TODO 自动生成的方法存根 3 funTime(hourOfDay,minute); 4 } 5 private void funTime(int hourOfDay, int minute) { 6 // TODO 自动生成的方法存根 7 EditText myEdit=(EditText)findViewById(R.id.editText1); 8 myEdit.setText("当前时间为:"+hourOfDay+"时"+minute+"分"); 9 10 }
2.帧动画
帧动画,也就是将静态图像连续播放的,播放的间隔可以自己设置。
首先需要在anim文件下,添加一个animation-list类型的xml文档。
1 <animation-list xmlns:android="http://schemas.android.com/apk/res/android" > 2 <item android:drawable="@drawable/bulb01" android:duration="500" android:visible="true"></item> 3 <item android:drawable="@drawable/bulb02" android:duration="500" android:visible="true"></item> 4 <item android:drawable="@drawable/bulb03" android:duration="500" android:visible="true"></item> 5 <item android:drawable="@drawable/bulb04" android:duration="500" android:visible="true"></item> 6 </animation-list>
这里定义了4个对象,并为每个对象指定了drawable和duration。
然后可以通过button按钮控制动画的播放与停止
1 protected void onCreate(Bundle savedInstanceState) { 2 super.onCreate(savedInstanceState); 3 setContentView(R.layout.activity_main); 4 myTime=(TimePicker)findViewById(R.id.timePicker1); 5 ImageView iv=(ImageView)findViewById(R.id.imageView1); 6 Button start=(Button)findViewById(R.id.button1); 7 Button end=(Button)findViewById(R.id.button2); 8 iv.setBackgroundResource(R.drawable.animationlist); 9 Button mybutton=(Button)findViewById(R.id.button3); 10 11 mybutton.setOnClickListener(new OnClickListener() { 12 13 @Override 14 public void onClick(View v) { 15 ImageView imgView=(ImageView)findViewById(R.id.imageView2); 16 // TODO 自动生成的方法存根 17 //动画实例 18 Animation ani=AnimationUtils.loadAnimation(MainActivity.this, R.anim.twiani); 19 //开始动画 20 imgView.startAnimation(ani); 21 } 22 }); 23 //定义帧动画 24 final AnimationDrawable ad=(AnimationDrawable)iv.getBackground(); 25 //开始按钮监听 26 start.setOnClickListener(new OnClickListener() { 27 28 @Override 29 public void onClick(View v) { 30 // TODO 自动生成的方法存根 31 //动画开始 32 ad.start(); 33 } 34 }); 35 //结束按钮监听 36 end.setOnClickListener(new OnClickListener() { 37 38 @Override 39 public void onClick(View v) { 40 // TODO 自动生成的方法存根 41 //动画停止 42 ad.stop(); 43 } 44 }); 45 46 }
3.补间动画
补间动画和帧动画有很大的区别,补间动画是对一张或者两张图片进行的变换,这些变换包括移动、大小、旋转等,只需要第一帧和最后一帧的图片。
(1)在anim文件中建立一个set类型的xml文档。
1 <?xml version="1.0" encoding="utf-8"?> 2 <set xmlns:android="http://schemas.android.com/apk/res/android"> 3 <!-- 透明度--> 4 <alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="6000" > 5 </alpha> 6 <!-- 尺寸 --> 7 8 <scale android:interpolator="@android:anim/accelerate_decelerate_interpolator" 9 android:fromXScale="0.0" 10 android:toXScale="1.0" 11 android:fromYScale="0.0" 12 android:toYScale="1.0" 13 android:pivotX="50%" 14 android:pivotY="50%" 15 android:fillAfter="false" 16 android:duration="5000"></scale> 17 <!-- 位置--> 18 <translate android:fromXDelta="30" 19 android:toXDelta="0" 20 android:fromYDelta="30" 21 android:toYDelta="0" 22 android:duration="10000"></translate> 23 <!-- 旋转 --> 24 <rotate android:interpolator="@android:anim/accelerate_decelerate_interpolator" 25 android:fromDegrees="0" 26 android:toDegrees="360" 27 android:pivotX="50%" 28 android:pivotY="50%" 29 android:duration="10000"/> 30 </set>
这里通过<alpha>、<scale>、<translate>、<rotate>分别对图像的透明度、缩放、移动和旋转进行控制。
(2)在后台进行动画的播放
1 protected void onCreate(Bundle savedInstanceState) { 2 super.onCreate(savedInstanceState); 3 setContentView(R.layout.activity_main); 4 5 Button mybutton=(Button)findViewById(R.id.button3); 6 7 mybutton.setOnClickListener(new OnClickListener() { 8 9 @Override 10 public void onClick(View v) { 11 ImageView imgView=(ImageView)findViewById(R.id.imageView2); 12 // TODO 自动生成的方法存根 13 //动画实例 14 Animation ani=AnimationUtils.loadAnimation(MainActivity.this, R.anim.twiani); 15 //开始动画 16 imgView.startAnimation(ani); 17 } 18 }); 19 20 21 22 } 23 24