Android移动应用开发之使用异步调用进度条及实现幻灯片切换效果
文章目录
- 异步调用进度条
- 实现幻灯片切换效果
异步调用进度条
核心代码如下:
package scq.scq.asyntaskdemo;import androidx.appcompat.app.AppCompatActivity;import android.app.Dialog;
import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.SystemClock;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;public class MainActivity extends AppCompatActivity {ProgressDialog pd;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button btnDialog = findViewById(R.id.btn);btnDialog.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {showDialog(1);new StringTask().execute();}});}
// 创建AsynkTask子类private class StringTask extends AsyncTask<Void, Integer, Void>{public void printInfo(String info){Log.i("asyncTask", info+":Thread is" + Thread.currentThread().getName());}@Overrideprotected Void doInBackground(Void... voids) {pd.incrementProgressBy(-pd.getProgress());for(int i=0; i<=100; i++){publishProgress(i);printInfo("doInBackground" + i);SystemClock.sleep(50);}return null;}@Overrideprotected void onPostExecute(Void unused) {printInfo("onPostExecute");Toast.makeText(getApplicationContext(), "it is over!", Toast.LENGTH_LONG).show();super.onPostExecute(unused);}@Overrideprotected void onPreExecute() {printInfo("onPreExecute");Toast.makeText(getApplicationContext(), "it is begin!", Toast.LENGTH_LONG).show();super.onPreExecute();}@Overrideprotected void onProgressUpdate(Integer... values) {printInfo("onProgressUpdate");pd.incrementProgressBy(1);if(values[0] >= 100){pd.dismiss();}super.onProgressUpdate(values);}
}@Overrideprotected Dialog onCreateDialog(int id) {pd = new ProgressDialog(this);pd.setMax(100);pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);pd.setTitle("完成进度");pd.setMessage("请稍等...");pd.setCancelable(false);return pd;}
}
示例完整代码
实现幻灯片切换效果
实现思路还是比较简单,就是创建一个线程,然后永真循环,然后根据计数余数确定改呈现什么样的内容。
核心代码如下:
首先线程类:
package scq.scq.handlertest;public class MyThread extends Thread{MainActivity activity;int what = 0;public MyThread(MainActivity activity){this.activity = activity;}@Overridepublic void run() {while (true){this.activity.handler.sendEmptyMessage((what++)%5);try{Thread.sleep(300);}catch (Exception e){e.printStackTrace();}}}
}
因为每次停留300ms然后进行切换。
然后MainActivity中使用Handler根据余数切换内容:
package scq.scq.handlertest;import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.widget.ImageView;
import android.widget.TextView;public class MainActivity extends AppCompatActivity {TextView tvContent;ImageView ivPic;Handler handler = new Handler(){@Overridepublic void handleMessage(@NonNull Message msg) {switch (msg.what) {case 0:tvContent.setText(R.string.andy);ivPic.setImageResource(R.drawable.andy);break;case 1:tvContent.setText(R.string.bill);ivPic.setImageResource(R.drawable.bill);break;case 2:tvContent.setText(R.string.edgar);ivPic.setImageResource(R.drawable.edgar);break;case 3:tvContent.setText(R.string.torvalds);ivPic.setImageResource(R.drawable.torvalds);break;case 4:tvContent.setText(R.string.turing);ivPic.setImageResource(R.drawable.turing);break;}super.handleMessage(msg);}};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);this.ivPic = findViewById(R.id.ivPic);this.tvContent = findViewById(R.id.tvContent);MyThread myThread = new MyThread(this);myThread.start();}}
示例完整代码
Android移动应用开发之使用异步调用进度条及实现幻灯片切换效果相关推荐
- php 异步进度条,PHP学习:PHP+Ajax异步带进度条上传文件实例
<PHP学习:PHP+Ajax异步带进度条上传文件实例>要点: 本文介绍了PHP学习:PHP+Ajax异步带进度条上传文件实例,希望对您有用.如果有疑问,可以联系我们. PHP应用前端引入 ...
- android异步任务更新进度条,Android的AsyncTask异步任务浅析
Android的AsyncTask异步任务浅析 实现原理 内部封装了2个线程池+1个Handler(InternalHandler),1个线程池SerialExecutor任务排队,一个线程池THRE ...
- android 自定义view 加载图片,Android自定义View基础开发之图片加载进度条
学会了Paint,Canvas的基本用法之后,我们就可以动手开始实践了,先写个简单的图片加载进度条看看. 按照惯例,先看效果图,再决定要不要往下看: 既然看到这里了,应该是想了解这个图片加载进度条了, ...
- android下zip压缩文件加密解密的完美解决方案,Android之zip文件加密解压及进度条的实现...
zip文件的解压可以使用java的zip库,但是没有实现对加密文件的解压功能,这里可以使用zip4j来实现.具体可以参看该文<Android下zip压缩文件加密解密的完美解决方案 http:// ...
- android 环形时间显示_Android_Android实现自定义圆形进度条,今天无意中发现一个圆形进度 - phpStudy...
Android实现自定义圆形进度条 今天无意中发现一个圆形进度,想想自己实现一个,如下图: 基本思路是这样的: 1.首先绘制一个实心圆 2.绘制一个白色实心的正方形,遮住实心圆 3.在圆的中心动态绘制 ...
- Android中用图片自定义一个进度条(实现蒙板效果)
问题概述 对于进度条我相信大家不陌生,这里我就不再多说什么了.因为这个不是重点.我们要说的是如何去自定义一个不一样的进度条.这里用到两张图片(背景和前景),其实是三张(背景.前景和蒙图).当我们的蒙图 ...
- Android魔术——手把手教你实现水晶球波浪进度条
目录 1.效果展示 2.波浪函数 3.波浪填充 1)原理分析 2)代码实现 4.实现波浪运动效果 1)实现横向运动 2)实现波浪消退效果 5.总结 源码: 1.效果展示 本篇文章讲解如何实现一个水晶球 ...
- 微信小程序|开发实战篇之七-steps进度条组件
开发实战篇之七 前言 0.知识点补充 0.1 $emit()函数 0.2 wxs 0.3 ⚡组件间关系 1.steps进度条组件 1.1.step进度条单元的骨架文件wxml 1.2.step进度条单 ...
- Android 自带描边颜色渐变炫酷进度条,面试必知必会
3. 画第三个圆角矩形作为进度条的最外层(进度层)盖在背景层之上 4. 描边层和背景层颜色可用纯色,进度层为了炫酷可用渐变色 这是实现该自带描边颜色渐变进度条的原理,也是在PS中实现该效果的步骤,同样 ...
最新文章
- Objective-C中的内存管理
- 以太坊、Hyperledger Fabric和Corda,哪个更好?
- django按钮点击后想刷新当前页面的view写法
- 小强系列之大话移动测试
- matlab 函数 命名参数,如何处理MATLAB中的函数参数的名称/值对
- terminated 线程_深入并发,线程相关知识全解析
- 使用springboot + druid + mybatisplus完成多数据源配置
- oracle时间差转换成小时分钟,oracle 时间差 具体到天:小时:分
- 变压器的分类_变压器的作用
- 搭建自己的病毒扫描系统clamav-原版教程
- Python 遗传算法 Genetic Algorithm
- 小米球外网映射本地tomcat
- java转pdf_Java转PDF(基础)
- 关于EmmyLua插件创建Lua脚本Require失败的问题
- Exception:No serializer found for class and no properties discovered to create BeanSerializer
- 11月 | Gauss松鼠会活动回顾总结
- 吸引人的软文标题究竟有哪些
- 数据结构-哈夫曼树详解(类C语言版)
- 输出边长为n的正六边形(c语言)
- Bailian-1的个数
热门文章
- “雷曼事件”雷到我了?
- 国家统计局正研究大数据 为挽救统计信任危机
- 20223405 李硕 2022-2023-2 《Python程序设计》实验二报告
- dbeaver快速找表
- reboot重启linux能清理内存,Linux关机和重启shutdown、reboot命令
- 生产者消费者问题C++实现
- super 的用法及意义
- java 二进制加法运算_java实现二进制的加法
- html页面添加跨域,HTML5实现跨域问题
- 8051单片机Proteus仿真与开发实例-LCD1602显示屏仿真(4线接法)