Andriod使用多线程实现轮播图片

作者:笑对空 时间:2023-07-27 15:47:31 

效果图:

Andriod使用多线程实现轮播图片

布局文件里包括了一个ImageView和两个Button控件,而在MainActivity了初始化控件。


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.example.administrator.chinesezodiacapplication.MainActivity">
<ImageView
 android:id="@+id/imgNet"
 android:layout_width="match_parent"
 android:layout_height="0dp"
 android:layout_weight="1"
 android:src="@drawable/zi"
 />
<LinearLayout
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:orientation="horizontal">
 <Button
  android:id="@+id/btnStart"
  android:layout_width="0dp"
  android:layout_weight="1"
  android:layout_height="wrap_content"
  android:text="开始播放"
  android:textSize="16dp"
  />
 <Button
  android:id="@+id/btnPause"
  android:layout_width="0dp"
  android:layout_weight="1"
  android:layout_height="wrap_content"
  android:text="暂停播放"
  android:textSize="16dp"
  />
</LinearLayout>
</LinearLayout>

public class MainActivity extends AppCompatActivity {
private Button btnStart;
private Button btnPause;
private ImageView imageView;
private Thread thread;
private Handler handler;
private int MSG_IMG_CHANGE = 1001;
private boolean isPause = true;
private String url1 ="https://qqpublic.qpic.cn/qq_public/0/0-2366261503-87FFA35D0792FEC1048083429D12687E/900";
private String url2 ="https://qqpublic.qpic.cn/qq_public/0/0-3097962509-F7CFDDBDE07DAFAC9568FE9ABFE7153F/900";
private String url3 ="https://qqpublic.qpic.cn/qq_public/0/0-2851260680-186F3C52C3DDCB6BBAEE05AEF83D89DA/900?tp=webp";
private String url4 ="https://qqpublic.qpic.cn/qq_public/0/0-2738303735-B0FD9ABA222886FCFA325D1AD4DB6156/900?tp=webp";
private String url5 ="https://qqpublic.qpic.cn/qq_public/0/0-2776144047-CD42FE909EDD232753D51C54329D7BA6/900?tp=webp";
private String url6 ="https://qqpublic.qpic.cn/qq_public/0/0-2628537209-CFBA5C4C446CC492775303478F5825A2/900?tp=webp";
private String url7 ="https://qqpublic.qpic.cn/qq_public/0/0-3079871717-6B0B52BDE99EB32E481F049C077A3E6D/900?tp=webp";
private String url8 ="https://qqpublic.qpic.cn/qq_public/0/0-2906573180-BB6E88099D4DB7C27354591D8620A6BB/900?tp=webp";
private String url9 ="https://qqpublic.qpic.cn/qq_public/0/0-2365621724-14715472ACEA17237F988207A7EA862F/900?tp=webp";
private String url10 ="https://qqpublic.qpic.cn/qq_public/0/0-2362096419-A1371DB9F39E23B07061E1E4D5E4B995/900?tp=webp";
private String url11 ="https://qqpublic.qpic.cn/qq_public/0/0-2473426908-4C9010D824EF29E08BF20C6E32D3502A/900?tp=webp";
private String url12="https://qqpublic.qpic.cn/qq_public/0/0-3067218096-F5A001F06E9D0C9B91E15DB4DFF5FB7B/900?tp=webp";
private String[] imgUrls ={url1,url2,url3,url4,url5,url6,url7,url8,url9,url10,url11,url12};
private int index = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 initViews();
 initThread();
 initHandler();
}
private void initHandler() {
 handler = new Handler(new Handler.Callback() {
  @Override
  public boolean handleMessage(Message message) {
   if(message.what ==MSG_IMG_CHANGE){
    Glide.with(MainActivity.this).load(imgUrls[message.arg1]).into(imageView);
    return true;
   }
   return false;
  }
 });
}
private void initThread() {
 new Thread(new Runnable(){
  @Override
  public void run() {
   while (true){
    if(!isPause){
     index =(index+1)%imgUrls.length;
     Message msg = Message.obtain();
     msg.what = MSG_IMG_CHANGE;
     msg.arg1 =index;
     handler.sendMessage(msg);
    }
    try {
     Thread.sleep(2000);
    } catch (InterruptedException e) {
     e.printStackTrace();
    }
   }
  }
 }).start();
}
private void initViews() {
 initImageView();
 initButton();
}
private void initButton() {
 btnStart = (Button) findViewById(R.id.btnStart);
 btnStart.setOnClickListener(new View.OnClickListener() {
  @Override
  public void onClick(View view) {
   isPause = false;
  }
 });
 btnPause = (Button) findViewById(R.id.btnPause);
 btnPause.setOnClickListener(new View.OnClickListener() {
  @Override
  public void onClick(View view) {
   isPause = true;
  }
 });
}
private void initImageView() {
 imageView = (ImageView) findViewById(R.id.imgNet);
}
}

来源:http://blog.csdn.net/zero_uou/article/details/78397861

标签:android,多线程,轮播图
0
投稿

猜你喜欢

  • 全面解析Java支持的数据类型及Java的常量和变量类型

    2022-03-25 16:54:10
  • 详解Java实现简单SPI流程

    2022-12-11 16:02:23
  • Android13 加强Intent filters 的安全性

    2022-06-17 03:15:55
  • Java中GUI工具包AWT和Swing用法介绍

    2022-02-06 09:02:35
  • c++回调之利用函数指针示例

    2022-07-26 06:59:32
  • Android 内存优化知识点梳理总结

    2021-05-24 02:54:19
  • java语言基础之标识符和命名规则详解

    2023-04-21 16:50:18
  • 简单阐述一下Java集合的概要

    2023-08-23 19:49:45
  • java中URLEncoder.encode与URLDecoder.decode处理url特殊参数的方法

    2022-05-22 05:32:00
  • 深入java事件注册的应用分析

    2022-07-12 01:37:55
  • Android 正则表达式验证手机号、姓名(包含少数民族)、身份证号

    2022-05-26 02:17:11
  • Java 如何安全的发布对象

    2022-08-09 05:38:52
  • springboot如何引入外部yml配置文件

    2023-11-07 07:35:38
  • 数字金额大写转换器制作代码分享(人民币大写转换)

    2021-05-25 11:51:25
  • Android自定义View实现圆弧进度效果

    2021-08-20 02:26:21
  • Android UI效果之绘图篇(一)

    2022-03-24 08:30:51
  • Java下载文件时文件名乱码问题解决办法

    2023-08-23 17:37:03
  • 一文带你搞懂Java定时器Timer的使用

    2022-09-08 01:18:16
  • 简单实现Android绘图板

    2021-09-11 06:36:23
  • Android中获取IMEI码的方法

    2023-04-08 09:10:58
  • asp之家 软件编程 m.aspxhome.com