TimePicker控件、帧动画、补间动画

1.TimePicker控件

最近感觉每个开发平台的控件基本都差不多,在Android中控件的事件和.net控件直接写事件有一定的区别,net事件可以直接界面进行事件的绑定哈。不过在Silverlight中,如果用MVVM设计模式的话,也可以自己为控件写Command命令的,可以取代控件的事件。

TimePicker控件,也就是事件控件,可以用设置时间的。在页面拖入控件后,默认是显示系统时间的。

     <TimePicker
android:id="@+id/timePicker1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView1"
android:layout_alignTop="@+id/textView1" />

TimePicker控件

该控件可以通过OnTimeChangedListener监听时间的改变,可以获得时和分,并不能精确到秒。

         public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
// TODO 自动生成的方法存根
funTime(hourOfDay,minute);
}
private void funTime(int hourOfDay, int minute) {
// TODO 自动生成的方法存根
EditText myEdit=(EditText)findViewById(R.id.editText1);
myEdit.setText("当前时间为:"+hourOfDay+"时"+minute+"分"); }

TimePicker事件监听

2.帧动画

帧动画,也就是将静态图像连续播放的,播放的间隔可以自己设置。

首先需要在anim文件下,添加一个animation-list类型的xml文档。

 <animation-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:drawable="@drawable/bulb01" android:duration="500" android:visible="true"></item>
<item android:drawable="@drawable/bulb02" android:duration="500" android:visible="true"></item>
<item android:drawable="@drawable/bulb03" android:duration="500" android:visible="true"></item>
<item android:drawable="@drawable/bulb04" android:duration="500" android:visible="true"></item>
</animation-list>

animation-list

这里定义了4个对象,并为每个对象指定了drawable和duration。

然后可以通过button按钮控制动画的播放与停止

   protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myTime=(TimePicker)findViewById(R.id.timePicker1);
ImageView iv=(ImageView)findViewById(R.id.imageView1);
Button start=(Button)findViewById(R.id.button1);
Button end=(Button)findViewById(R.id.button2);
iv.setBackgroundResource(R.drawable.animationlist);
Button mybutton=(Button)findViewById(R.id.button3); mybutton.setOnClickListener(new OnClickListener() { @Override
public void onClick(View v) {
ImageView imgView=(ImageView)findViewById(R.id.imageView2);
// TODO 自动生成的方法存根
//动画实例
Animation ani=AnimationUtils.loadAnimation(MainActivity.this, R.anim.twiani);
//开始动画
imgView.startAnimation(ani);
}
});
//定义帧动画
final AnimationDrawable ad=(AnimationDrawable)iv.getBackground();
//开始按钮监听
start.setOnClickListener(new OnClickListener() { @Override
public void onClick(View v) {
// TODO 自动生成的方法存根
//动画开始
ad.start();
}
});
//结束按钮监听
end.setOnClickListener(new OnClickListener() { @Override
public void onClick(View v) {
// TODO 自动生成的方法存根
//动画停止
ad.stop();
}
}); }

帧动画 播放图片

3.补间动画

补间动画和帧动画有很大的区别,补间动画是对一张或者两张图片进行的变换,这些变换包括移动、大小、旋转等,只需要第一帧和最后一帧的图片。

(1)在anim文件中建立一个set类型的xml文档。

 <?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 透明度-->
<alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="6000" >
</alpha>
<!-- 尺寸 --> <scale android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromXScale="0.0"
android:toXScale="1.0"
android:fromYScale="0.0"
android:toYScale="1.0"
android:pivotX="50%"
android:pivotY="50%"
android:fillAfter="false"
android:duration="5000"></scale>
<!-- 位置-->
<translate android:fromXDelta="30"
android:toXDelta="0"
android:fromYDelta="30"
android:toYDelta="0"
android:duration="10000"></translate>
<!-- 旋转 -->
<rotate android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromDegrees="0"
android:toDegrees="360"
android:pivotX="50%"
android:pivotY="50%"
android:duration="10000"/>
</set>

Set类型

这里通过<alpha>、<scale>、<translate>、<rotate>分别对图像的透明度、缩放、移动和旋转进行控制。

(2)在后台进行动画的播放

     protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); Button mybutton=(Button)findViewById(R.id.button3); mybutton.setOnClickListener(new OnClickListener() { @Override
public void onClick(View v) {
ImageView imgView=(ImageView)findViewById(R.id.imageView2);
// TODO 自动生成的方法存根
//动画实例
Animation ani=AnimationUtils.loadAnimation(MainActivity.this, R.anim.twiani);
//开始动画
imgView.startAnimation(ani);
}
}); }

补间动画

上一篇:android完整资讯App、Kotlin新闻应用MVP + RxJava + Retrofit + Dagger2、优雅区间选择器等源码


下一篇:学习RxJava+Retrofit+OkHttp+MVP的网络请求使用