最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

android自定義view實(shí)現(xiàn)數(shù)字進(jìn)度條

 更新時(shí)間:2018年12月31日 10:23:03   作者:zhoushenxian  
這篇文章主要為大家詳細(xì)介紹了android自定義view實(shí)現(xiàn)數(shù)字進(jìn)度條,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

之前看到過(guò)一個(gè)數(shù)字進(jìn)度條,一直想寫,今天就把這個(gè)實(shí)現(xiàn)下,想起來(lái)也是很簡(jiǎn)單的,先看下實(shí)現(xiàn)的效果:

思路:

繪制2根線 繪制進(jìn)度條的文字,不斷的改變起點(diǎn)和終點(diǎn),然后沒(méi)多少時(shí)間去更新UI就ok,在這就不畫圖了,看代碼就看的明白,不要想的很復(fù)雜!

package com.tuya;
import android.animation.ValueAnimator;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.util.AttributeSet;
import android.view.View;
/**
 * Created by admin on 2016/12/19.
 */
public class DownLoadProgressView extends View {
 private Paint paint;//繪制進(jìn)度條畫筆
 private Paint textPaint;//繪制文字畫筆
 private Paint dottePaint;//繪制灰色線畫筆
 private int width;
 private int height;
 private int padding =5;
 private int value = 0;
 public DownLoadProgressView(Context context) {
  this(context,null);
 }
 public DownLoadProgressView(Context context, AttributeSet attrs) {
  this(context, attrs,0);
 }
 public DownLoadProgressView(Context context, AttributeSet attrs, int defStyleAttr) {
  super(context, attrs, defStyleAttr);
  initPaint();
 }
 @Override
 protected void onSizeChanged(int w, int h, int oldw, int oldh) {
  super.onSizeChanged(w, h, oldw, oldh);
  width = w;
  height = h;
 }
 /**
  * 初始化畫筆
  */
 private void initPaint() {
  paint = new Paint();
  paint.setAntiAlias(true);
  paint.setStrokeWidth(2);
  paint.setStyle(Paint.Style.FILL);
  paint.setColor(Color.BLUE);

  textPaint = new Paint();
  textPaint.setAntiAlias(true);
  textPaint.setStrokeWidth(3);
  textPaint.setStyle(Paint.Style.FILL);
  textPaint.setColor(Color.BLUE);
  textPaint.setTextSize(12);

  dottePaint = new Paint();
  dottePaint.setAntiAlias(true);
  dottePaint.setStrokeWidth(2);
  dottePaint.setStyle(Paint.Style.FILL);
  dottePaint.setColor(Color.parseColor("#e5e5e5"));
 }
 @Override
 protected void onDraw(Canvas canvas) {
  super.onDraw(canvas);
  String str = value+"%";
  float strWidth = textPaint.measureText(value+"%")+padding;//繪制文字的寬度 +padding是為了防止在進(jìn)度條加載完畢的時(shí)候文字繪制出現(xiàn)被切掉情況
  Rect rect = new Rect();
  textPaint.getTextBounds(str,0,str.length(),rect);
  canvas.drawLine(0,height/2,value*((width-strWidth)/100),height/2,paint);//繪制進(jìn)度
  canvas.drawText(value+"%",value*((width-strWidth)/100)+padding,(height-rect.height())/2+2*padding,textPaint);//繪制進(jìn)度文字 這個(gè)高度+2*padding是因?yàn)閐rawText是根據(jù)基線計(jì)算的,要準(zhǔn)確的話要去求基線
  canvas.drawLine(value*((width-strWidth)/100)+strWidth+padding,height/2,width,height/2,dottePaint);//繪制灰色進(jìn)度表示剩余多少
  postDelayed(new Runnable() {
   @Override
   public void run() {
    if(value<100){
     value++;
     postInvalidate();
    }
   }
  },100);
 }
}

布局文件:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:orientation="vertical"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:background="#7EC0EE">
 <com.tuya.DownLoadProgressView
  android:id="@+id/dpv"
  android:layout_width="fill_parent"
  android:layout_height="30dp"
  android:layout_marginLeft="10dp"
  android:layout_marginRight="10dp"
  android:layout_marginTop="60dp"
  ></com.tuya.DownLoadProgressView>
</RelativeLayout>

github:NumberProgress

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • android獲取當(dāng)前運(yùn)行Activity名字的方法

    android獲取當(dāng)前運(yùn)行Activity名字的方法

    這篇文章主要介紹了android獲取當(dāng)前運(yùn)行Activity名字的方法,對(duì)比分析了兩種實(shí)現(xiàn)方法供大家選擇,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-01-01
  • 淺談Android開發(fā)Webview的Loading使用效果

    淺談Android開發(fā)Webview的Loading使用效果

    這篇文章主要為大家介紹了淺談Android開發(fā)Webview的Loading使用效果詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • Android使用kotlin實(shí)現(xiàn)多行文本上下滾動(dòng)播放

    Android使用kotlin實(shí)現(xiàn)多行文本上下滾動(dòng)播放

    這篇文章主要為大家詳細(xì)介紹了Android使用kotlin實(shí)現(xiàn)多行文本的上下滾動(dòng)播放,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • 詳解如何在Flutter中集成華為認(rèn)證服務(wù)

    詳解如何在Flutter中集成華為認(rèn)證服務(wù)

    這篇文章主要介紹了詳解如何在Flutter中集成華為認(rèn)證服務(wù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • Android高性能日志寫入方案的實(shí)現(xiàn)

    Android高性能日志寫入方案的實(shí)現(xiàn)

    這篇文章主要給大家介紹了關(guān)于Android高性能日志寫入方案的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-01-01
  • Android getSystemService用法實(shí)例總結(jié)

    Android getSystemService用法實(shí)例總結(jié)

    這篇文章主要介紹了Android getSystemService用法,結(jié)合實(shí)例形式總結(jié)分析了getSystemService獲取系統(tǒng)Service的相關(guān)使用方法與注意事項(xiàng),需要的朋友可以參考下
    2016-01-01
  • Android 中 Swipe、Scroll 和 Fling 的區(qū)別解析

    Android 中 Swipe、Scroll 和 Fling 的區(qū)別解

    Swipe、Scroll和Fling是Android中常見的觸摸手勢(shì),它們?cè)谟脩趔w驗(yàn)和技術(shù)實(shí)現(xiàn)上各有特點(diǎn),Swipe用于快速切換,Scroll用于連續(xù)滾動(dòng),Fling用于實(shí)現(xiàn)慣性滾動(dòng),開發(fā)者可以根據(jù)需求選擇合適的手勢(shì)類型,并結(jié)合GestureDetector等工具實(shí)現(xiàn)各種交互效果,感興趣的朋友跟隨小編一起看看吧
    2024-12-12
  • Flutter 插件url_launcher簡(jiǎn)介

    Flutter 插件url_launcher簡(jiǎn)介

    最近項(xiàng)目需求是打開一個(gè)連接跳轉(zhuǎn)到安卓或蘋果默認(rèn)的瀏覽器。雖然開始一個(gè)簡(jiǎn)單的要求,其中的一個(gè)細(xì)節(jié)就是執(zhí)行打開網(wǎng)頁(yè)這一操作后,不能看上去像在應(yīng)用內(nèi)部打開,看上去要在應(yīng)用外部打開,今天小編給大家介紹Flutter 插件url_launcher的相關(guān)知識(shí),感興趣的朋友一起看看吧
    2020-04-04
  • Android?MPAndroidChart繪制原理

    Android?MPAndroidChart繪制原理

    這篇文章主要介紹了Android?MPAndroidChart繪制原理,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-08-08
  • Android開發(fā)中軟鍵盤的顯示和隱藏

    Android開發(fā)中軟鍵盤的顯示和隱藏

    本篇內(nèi)容通過(guò)代碼示例給大家詳細(xì)講解了關(guān)于Android開發(fā)中軟鍵盤的顯示和隱藏的代碼實(shí)現(xiàn)過(guò)程以及容易忽略的問(wèn)題,來(lái)學(xué)習(xí)下吧。
    2017-12-12

最新評(píng)論

清苑县| 苗栗市| 潞城市| 竹北市| 宜兴市| 蛟河市| 藁城市| 江口县| 长宁县| 竹北市| 泰州市| 延寿县| 岳阳市| 若尔盖县| 罗源县| 尼勒克县| 长岛县| 清水河县| 凤翔县| 临海市| 台南县| 中超| 沂源县| 南宁市| 手机| 敦化市| 石渠县| 施秉县| 孝义市| 赤城县| 息烽县| 长子县| 博湖县| 崇礼县| 广饶县| 黔东| 弥勒县| 万全县| 仁寿县| 颍上县| 武强县|