TimePicker控制元件、幀動畫、補間動畫
阿新 • • 發佈:2022-04-29
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