专栏首页水击三千TimePicker控件、帧动画、补间动画

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

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     

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Android学习Tabhost、gallery、listview、imageswitcher

    Tabhost控件又称分页控件,在很多的开发语言中都存在。它可以拥有多个标签页,每个标签页可以拥有不同的内容。android中,一个标签页可以放 一个view或...

    水击三千
  • Android学习之sqlite与listview

    在android系统中使用的是sqlite数据库,前面的简易登录系统已经讲述了数据库的应用。本例的重点是实现数据库与listview的绑定。demo的数据是将个...

    水击三千
  • Android简单登录系统

    很长时间没有写博客了,最近一直在写android for gis方面的项目。不过这篇博客就不写gis方面的了,今天刚刚做的一个简单的android登录系统。数据...

    水击三千
  • Android 动画总结(3) - 补间动画

    Tween Animation 包括、ScaleAnimation、TranslateAnimation、RotateAnimation 以及这四种动画的组合 ...

    七适散人
  • Android 天气APP(二十八)地图搜索定位

      在我写完地图天气之后就有一种如释重负的感觉,但是这种感觉没有保持多久,就被新的需求功能所取代。因为我会让我身边的朋友帮忙测试使用,并提一些建议,我来决定是否...

    晨曦_LLW
  • Android 自定义样式Shape

    Shape常用于自定义背景样式,通常Android开发中一些背景的样式会由UI给出,但是图片毕竟会占软件内存,所以在实现同样效果的情况下,可以用原生的Shape...

    晨曦_LLW
  • Android 修改EditView输入框的光标颜色

    都知道Android原生的控件颜色比较辣眼睛,所以实际开发中都会有改动,所以我们今天来改一下输入框光标的默认颜色。 在drawble下面创建一个名为curso...

    晨曦_LLW
  • Android 自定义加载动画Dialog弹窗

    这是上面用到的 以shape_bg_5_blue.xml为例,其他的三个无非就是里面的颜色不一样而已

    晨曦_LLW
  • Android 带伸缩动画的布局

    OK,下面主要看实现步骤,你随便新建一个Activity就可以了,然后把需要的的一些样式准备好,

    晨曦_LLW
  • Android开发第六讲EditText 编辑框

    EditText 继承自 TextView 所以它的属性我们可以使用. TextView不支持文字的编辑.而EditText支持文字的编辑.

    IBinary

扫码关注云+社区

领取腾讯云代金券