Android开启新线程实现电子广告牌项目
作者:光仔December 发布时间:2023-02-10 20:47:10
标签:Android,广告牌
利用之前学过的多线程处理技术,我们做一个开启新线程实现电子广告牌的项目
界面布局文件,加入ImageView图片控件,用于显示一个图片,一个TextView控件,用于显示广告说明语。
res/layout/main.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/linearLayout1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<ImageView android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:src="@drawable/hint"/>
<TextView android:id="@+id/TextView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"/>
</LinearLayout>
在res/drawable下加入几张广告图片(ad1.jpg、ad2.jpg、ad3.jpg、ad4.jpg、ad5.jpg)
在主界面中,产生随机数不断的变换在ImageView空间上的图片资源文件,来实现一个类似于幻灯片的电子广告牌
MainActivity:
package com.example.test;
import java.util.Random;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.widget.ImageView;
import android.widget.TextView;
public class MainActivity extends Activity implements Runnable{
private ImageView imageView;
private TextView textView;
private Handler handler;
private int[] path=new int[]{R.drawable.ad1,R.drawable.ad2,
R.drawable.ad3,R.drawable.ad4,R.drawable.ad5};
private String[] title=new String[]{"美国进口葡萄酒","乐享移动4G时代",
"江山御景楼盘开售","大学康城新区现房","五粮液精品"};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
imageView=(ImageView)findViewById(R.id.imageView1);
textView=(TextView)findViewById(R.id.TextView1);
Thread t=new Thread(this);//创建新线程
t.start();//开启线程
//实例化一个Handler对象
handler=new Handler(){
@Override
public void handleMessage(Message msg) {
//更新UI
if(msg.what==0x101){
textView.setText(msg.getData().getString("title"));//设置标题
imageView.setImageResource(path[msg.arg1]);//设置要显示的图片
}
super.handleMessage(msg);
}
};
}
/*
* 判断当前线程是否被中断,如果没有被中断,
* 则首先产生一个随机数,然后获取一个Message,并将要显示
* 的广告图片的索引值和对应标题保存到该Message中,再发生
* 消息,最后让线程休眠2秒钟
* */
@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) {
// TODO Auto-generated catch block
e.printStackTrace();//输出异常信息
}
}
}
}
显示效果如图
来源:http://blog.csdn.net/acmman/article/details/46375661


猜你喜欢
- MD5加密简介哈希算法又称散列算法,是将任何数据转换成固定长度的算法的统称。 从本质上讲,MD5也是一种哈希算法,其输出是生成12
- 在使用jQuery时候,我们经常会看到或者使用到方法链,例如:$("#p1").css("color"
- 使用multipart/form-data方式提交数据与普通的post方式有一定区别。multipart/form-data的请求头必须包含
- 一、项目简述功能包括: 前台实现:用户浏览菜单、菜品分类筛选、查看菜单详 情、添加购物车、购物车结算、会员券、个人订单查询等 等。 后台实现
- PullToRefresh是一套实现非常好的下拉刷新库,它支持:1.ListView2.ExpandableListView3.GridVi
- 1.user实体package com.demo.dto;public class User { private Integer
- 实践过程效果代码public partial class Form1 : Form{ public Form1()
- 本文我想跟大家分享的是如何将 C# 中的一些图像对象保存到 Oracle 中的 BLOB 字段中,这里我们并不想从零开始,而是使用我自己的框
- 首先的效果图搜索到结果(这里我只是模拟数据,真正和服务器走得时候,返回来的数据都应该包含关键字的)模拟的没有搜索结果的界面具体实现在这插一句
- Java中的动态和静态编译实例详解首先,我们来说说动态和静态编译的问题。 Q: java和javascript有什么
- 本文实例为大家分享了C语言实现生日贺卡的具体代码,供大家参考,具体内容如下//********** 编译环境VC6.0 **********
- ActiveMQ是什么ActiveMQ是消息队列技术,为解决高并发问题而生ActiveMQ生产者消费者模型(生产者和消费者可以跨平台、跨系统
- 前言上一篇分析了事务注解的解析过程,本质上是将事务封装为切面加入到AOP的执行链中,因此会调用到MethodInceptor的实现类的inv
- 本文实例讲述了Java实现的日期处理类。分享给大家供大家参考,具体如下:开发中常常要使用日期,先小结如下,以备后用。import java.
- 泛型概述我们都知道集合中是可以存放任意对象的,只要把对象存储集合后,那么这时他们都会被提升成Object类型。当我们在取出每一个对象,并且进
- 介绍INI文件格式由节、键、值组成。节[section]参数(键=值)name=value1.创建一个ini文件在Debug目录下创建一个i
- 像ipconfig /all 这样的CMD命令想必大家都知道,但是很多童鞋可能不知道怎么写这样的控制台带参数的程序,其实很简单,我们先看建立
- 在 Java 中,LinkedList 和 ArrayList 的性能是不同的,具体取决于你所需要的操作。对于频繁的插入和删除操作,Link
- c语言颜色代码初学c的小伙伴可能已经对那个黑底白字的框有些厌倦了,不妨加点颜色,增加加可读性。/*颜色函数SetConsoleTextAtt
- 1、概述传统的Android开发架构一般是MVC模式,Model:业务逻辑和实体模型View:对应于布局文件Controllor:对应于Ac