Andriod使用多线程实现轮播图片
作者:笑对空 发布时间:2023-07-27 15:47:31
标签:android,多线程,轮播图
效果图:
布局文件里包括了一个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


猜你喜欢
- ViewPager介绍ViewPager的功能就是可以使视图滑动,就像Lanucher左右滑动那样。ViewPager用于实现多页面的切换效
- 前言:C# 10 对于 Lambda 做了很多的优化,我们可以在 C# 中更加方便地使用委托和 Lambda 了,下面就来看一些示例1、Na
- 场景:PageHelper 的默认分页方案是 select count(0) from (你的sql) table_count由于查询数据比
- 实践过程pdf转excelpublic static long pdfToExcel(String inFile, String outFi
- classProgram{ staticvoid Main() {&
- Java 8中引入了CompletableFuture类,它是一种方便的异步编程工具,可以处理各种异步操作,如网络请求、文件IO和数据库操作
- 开发android的时候,尽管手机已经root但是DDMS中还是没有data/data路径怎么办?可以用cmd命令提示符为逐个文件夹设置权限
- 现在Web开发越来越倾向于前后端分离,前端使用AngularJS,React,Vue等,部署在NodeJS上,后面采用SpringBoot发
- 一,块作用域首先在深入学习控制结构之前,需要先了解块(block)的概念。块:即复合语句,是指由一对大括号括起来的若干条简单的 Java 语
- java LRU(Least Recently Used )详解LRU是Least Recently Used 的缩写,翻译过来就是“最近最
- 本问介绍了Collections工具类两种sort()方法,具体如下:一、Collections工具类两种sort()方法格式一: publ
- 首先,看一下效果 可能各位在别处看到过类似的东西,我在微信的文章末尾看到有个玩意,感觉有意思,就用代码实现一下。这篇文章主要把握
- 简介说明 项目我们经常会有前后端时间转换的场景,比如:创建时间、更新时间等。一般情况下
- 效果图接下来就是一波贴代码的过程自定义Dialogpublic class SinaSendView extends Dialog { &n
- JDK中的三个基本注解a、@Override:检查子类确实是覆盖了父类的方法。b、@Deprecated:说明已经过时了。c、@Suppre
- 本文实例讲述了Java实现将png格式图片转换成jpg格式图片的方法。分享给大家供大家参考,具体如下:import java.awt.Col
- 1. 需求和思路最近要用java制作一个数据集,每一行是一个样本,格式是csv。用了一下java类的相关概念,把csv文件里的每一行,即每一
- 1.图集导航1.1 为什么对包名的命名要有所规范呢!使用规范的命名有益于程序的开发和后期阅读通俗的说:就是自己写的代码别人也能看的懂,代码结
- 前言最近VS2019正式版发布了,装下来顺便试用了一下C#8.0,最大的看点应该就是可空引用类型了。不过C#8.0仍然处于Beta的状态,而
- 堆排序是一种树形选择排序方法,它的特点是:在排序的过程中,将array[0,...,n-1]看成是一颗完全二叉树的顺序存储结构,利用完全二叉