日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

Android仿字節(jié)顏色自定義進度條

瀏覽:102日期:2023-02-14 17:11:47

本文實例為大家分享了Android仿字節(jié)顏色自定義進度條的具體代碼,供大家參考,具體內(nèi)容如下

效果展示

Android仿字節(jié)顏色自定義進度條

代碼實現(xiàn)

第一步:編寫自定義屬性

res/values/attrs.xml

<?xml version='1.0' encoding='utf-8'?><resources> <declare-styleable name='MyLoadingView'><attr name='loading_color_one' format='color'/><attr name='loading_color_two' format='color'/><attr name='loading_color_three' format='color'/><attr name='loading_color_four' format='color'/><attr name='loading_color_five' format='color'/> </declare-styleable></resources>

第二步:編寫自定義java類

package com.wust.jingdutiao; import android.animation.ValueAnimator;import android.content.Context;import android.content.res.TypedArray;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.RectF;import android.graphics.drawable.ColorDrawable;import android.graphics.drawable.Drawable;import android.util.AttributeSet;import android.util.TypedValue;import android.view.View;import android.view.animation.Animation; import androidx.annotation.Nullable; /** * ClassName: MyLodingView <br/> * Description: <br/> * date: 2021/7/21 15:59<br/> * * @author yiqi<br /> * @QQ 1820762465 * @微信 yiqiideallife * @技術(shù)交流QQ群 928023749 */public class MyLoadingView extends View { private int rect_color_one; private int rect_color_two; private int rect_color_three; private int rect_color_four; private int rect_color_five; private Paint rect_one_paint; private Paint rect_two_paint; private Paint rect_three_paint; private Paint rect_four_paint; private Paint rect_five_paint; private int mWidth; private int mHeight; private float[] mHeightRate = {1/16.0f,1/10.0f,1/8.0f}; private int HORIZONTAL_OFFSET = 5; private int bg_default_color; private ValueAnimator va; public MyLoadingView(Context context) {super(context); } public MyLoadingView(Context context, @Nullable AttributeSet attrs) {super(context, attrs);initAttrs(context, attrs);initPaint();initAnima(); } public MyLoadingView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);initAttrs(context, attrs);initPaint();initAnima(); } //設(shè)置 屬性動畫 private void initAnima() {va = ValueAnimator.ofInt(0, 4);va.setDuration(3000);va.setRepeatCount(ValueAnimator.INFINITE);va.setRepeatMode(ValueAnimator.RESTART);va.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator animation) {int value = (int) animation.getAnimatedValue();setRectColorByNum(value); }});postDelayed(new Runnable() { @Override public void run() {va.start(); }},500); } private void initAttrs(Context context, AttributeSet attrs) {//獲取用戶傳來的五種顏色TypedArray ty = context.obtainStyledAttributes(attrs, R.styleable.MyLoadingView); rect_color_one = ty.getColor(R.styleable.MyLoadingView_loading_color_one, Color.parseColor('#325AB4'));rect_color_two = ty.getColor(R.styleable.MyLoadingView_loading_color_two, Color.parseColor('#3C8CFF'));rect_color_three = ty.getColor(R.styleable.MyLoadingView_loading_color_three, Color.parseColor('#888888'));rect_color_four = ty.getColor(R.styleable.MyLoadingView_loading_color_four, Color.parseColor('#00C8D2'));rect_color_five = ty.getColor(R.styleable.MyLoadingView_loading_color_five, Color.parseColor('#78E6DC')); //獲取背景色try { ColorDrawable bg = (ColorDrawable) getBackground(); bg_default_color = bg.getColor();}catch (Exception e){ bg_default_color = Color.WHITE;} ty.recycle(); } //初始化畫筆 private void initPaint() {rect_one_paint = getPaintByColor(rect_color_one);rect_two_paint = getPaintByColor(rect_color_two);rect_three_paint = getPaintByColor(rect_color_three);rect_four_paint = getPaintByColor(rect_color_four);rect_five_paint = getPaintByColor(rect_color_five); } private Paint getPaintByColor(int Color) {Paint paint = new Paint();paint.setAntiAlias(true);paint.setDither(true);paint.setColor(Color);return paint; } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {mWidth = MeasureSpec.getSize(widthMeasureSpec);mHeight = MeasureSpec.getSize(heightMeasureSpec);//讓其為正方形,并且寬高不能小于40mWidth = mHeight = Math.max(Math.min(mWidth, mHeight),dp2px(100));setMeasuredDimension(mWidth, mHeight); } private int dp2px(int value) {return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,value,getResources().getDisplayMetrics()); } @Override protected void onDraw(Canvas canvas) {super.onDraw(canvas);//繪制矩形drawRect(canvas); } private void drawRect(Canvas canvas) {int centerX = mWidth/2;int centerY = mHeight/2;RectF rectOne = new RectF(centerX-HORIZONTAL_OFFSET,centerY-mWidth*mHeightRate[0],centerX+HORIZONTAL_OFFSET,centerY+mWidth*mHeightRate[0]);canvas.drawRoundRect(rectOne,5,5,rect_one_paint); RectF rectTwo = new RectF(centerX+HORIZONTAL_OFFSET*3,centerY-mWidth*mHeightRate[1],centerX+HORIZONTAL_OFFSET*5,centerY+mWidth*mHeightRate[1]);canvas.drawRoundRect(rectTwo,5,5,rect_two_paint); RectF rectThree = new RectF(centerX-HORIZONTAL_OFFSET*3,centerY-mWidth*mHeightRate[1],centerX-HORIZONTAL_OFFSET*5,centerY+mWidth*mHeightRate[1]);canvas.drawRoundRect(rectThree,5,5,rect_three_paint); RectF rectFour = new RectF(centerX+HORIZONTAL_OFFSET*7,centerY-mWidth*mHeightRate[2],centerX+HORIZONTAL_OFFSET*9,centerY+mWidth*mHeightRate[2]);canvas.drawRoundRect(rectFour,5,5,rect_four_paint); RectF rectFive = new RectF(centerX-HORIZONTAL_OFFSET*7,centerY-mWidth*mHeightRate[2],centerX-HORIZONTAL_OFFSET*9,centerY+mWidth*mHeightRate[2]);canvas.drawRoundRect(rectFive,5,5,rect_five_paint); } //根據(jù)屬性動畫的 變化的值 給畫筆換不同的顏色 private void setRectColorByNum(int num){if (num == 0){ rect_one_paint.setColor(rect_color_one); rect_two_paint.setColor(bg_default_color); rect_three_paint.setColor(bg_default_color); rect_four_paint.setColor(bg_default_color); rect_five_paint.setColor(bg_default_color);}else if (num == 1){ rect_one_paint.setColor(bg_default_color); rect_two_paint.setColor(rect_color_two); rect_three_paint.setColor(rect_color_three); rect_four_paint.setColor(bg_default_color); rect_five_paint.setColor(bg_default_color);}else if (num == 2){ rect_one_paint.setColor(bg_default_color); rect_two_paint.setColor(bg_default_color); rect_three_paint.setColor(bg_default_color); rect_four_paint.setColor(rect_color_four); rect_five_paint.setColor(rect_color_five);}else if (num == 3){ rect_one_paint.setColor(rect_color_one); rect_two_paint.setColor(rect_color_two); rect_three_paint.setColor(rect_color_three); rect_four_paint.setColor(rect_color_four); rect_five_paint.setColor(rect_color_five);}invalidate(); }}

第三步:使用

<?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='.MainActivity' android:gravity='center'> <com.wust.jingdutiao.MyLoadingViewandroid:layout_width='100dp'android:layout_height='100dp'/> </LinearLayout>

到此為止,效果便可以完美實現(xiàn)了。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標簽: Android
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
色综合视频一区二区三区日韩 | 亚洲图片久久| 亚洲爱爱视频| 大香伊人久久精品一区二区| 精品亚洲免a| 福利在线免费视频| 播放一区二区| 欧美日韩第一| 麻豆精品网站| 婷婷综合福利| 国产精品乱战久久久| 国产中文欧美日韩在线| 久久久蜜桃一区二区人| 亚洲美洲欧洲综合国产一区 | 日韩中文字幕区一区有砖一区 | 精品视频一区二区三区在线观看| 久久婷婷国产| 日韩欧美另类一区二区| 黄色日韩在线| 日韩成人一级| 欧美在线看片| 国产在线观看91一区二区三区| 日韩欧美三级| 国产亚洲亚洲| 欧美在线日韩| 鲁大师精品99久久久| 欧美精品高清| 视频一区二区中文字幕| 国产欧美日韩影院| 国产欧美一区二区三区精品酒店| 亚洲高清成人| 日韩欧美中文字幕一区二区三区| 欧美韩一区二区| 成人日韩在线观看| 免费日韩视频| 久久国产精品免费一区二区三区 | 国产精品免费不| 涩涩av在线| 免费看黄色91| 国产福利一区二区三区在线播放| 偷拍精品精品一区二区三区| 六月天综合网| 国产精品久久久久77777丨| 欧美成a人国产精品高清乱码在线观看片在线观看久 | 久久一区二区中文字幕| 99精品小视频| 日韩av成人高清| 国产精品国产一区| 亚洲一区国产一区| 国产毛片精品| 精品国产一区二| 国产精品日本一区二区三区在线 | 成人日韩在线| 免费高清在线一区| 国产欧美三级| 婷婷激情久久| 国产人成精品一区二区三| 麻豆精品蜜桃| 欧美日韩一区二区高清| 欧美成人精品| 精品一区二区三区视频在线播放| 国产一区导航| 国产视频一区欧美| 亚洲精品乱码| 日韩国产一区| 日韩黄色免费网站| 欧美一区二区三区激情视频 | 日韩一区二区免费看| 国产精品任我爽爆在线播放 | 亚洲黄色中文字幕| 亚洲ab电影| 亚洲手机在线| 精品久久免费| 天堂va在线高清一区| 99视频精品全国免费| 六月丁香综合在线视频| 日韩在线网址| 亚洲综合三区| 久久免费国产| 麻豆一区二区三| 亚洲毛片在线免费| 国产综合色产| 亚洲欧洲高清| 久久精品99国产精品日本| 国产精品毛片一区二区三区| 在线看片福利| 国产精品色婷婷在线观看| 亚洲精品韩国| 日韩视频久久| 久久免费黄色| 极品av在线| 韩日一区二区| 欧美极品中文字幕| 日本免费在线视频不卡一不卡二| 欧美特黄a级高清免费大片a级| 中文字幕色婷婷在线视频 | 国产精品一在线观看| 亚洲综合二区| 伊人久久婷婷| 免费视频一区三区| 高清日韩欧美| 久久亚州av| 美女性感视频久久| 国产伦理一区| 青青草国产精品亚洲专区无| 亚洲一级大片| 亚洲一区二区免费在线观看| 欧美中文日韩| 国产亚洲一区在线| 亚洲精品1区| 五月婷婷六月综合| 亚洲性色视频| 亚洲福利国产| 免费国产自久久久久三四区久久 | 国产福利片在线观看| 欧美va天堂在线| 亚洲午夜精品久久久久久app| 久久国产毛片| 99久久久久国产精品| 国产亚洲精品美女久久 | 99riav1国产精品视频| 亚洲电影在线一区二区三区| 久久精品国语| 国产一区日韩一区| 欧美一区二区三区高清视频| 欧美在线亚洲综合一区| 婷婷色综合网| 老色鬼久久亚洲一区二区| 免费久久精品视频| 日本va欧美va瓶| 日本va欧美va精品发布| 日韩国产欧美一区二区三区| 久久国产人妖系列| 精品网站999| 精品国模一区二区三区| 91精品蜜臀一区二区三区在线 | 久久国产麻豆精品| 国产精品美女午夜爽爽| 久久精品系列| 国产自产自拍视频在线观看| 久久电影tv| 欧美日韩第一| 亚洲毛片一区| 久久99久久人婷婷精品综合| 日本一区二区免费高清| 久久精品国产68国产精品亚洲| 亚洲激情二区| 日韩av不卡一区二区| 久久精品人人| 亚洲福利一区| 亚洲综合小说| 老牛国内精品亚洲成av人片| 日韩大片在线播放| 日韩一级欧洲| 欧美一区久久| 久久久精品国产**网站| 蜜桃精品在线| 中文日韩欧美| 国产日韩欧美一区| 理论片午夜视频在线观看| 欧美日韩国产传媒| 日本亚洲视频在线| 国产一区二区精品久| 欧美不卡在线| 日本午夜精品| 成人福利av| 丝袜诱惑制服诱惑色一区在线观看 | 少妇精品久久久一区二区| 欧美日韩1区| 色欧美自拍视频| 黄色亚洲大片免费在线观看| 久久精品72免费观看| 国内精品伊人| 美女精品在线| 精品亚洲成人| 模特精品在线| 国产在线不卡一区二区三区| 日韩视频二区| 九九久久国产| 亚洲尤物在线| 国产精品地址| 国产中文一区| 久久精品99国产精品日本| 秋霞国产精品| 日本一区二区中文字幕| 久久91导航| 国产日产精品_国产精品毛片 | 亚洲精品在线a| 高清不卡亚洲| 日韩一二三区在线观看| 91精品国产成人观看| **爰片久久毛片| 欧美日韩四区| 麻豆国产精品视频| 综合激情一区| 久久久一二三| 国产精品日韩精品中文字幕| 视频一区视频二区中文| 波多视频一区| 国产精品视频一区二区三区四蜜臂 |