Android 下载进度条, 自定义加载进度条,loading动画

1、自定义loadingline动画

/*** 作者:created by meixi* 邮箱:13164716840@163.com* 日期:2018/9/6 10*/public class LoadingLine extends View {private Paint paint;private Paint backPaint;private Paint textPaint;private boolean init = false;private ValueAnimator valueAnimator;private float param = 0;private int length = 0;public LoadingLine(Context context) {super(context);init();}public LoadingLine(Context context, AttributeSet attrs) {super(context, attrs);init();}private void init() {paint = new Paint();paint.setColor(Color.BLUE);paint.setStrokeWidth(25);backPaint = new Paint();backPaint.setColor(Color.RED);backPaint.setStrokeWidth(25);textPaint = new Paint();textPaint.setColor(Color.WHITE);textPaint.setTextSize(10);}@Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);if (!init) {
//            start();init = true;}int width = getWidth();int height = getHeight();canvas.drawLine(0, height / 2, width, height / 2, backPaint);canvas.drawLine(0, height / 2, length * width / 100, height / 2, paint);if (length<100){canvas.drawText(length + "", length * width / 100 - 22, height / 2 + 6, textPaint);}else {canvas.drawText(length + "", length * width / 100 - 42, height / 2 + 6, textPaint);}
//        if (valueAnimator.isRunning()) {
//            param = (float) valueAnimator.getAnimatedValue();
//            setLength((int) param);
//        }}/*** 也可在外部手动控制进度条,自行关闭valueAnimator** @param param*/public void setLength(int param) {this.length = param;invalidate();}private void start() {if (valueAnimator == null) {valueAnimator = ValueAnimator.ofFloat(0, 100);valueAnimator.setInterpolator(new LinearInterpolator());valueAnimator.setDuration(6000);valueAnimator.start();} else {valueAnimator.start();}postDelayed(new Runnable() {@Overridepublic void run() {
//                start();invalidate();}}, valueAnimator.getDuration());invalidate();}}

2、activity调用

布局文件

<com.administrator.tests.LoadingLineandroid:id="@+id/myloadline"android:layout_width="match_parent"android:layout_height="5dp" />

初始化

    private boolean running;private LoadingLine loadingLine;int i = 0;static final int REFRESH_COMPLETE = 0X1112;private Handler mHandler = new Handler() {public void handleMessage(android.os.Message msg) {switch (msg.what) {case REFRESH_COMPLETE:if (i==100){running=false;}Log.i("lgq","...===="+i);loadingLine.setLength(i++);//主要加载进度方法
//todo...break;}}};

线程加载进度

 loadingLine =(LoadingLine)findViewById(R.id.myloadline);new Thread() {@Overridepublic void run() {super.run();running = true;while (running) {mHandler.sendEmptyMessageDelayed(REFRESH_COMPLETE, 0);try {sleep(100);} catch (InterruptedException e) {e.printStackTrace();}}}
}.start();

添加圆弧框

<RelativeLayoutandroid:id="@+id/loadre"android:layout_width="280pt"android:layout_height="90pt"android:layout_marginTop="50pt"android:visibility="gone"android:layout_alignParentRight="true"><cn.dlc.bangbang.electricbicycle.util.views.LoadingLineandroid:id="@+id/myloadline2"android:layout_width="match_parent"android:layout_marginLeft="8pt"android:layout_marginRight="18pt"android:layout_centerVertical="true"android:layout_height="wrap_content"></cn.dlc.bangbang.electricbicycle.util.views.LoadingLine><LinearLayoutandroid:layout_width="match_parent"android:layout_height="45pt"android:layout_centerVertical="true"android:layout_marginRight="10pt"android:background="@drawable/load_topbg"></LinearLayout><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="下载中"android:textColor="@color/colorPrimary"android:textSize="@dimen/size_12pt"android:layout_alignParentBottom="true"android:layout_marginRight="10pt"android:layout_centerHorizontal="true"></TextView></RelativeLayout>
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"><solid android:color="@color/transparent" /><corners android:radius="30dp" /><strokeandroid:width="8pt"android:color="@color/color_DDD" /><paddingandroid:bottom="0dp"android:left="0dp"android:right="0dp"android:top="0dp" /></shape>

demo连接: Android开发进度条demo-Android文档类资源-CSDN下载

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/415246.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

eslint airbnb 不允许尾随逗号

我使用的是airbnb规则进行代码eslint。 会出现保存后&#xff0c;数组或者对象最后一个元素尾随逗号。 此时需要在.eslintrc.js中加入下面代码即可 "comma-dangle": ["error", {"arrays": "never","objects": "never…

我的物联网项目(十二) 单体应用架构不行?

单体应用架构在创业型项目里面是非常合适的&#xff0c;毕竟它主要的担当还是在验证创业模式以及迅速功能实现&#xff0c;所以它从开发到部署&#xff0c;在少量开发人员的基础上能非常减少成本&#xff0c;主要是门槛低&#xff0c;开发效率也非常高。到目前为此&#xff0c;…

Android listview优化以及listview混合itemview

listView (ListView) findViewById(R.id.listview); mAdapter new VideoListAdapter(this); listView.setAdapter(mAdapter); 主要adapter public class VideoListAdapter extends BaseAdapter {int[] viewtype {0, 0, 0, 1, 0, 0, 0, 1, 0, 0};//1 jcvd, 0 textView。主要…

vue项目中assets与static的区别

在使用vue脚手架生成的目录中&#xff0c;会有一个src/assets还有一个static。 两者都可以用来放一些静态文件。那有什么区别呢&#xff1f; static中的文件不会被webpack打包&#xff0c;文件被复制到dist/static assets中的文件会经过 webpack 打包&#xff0c;重新编译。…

oracle 用户管理

一、创建用户概述&#xff1a;在oracle中要创建一个新的用户使用create user语句&#xff0c;一般是具有dba(数据库管理员)的权限才能使用。create user 用户名 identified by 密码; 注意&#xff1a;oracle有个毛病&#xff0c;密码必须以字母开头&#xff0c;如果以数字开头&…

Android 获取当前的时间。年月日,时分秒,星期几

SimpleDateFormat alldate new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//获取日期时间 SimpleDateFormat year new SimpleDateFormat("yyyy");//获取年份SimpleDateFormat month new SimpleDateFormat("MM");//获取月份SimpleDateFormat m…

mac通过homebrew安装opensdk11

1、安装cask brew tap homebrew/cask-versions 2、安装adoptopenjdk/openjdk brew tap adoptopenjdk/openjdk 3、查看一下java、jdk版本 brew search java brew search jdk 4、安装adoptopenjdk11 brew cask info adoptopenjdk11 brew cask install adoptopenjdk11…

缺失值侦测与处理

缺失值的侦测的方法&#xff1a; 1、mice包中的md.pattern()函数可以生成一个以矩阵或数据框形式展示缺失值模式的表格 这个矩阵呢&#xff0c;表示像第一行缺失0个的模式有13行&#xff0c;像第二行缺失1个的模式有1行&#xff0c;如此类推 所以呢&#xff0c;一共就有0*131*1…

工作172:自己工作开始封装的一个小组件

其实很简单 <!--封装部门选择的插件 需要的组件 子组件--> <template><el-select :value"value" placeholder"请选择所属部门" change"handleChange"><el-optionv-for"department in departments":key"de…

高德地图 amap 设置鼠标样式

我的需求&#xff0c;要在高德地图里面做一个地图选点的功能。这个功能很简单&#xff0c;但是高德地图的默认鼠标样式是一只小手&#xff0c;不适合做选点用。 高德地图中有4中样式如下图 对应名称如下&#xff1a; pointer&#xff0c;default&#xff0c;move&#xff0c…

Android 设置定时刷新页面数据,最小自动刷新时间

设置初始时间 SimpleDateFormat df new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式 String thistime df.format(new Date());SharedPreferences sharedPreferences getSharedPreferences("industryInfo", Context.MODE_PRIVATE); //私有…

eslint 设置全局 变量

我在做高德地图开发的时候&#xff0c;喜欢将map作为全局变量&#xff0c;但是eslint会显示报红。 所以需要在.eslintrc.js中加上如下配置&#xff1a; "globals": {"map": true}

Android 自定义软键盘实现

module链接&#xff1a;https://download.csdn.net/download/meixi_android/10652565 compile project(:edlibrary) , :edlibrary <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/…

微信小程序自定义组件生命周期

created 组件实例化&#xff0c;但节点树还未导入&#xff0c;因此这时不能用setData attached 节点树完成&#xff0c;可以用setData渲染节点&#xff0c;但无法操作节点 ready (不是onReady) 组件布局完成&#xff0c;这时可以获取节点信息&#xff0c;也可以操作节点 mov…

改善代码可测性的若干技巧

概述 软件的工程性体现在质量与效率。单测是构成软件质量的第一道防线&#xff0c;而单测覆盖率是软件质量的重要指标之一。 编写容易测试的代码&#xff0c;可带来更佳的单测覆盖率&#xff0c;间接提升开发效率。 为什么程序员不大写单测呢&#xff1f; 主要有如下原因&#…

fragment 调用activity方法,如dispatchKeyEvent,dispatchTouchEvent

以dispatchKeyEvent为例 1、创建回调接口FragmentKeyeventListener /*** 作者&#xff1a;created by meixi* 邮箱&#xff1a;13164716840163.com* 日期&#xff1a;2018/9/10 15*/ public interface FragmentKeyeventListener {boolean onFragmentKeyEvent(KeyEvent event)…