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

android利用定时器实现应用开头加载图片或者静态广告的显示

2013-01-07 15:37 831 查看
下载了韩寒的电子杂志《一个》,它有一个广告,就是每次进入程序的时候都会有一个静态的图片(如果没猜错的话应该是ImageView),然后显示几秒钟过后才进入真正的程序,其他的一些APP中也有一些是刚进程序的时候,先显示一张静态的等待图片,其实那个是等待加载的图片,其实功能也和这个类似,只不过那个是加载完成后再跳转,我这个为了实现定时就是显示固定的实现,那么这个简单的有用的小功能是如何实现的呢?

首先这个功能要用到两个知识点一个是Handler 一个是定时器工具TimerTask。备注:一般情况下TImerTask我们都是配合Timer来使用利用Timer来控制我们需要的时间。例如5秒后执行run()中的内容。

TimerTask task = new TimerTask() {
@Override
public void run() {
// to do what you want
}
};

Timer timer = new Timer();
timer.schedule(task, 5000);


我们的需求实现起来其实很简单,那就是在一个activity里面有一个ImageView开始的时候让它显示5秒,过后隐藏它就能达到我们的效果了,这个时候如果用上述的方法的话,则程序运行会报错。

android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.


这主要是Android的相关View和控件不是线程安全的,所以使用Handler可以很好的处理主线程UI的更新操作,那这里既然引入了Handler那么我们就可以利用Handler来控制时间了,所以就不用Timer了最后的代码如下:

TimerTaskActivity.java



package com.challen;

import java.util.TimerTask;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.ImageView;

public class TimerTaskTestActivity extends Activity {
ImageView image1;
Handler handler;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//去掉title标题栏
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
//		//设置activity全屏
//		getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
//				WindowManager.LayoutParams.FLAG_FULLSCREEN);
//设置显示的XML,需要注意的是去掉状态栏和全屏的操作要放在setContentView之前,不然会报错。
setContentView(R.layout.main);
// 显示的全屏图片
image1 = (ImageView) findViewById(R.id.Image1);
handler = new Handler();
TimerTask task = new TimerTask() {
public void run() {
// 隐藏掉全屏图片
image1.setVisibility(View.GONE);
}
};
// 5秒后执行TimerTask任务
handler.postDelayed(task, 5000);
}
}


好了这样就实现了进入程序的时候首先是显示图片,然后显示5秒后才是去掉这张全屏图的内容,顺带把布局也放上来吧,这个ImageView需要放到最上面一层

main.xml:



<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<ImageView
android:id="@+id/Image1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:src="@drawable/bg"
android:visibility="visible"
/>
<TextView
android:id="@+id/text"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="图片消失后的内容" />

</LinearLayout>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐