热门标签 | HotTags
当前位置:  开发笔记 > Android > 正文

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

这篇文章主要为大家详细介绍了Android开启新线程实现电子广告牌项目,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

利用之前学过的多线程处理技术,我们做一个开启新线程实现电子广告牌的项目

界面布局文件,加入ImageView图片控件,用于显示一个图片,一个TextView控件,用于显示广告说明语。

res/layout/main.xml:

<&#63;xml version="1.0" encoding="utf-8"&#63;> 
 
   
   
 

在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();//输出异常信息 
      } 
    } 
  } 
  
} 

 显示效果如图

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


推荐阅读
  • ListView简单使用
    先上效果:主要实现了Listview的绑定和点击事件。项目资源结构如下:先创建一个动物类,用来装载数据:Animal类如下:packagecom.example.simplelis ... [详细]
  • ssm框架整合及工程分层1.先创建一个新的project1.1配置pom.xml ... [详细]
  • Python自动化测试入门:Selenium环境搭建
    本文详细介绍如何在Python环境中安装和配置Selenium,包括开发工具PyCharm的安装、Python环境的设置以及Selenium包的安装方法。此外,还提供了编写和运行第一个自动化测试脚本的步骤。 ... [详细]
  • 本文详细介绍如何在 iOS 7 环境下申请苹果开发者账号,涵盖从访问开发者网站到最终激活账号的完整流程。包括选择个人或企业账号类型、付款方式及注意事项等。 ... [详细]
  • 本文详细介绍了如何在Android 4.4及以上版本中配置WebView以实现内容的自动高度调整和屏幕适配,确保中文显示正常,并提供代码示例。 ... [详细]
  • 解决MacOS上Android Studio Gradle版本不匹配问题
    在MacOS系统中,升级Android Studio后可能会遇到Gradle版本不兼容的问题。当网络下载更新受阻时,可以使用本地已安装的Gradle版本来解决问题。本文将详细介绍如何配置本地Gradle环境以确保开发工作的顺利进行。 ... [详细]
  • 本文介绍了如何通过Java代码计算一个整数的位数,并展示了多个基础编程示例,包括求和、平均分计算、条件判断等。 ... [详细]
  • 本题要求在一组数中反复取出两个数相加,并将结果放回数组中,最终求出最小的总加法代价。这是一个经典的哈夫曼编码问题,利用贪心算法可以有效地解决。 ... [详细]
  • 主调|大侠_重温C++ ... [详细]
  • 本篇文章介绍如何将两个分别表示整数的链表进行相加,并生成一个新的链表。每个链表节点包含0到9的数值,如9-3-7和6-3相加得到1-0-0-0。通过反向处理链表、逐位相加并处理进位,最终再将结果链表反向,即可完成计算。 ... [详细]
  • CentOS 系统管理基础
    本文介绍了如何在 CentOS 中查询系统版本、内核版本、位数以及磁盘分区的相关知识。通过这些命令,用户可以快速了解系统的配置和磁盘结构。 ... [详细]
  • 本文详细探讨了 PHP 中 method_exists() 和 is_callable() 函数的区别,帮助开发者更好地理解和使用这两个函数。文章不仅解释了它们的功能差异,还提供了代码示例和应用场景的分析。 ... [详细]
  • 本文探讨了C++编程中理解代码执行期间复杂度的挑战,特别是编译器在程序运行时生成额外指令以确保对象构造、内存管理、类型转换及临时对象创建的安全性。 ... [详细]
  • 本文详细介绍了如何解决 Microsoft SQL Server 中用户 'sa' 登录失败的问题。错误代码为 18470,提示该帐户已被禁用。我们将通过 Windows 身份验证方式登录,并启用 'sa' 帐户以恢复其访问权限。 ... [详细]
  • 程序员如何优雅应对35岁职业转型?这里有深度解析
    本文探讨了程序员在职业生涯中如何通过不断学习和技能提升,优雅地应对35岁左右的职业转型挑战。我们将深入分析当前热门技术趋势,并提供实用的学习路径。 ... [详细]
author-avatar
k78283381
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有