国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

Android仿字節顏色自定義進度條

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

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

效果展示

Android仿字節顏色自定義進度條

代碼實現

第一步:編寫自定義屬性

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 * @技術交流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(); } //設置 屬性動畫 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); } //根據屬性動畫的 變化的值 給畫筆換不同的顏色 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>

到此為止,效果便可以完美實現了。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Android
相關文章:
主站蜘蛛池模板: 写真片福利视频在线播放 | 免费一级毛片在线播放 | 国产香蕉成人综合精品视频 | 国产亚洲精品久久久久久久久激情 | 欧美一级成人一区二区三区 | 国产一区不卡 | 久爱综合 | 成人精品一区二区久久久 | 日本黄色大片免费观看 | 福利姬在线精品观看 | 思99re久久这里只有精品首页 | 成人精品亚洲人成在线 | 无内丝袜透明在线播放 | 毛片b| 国产精品理论片在线观看 | 欧美日韩精品一区二区免费看 | 久久成人a毛片免费观看网站 | 亚洲一区二区在线成人 | 岛国精品成人 | 国产三级久久 | 精品色视频 | 国产在线视频区 | 亚洲一区二区三区四区五区六区 | a级在线观看| 欧美精品束缚一区二区三区 | 91精品国产免费久久久久久青草 | 91精品一区二区综合在线 | 毛片免费高清免费 | 欧美色另类| 黄色毛片播放 | 亚洲一区二区三区免费视频 | 日韩精品一区二区三区免费视频 | 一本三道a无线码一区v | 99在线观看精品免费99 | 在线观看不卡一区 | 久久精品在线观看 | 欧美精品a毛片免费观看 | 色天天躁夜夜躁天干天干 | 亚洲第一视频在线观看 | xxx免费视频 | 亚洲国产人成中文幕一级二级 |