android利用定时器实现应用开头加载图片或者静态广告的显示
2013-01-07 15:37
831 查看
下载了韩寒的电子杂志《一个》,它有一个广告,就是每次进入程序的时候都会有一个静态的图片(如果没猜错的话应该是ImageView),然后显示几秒钟过后才进入真正的程序,其他的一些APP中也有一些是刚进程序的时候,先显示一张静态的等待图片,其实那个是等待加载的图片,其实功能也和这个类似,只不过那个是加载完成后再跳转,我这个为了实现定时就是显示固定的实现,那么这个简单的有用的小功能是如何实现的呢?
首先这个功能要用到两个知识点一个是Handler 一个是定时器工具TimerTask。备注:一般情况下TImerTask我们都是配合Timer来使用利用Timer来控制我们需要的时间。例如5秒后执行run()中的内容。
我们的需求实现起来其实很简单,那就是在一个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
好了这样就实现了进入程序的时候首先是显示图片,然后显示5秒后才是去掉这张全屏图的内容,顺带把布局也放上来吧,这个ImageView需要放到最上面一层
main.xml:
首先这个功能要用到两个知识点一个是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>
相关文章推荐
- 利用定时器实现加载app时开头静态图片
- Android编程实现压缩图片并加载显示的方法
- 在Android的应用中实现网络图片异步加载的方法
- 【转】Android循环滚动广告条的完美实现,封装方便,平滑过渡,从网络加载图片,点击广告进入对应网址
- Android循环滚动广告条的完美实现,封装方便,平滑过渡,从网络加载图片,点击广告进入对应网址
- Android利用glide加载圆形图片,头像的实现
- Android开发之图片处理专题(二):利用AsyncTask和回调接口实现图片的异步加载和压缩
- Android:ListView异步加载图片(实现网络下载、存储本地、缓存内存、压缩显示)
- Android循环滚动广告条的完美实现,封装方便,平滑过渡,从网络加载图片,点击广告进入对应网址
- Android 通过开源框架实现加载网络图片并下载到SD卡通知系统相册显示,(并实现分享图片功能)
- Android开发之图片处理专题(三):利用ThreadPoolExcutor线程池实现多图片的异步加载
- Android利用Gallery和ImageSwitcher实现在线相册图片预览功能(异步加载图片)
- android,微信,人人,<android 无标题栏 >微博开机加载一幅图片,再跳转到主应用的实现
- android 利用ImagevView加载本地图片并实现等比缩放
- Android下拉刷新库,利用viewdraghelper实现,集成了下拉刷新,底部加载更多,数据初始加载显示loading等功能
- Android实现加载广告图片和倒计时的开屏布局
- Android应用开发之实现图片的拖拽显示
- Android相册,利用LruCache、DiskLruCache实现图片的加载,避免出现OOM
- Android加载大图片,实现简单的截屏功能与保存截屏显示在图库
- android,微信,人人,<android 无标题栏 >微博开机加载一幅图片,再跳转到主应用的实现