• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > App更新之dialog数字进度条,appdialog进度条

App更新之dialog数字进度条,appdialog进度条

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了android.app.dialog,android dialog进度条,进度条dialog,progressdialog进度条,dialog等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

App更新之dialog数字进度条,appdialog进度条


App更新之dialog数字进度条

 

前言:现在一般的Android软件都是需要不断更新的,当你打开某个app的时候,如果有新的版本,它会提示你有新版本需要更新。当有更新时,会弹出一个提示框,点击下载,则在通知来创建一个数字进度条进行下载,下载成功后才到安装界面。

 

效果:

 

 

开发环境:AndroidStudio2.2.1+gradle-2.14.1

 

 

涉及知识:

 

    1.Handler机制

 

    2.自定义控件+Canvas绘画

 

    3.自定义dialog

 

 

部分代码:

 

public class NumberProgressBar extends View {


    /**
     * 右侧未完成进度条的颜色
     */
    private int paintStartColor = 0xffe5e5e5;

    /**
     * Contxt
     */
    private Context context;

    /**
     * 主线程传过来进程 0 - 100
     */
    private int progress;

    /**
     * 得到自定义视图的宽度
     */
    private int viewWidth;


    private RectF pieOval;

    private RectF pieOvalIn;

    /**
     * 得到自定义视图的Y轴中心点
     */
    private int viewCenterY;

    /**
     * 已完成的画笔
     */
    private Paint paintInit = new Paint();


    /**
     * 未完成进度条画笔的属性
     */
    private Paint paintStart = new Paint();

    /**
     * 大圆的画笔
     */
    private Paint paintEndBig = new Paint();

    /**
     * 小圆的画笔
     */
    private Paint paintSmall = new Paint();


    /**
     * 画中间的百分比文字的画笔
     */
    private Paint paintText = new Paint();

    /**
     * 要画的文字的宽度
     */
    private int textWidth;

    /**
     * 画文字时底部的坐标
     */
    private float textBottomY;

    private int smallR;//小圆的半径
    private int bigR;//大圆半径
    private float radius;
    private int jR;//气泡矩形

    /**
     * 文字总共移动的长度(即从0%到100%文字左侧移动的长度)
     */
//    private int totalMovedLength;
    public NumberProgressBar(Context context, AttributeSet attrs) {
        super(context, attrs);
        this.context = context;
        // 构造器中初始化数据
        smallR = dip2px(context, 4);//小圆半径
        bigR = dip2px(context, 8);//大圆半径
        radius = dip2px(context, 10) / 2;//进度条高度
        jR = dip2px(context, 6);//矩形

        initData();
    }

    /**
     * 初始化数据
     */
    private void initData() {

        // 未完成进度条画笔的属性
        paintStart.setColor(paintStartColor);
        paintStart.setStrokeWidth(dip2px(context, 1));
        paintStart.setDither(true);
        paintStart.setAntiAlias(true);
        paintStart.setStyle(Paint.Style.FILL);

        // 已完成进度条画笔的属性
        paintInit.setColor(context.getResources().getColor(R.color.blue));
        paintInit.setStrokeWidth(dip2px(context, 1));
        paintInit.setAntiAlias(true);
        paintInit.setDither(true);
        paintInit.setStyle(Paint.Style.FILL);


        // 小圆画笔
        paintSmall.setColor(Color.WHITE);
        paintSmall.setAntiAlias(true);
        paintSmall.setStyle(Paint.Style.FILL);

        // 大圆画笔
        paintEndBig.setColor(context.getResources().getColor(R.color.blue));
        paintEndBig.setAntiAlias(true);
        paintEndBig.setStyle(Paint.Style.FILL);


        // 百分比文字画笔的属性
        int paintTextSizePx = sp2px(context, 11);  //设置百分比文字的尺寸
        paintText.setColor(context.getResources().getColor(R.color.blue));
        paintText.setTextSize(paintTextSizePx);
        paintText.setAntiAlias(true);
        paintText.setTypeface(Typeface.DEFAULT_BOLD);

    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    }


    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);

        //得到float型进度
        float progressFloat = progress / 100.0f;
        int viewHeight = getMeasuredHeight();//得到控件的高度

        viewWidth = getMeasuredWidth() - 4 * jR;

        viewCenterY = viewHeight - bigR;

        float currentMovedLen = viewWidth * progressFloat + 2 * jR;

        String str = progress + "%";

        Rect bounds = new Rect();
        paintText.getTextBounds(str, 0, str.length(), bounds);
        textWidth = bounds.width();
        textBottomY = bounds.height();
/**
 * 1:绘画的文本
 * 2.距离x的位移
 * 3.距离Y的位移
 * 4.画笔对象
 */
        canvas.drawText(str, currentMovedLen - textWidth / 2,
                viewCenterY - smallR / 2 - bigR / 2 - 2 * jR + textBottomY / 2,
                paintText);//文字


        //圆角矩形初始的
        canvas.drawRoundRect(new RectF(2 * jR, viewCenterY - radius, currentMovedLen,
                        viewCenterY + radius),
                radius, radius, paintInit);

        //圆角矩形--进行中
        canvas.drawRoundRect(new RectF(currentMovedLen, viewCenterY -



 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • App更新之dialog数字进度条,appdialog进度条

相关文章

  • 2017-05-26在Kotlin编写RecyclerView适配器(KAD 16),kotlinrecyclerview
  • 2017-05-26二维码的扫描和生成--第三方开源--ZXing,--第三方开源--zxing
  • 2017-05-26Android 手机卫士--参照文档编写选择器,android选择器
  • 2017-05-26Android Native crash日志分析,androidcrash
  • 2017-05-26Play 2D games on Pixel running Android Nougat (N7.1.2) with Daydream View VR headset,nougatn7.1.2
  • 2017-11-18android 自定义View圆圈箭头_
  • 2017-05-26ActiveRecord模式整理,activerecord模式
  • 2017-05-26『BUG』Android Studio 64位 始终提示 JVM 启动不了,JDK配置失败,error code,androidjvm
  • 2017-05-26Android,androidstudio
  • 2017-05-26安卓组件------列表选择框,安卓组件------列表

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 关于TCP MSS的内核设置
    • 2.5.2 GridView(网格视图)的基本使用
    • Kotlin的扩展函数:扩展Android框架(KAD 08),kotlinandroid
    • Android的动画类型
    • Android属性系统简介,android属性简介
    • redis配置文件参数解释说明
    • android开发时间和日期的代码实现工具类(一),android工具类
    • 安卓第十四天笔记-内容提供者(ContentProvider),contentprovider
    • 常用代码块,代码
    • Android的Dialog工具

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有