开启新线程实现电子广告牌

1、布局文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/linearLayout1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="center_horizontal"
    android:orientation="vertical" >
    <ImageView
        android:id="@+id/imageView1"
        android:paddingTop="10dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    <TextView
        android:id="@+id/textView1"
        android:padding="10dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />
</LinearLayout>

2、MainActivity

public class MainActivity extends Activity implements Runnable {
	private ImageView iv; // 声明一个显示广告图片的ImageView对象
	private Handler handler; // 声明一个Handler对象
	private int[] path = new int[] { R.drawable.img01, R.drawable.img02,
			R.drawable.img03, R.drawable.img04, R.drawable.img05,
			R.drawable.img06 }; // 保存广告图片的数组
	private String[] title = new String[] { "编程词典系列产品", "高效开发", "快乐分享", "用户人群",
			"快速学习", "全方位查询" }; // 保存显示标题的数组

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		iv = (ImageView) findViewById(R.id.imageView1); // 获取显示广告图片的ImageView
		Thread t = new Thread(this); // 创建新线程
		t.start(); // 开启线程
		// 实例化一个Handler对象
		handler = new Handler() {
			@Override
			public void handleMessage(Message msg) {
				// 更新UI
				TextView tv = (TextView) findViewById(R.id.textView1); // 获取TextView组件
				if (msg.what == 0x101) {
					tv.setText(msg.getData().getString("title")); // 设置标题
					iv.setImageResource(path[msg.arg1]); // 设置要显示的图片
				}
				super.handleMessage(msg);
			}

		};

	}
	@Override
	public void run() {
		int index = 0;
		while (!Thread.currentThread().isInterrupted()) {
			index = new Random().nextInt(path.length); // 产生一个随机数
			Message m = handler.obtainMessage(); // 获取一个Message
			m.arg1 = index; // 保存要显示广告图片的索引值
			Bundle bundle = new Bundle(); // 获取Bundle对象
			m.what = 0x101; // 设置消息标识
			bundle.putString("title", title[index]); // 保存标题
			m.setData(bundle); // 将Bundle对象保存到Message中
			handler.sendMessage(m); // 发送消息

			try {
				Thread.sleep(2000); // 线程休眠2秒钟
			} catch (InterruptedException e) {
				e.printStackTrace(); // 输出异常信息
			}

		}
	}
}



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值