Andriod使用多线程实现轮播图片
程序员文章站
2023-11-16 16:28:22
效果图:
布局文件里包括了一个imageview和两个button控件,而在mainactivity了初始化控件。
效果图:
布局文件里包括了一个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); } }