android利用定時器實現應用開頭加載圖片或者靜態廣告的顯示

下載了韓寒的電子雜誌《一個》,它有一個廣告,就是每次進入程序的時候都會有一個靜態的圖片(如果沒猜錯的話應該是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>


發佈了40 篇原創文章 · 獲贊 117 · 訪問量 33萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章