您的位置:首页 > 移动开发 > Android开发

Android欢迎页倒计时和Handler、Thread、Runnable说明

2018-02-27 10:59 393 查看
一、设计一个首页倒计时功能,记录handler,Thread,Runnable的区别和特点
(1)handler:主要是更新主线程的UI,handler可以分发Message对象和Runnable对象到主线程中, 每个Handler实例,都会绑定到创建他的线程中(一般是位于主线程),它有两个作用:

    1: 、安排消息或Runnable 在某个主线程中某个地方执行,

    2、安排一个动作在不同的线程中执行,可以写一个定时功能:handler.sendEmptyMessageDelayed(times, 1000);延时一秒执行的动作。
(2)Thread:是在java.lang包中定义的。一个类只要继承了Thread类同时覆写了本类中的run()方法就可以实现多线程操作了,可以开启线程执行耗时操作
new Thread(runnableData).start();
/*将下载的人员检查表数据保存到本地*/
Runnable runnableData=new Runnable() {
@Override
public void run() {
try {
//执行完耗时操作后更新UI界面
handlerSync.sendEmptyMessage(0);
}catch (Exception e){
Helper.saveFileLog("RoleLoginActivity_runnableData__"+e.toString());
}
}
};
Handler handlerSync = new Handler() {
public void handleMessage(Message msg) {
super.handleMessage(msg);
//UI操作
             userVer();
}
};
(3)Runnable:是实现Runnable接口,当启动线程时,可以在Runnable接口中进行操作。
(4)实现开始界面3秒广告功能,可跳过并显示还剩几秒sendEmptyMessageDelayed(0,1000);//延时一秒执行


(5)java代码如下:
public class WelcomeActivity extends AppCompatActivity implements Animation.AnimationListener {
private int times=3;
private TextView adtextview;

Handler handler=new Handler(){//处理者
@Override
public void handleMessage(Message msg) {
TextView textView= findViewById(R.id.adtextview);//初始化控件
switch (msg.what){//按时间自动逐秒递减
case 3:
textView.setText("跳过3");
break;
case 2:
textView.setText("跳过2");
break;
case 1:
textView.setText("跳过1");
break;
}
times--;
handler.sendEmptyMessageDelayed(times, 1000);
super.handleMessage(msg);//发送消息指令
}
};

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_welcome);
setAnimation();
handler.sendEmptyMessageDelayed(times, 1000);
adtextview=findViewById(R.id.adtextview);
adtextview.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//当动画结束的时候跳转
try{
handler.removeMessages(times);
startActivity(new Intent(WelcomeActivity.this,MainBuildingActivity.class));
finish();
}catch (Exception e){
startActivity(new Intent(WelcomeActivity.this,MainBuildingActivity.class));
finish();
e.printStackTrace();
}
}
});

}

private void setAnimation() {//渐变动画
ImageView imageView= (ImageView) findViewById(R.id.adimageview);
AlphaAnimation a=new AlphaAnimation(0.8f,1);
a.setDuration(times*1000);//时间
a.setAnimationListener(this);//配置监听器
imageView.startAnimation(a);//启动动画

}

@Override
public void onAnimationStart(Animation animation) {

}

@Override
public void onAnimationEnd(Animation animation) {
//当动画结束的时候跳转
startActivity(new Intent(WelcomeActivity.this,MainBuildingActivity.class));
finish();
}

@Override
public void onAnimationRepeat(Animation animation) {

}
}(6)xml代码:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/activity_ad"
android:layout_width="match_parent"
android:orientation="horizontal"
android:layout_height="match_parent">

<ImageView android:id="@+id/adimageview"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:scaleType="fitXY"
android:src="@drawable/xuan_chaun">
</ImageView>

<TextView android:id="@+id/adtextview"
android:layout_alignParentRight="true"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_marginTop="20dp"
android:text="跳过广告"
android:padding="@dimen/text_size_10"
android:background="@drawable/rectangle_fill"
android:alpha="0.3"
android:textColor="@color/white">
</TextView>
</RelativeLayout>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  欢迎页