成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

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

Android 自定義SeekBar 實(shí)現(xiàn)分段顯示不同背景顏色的示例代碼

瀏覽:113日期:2022-09-23 17:43:38

在最近的開(kāi)發(fā)工作中,要實(shí)現(xiàn)一個(gè)調(diào)色板的進(jìn)度條,SeekBar要分成10段顯示不同顏色,功夫不負(fù)有心人,終于實(shí)現(xiàn)了這個(gè)功能,下面分享給大家示例圖:

Android 自定義SeekBar 實(shí)現(xiàn)分段顯示不同背景顏色的示例代碼

1.自定義SeekBar

import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.Rect;import android.os.Build;import android.util.AttributeSet;import android.widget.SeekBar;/** * * @time 2020/6/4 18:32 * <p> * 類(lèi)描述:自定義多顏色的SeekBar */public class MulticolourSeekBar extends SeekBar { /** * 畫(huà)筆 */ private Paint mMulticlourPaint; /** * 刻度線(xiàn)的個(gè)數(shù),等分?jǐn)?shù)等于刻度線(xiàn)的個(gè)數(shù)加1 */ private int mMulticlourCount = 9; /** * 每條刻度線(xiàn)的寬度 */ private int mMulticlourWidth = 2; /** * 刻度線(xiàn)的顏色 */ private int mMulticlourColor = Color.WHITE; /** * 滑塊上面是否要顯示刻度線(xiàn) */ private boolean isShowTopOfThumb = false; public MulticolourSeekBar(Context context) { super(context); init(); } public MulticolourSeekBar(Context context, AttributeSet attrs) { super(context, attrs); init(); } public MulticolourSeekBar(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); init(); } /** * 初始化 */ private void init() { //創(chuàng)建繪制刻度線(xiàn)的畫(huà)筆 mMulticlourPaint = new Paint(); mMulticlourPaint.setColor(mMulticlourColor); mMulticlourPaint.setAntiAlias(true); //Api21及以上調(diào)用,去掉滑塊后面的背景 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { setSplitTrack(false); } } /** * 重寫(xiě)onDraw方法繪制刻度線(xiàn) * * @param canvas */ @Override protected synchronized void onDraw(Canvas canvas) { super.onDraw(canvas); //極限條件校驗(yàn) if (getWidth() <= 0 || mMulticlourCount <= 0) { return; } //獲取每一份的長(zhǎng)度// int length = (getWidth() - getPaddingLeft() - getPaddingRight() - mMulticlourCount * mMulticlourWidth) / (mMulticlourCount + 1); int length = (getWidth() - getPaddingLeft() - getPaddingRight()) / (mMulticlourCount + 1); //計(jì)算刻度線(xiàn)的頂部坐標(biāo)和底部坐標(biāo) int rulerTop = getHeight() / 2 - getMinimumHeight() / 2; int rulerBottom = rulerTop + getMinimumHeight(); //獲取滑塊的位置信息 Rect thumbRect = null; if (getThumb() != null) { thumbRect = getThumb().getBounds(); } //繪制刻度線(xiàn)// for (int i = 1; i <= mMulticlourCount; i++) {// //計(jì)算刻度線(xiàn)的左邊坐標(biāo)和右邊坐標(biāo)// int rulerLeft = i * length + getPaddingLeft();// int rulerRight = rulerLeft + mMulticlourWidth;//// //判斷是否需要繪制刻度線(xiàn)// if (!isShowTopOfThumb && thumbRect != null && rulerLeft - getPaddingLeft() > thumbRect.left && rulerRight - getPaddingLeft() < thumbRect.right) {// continue;// }//// //進(jìn)行繪制// canvas.drawRect(rulerLeft, rulerTop, rulerRight, rulerBottom, mMulticlourPaint);// } for (int i = 0; i <= mMulticlourCount; i++) { int left = getPaddingLeft() + i * length; int right = left + length; if (i % 3 == 0) { mMulticlourPaint.setColor(Color.RED); } else if (i % 3 == 1) { mMulticlourPaint.setColor(Color.YELLOW); } else { mMulticlourPaint.setColor(Color.BLUE); } if (i == 0) { canvas.drawCircle(getPaddingLeft() + 10, 20, 10, mMulticlourPaint); left += 10; canvas.drawRect(left, 10, right, 30, mMulticlourPaint); } else if (i == mMulticlourCount) { right -= 10; canvas.drawRect(left, 10, right, 30, mMulticlourPaint); canvas.drawCircle(right, 20, 10, mMulticlourPaint); } else { canvas.drawRect(left, 10, right, 30, mMulticlourPaint); } } } /** * 設(shè)置刻度線(xiàn)的個(gè)數(shù) * * @param mRulerCount */ public void setRulerCount(int mRulerCount) { this.mMulticlourCount = mRulerCount; requestLayout(); } /** * 設(shè)置刻度線(xiàn)的寬度,單位(px) * * @param mRulerWidth */ public void setRulerWidth(int mRulerWidth) { this.mMulticlourWidth = mRulerWidth; requestLayout(); } /** * 設(shè)置刻度線(xiàn)的顏色 * * @param mRulerColor */ public void setRulerColor(int mRulerColor) { this.mMulticlourColor = mRulerColor; if (mMulticlourPaint != null) { mMulticlourPaint.setColor(mRulerColor); requestLayout(); } } /** * 滑塊上面是否需要顯示刻度線(xiàn) * * @param isShowTopOfThumb */ public void setShowTopOfThumb(boolean isShowTopOfThumb) { this.isShowTopOfThumb = isShowTopOfThumb; requestLayout(); }}

2.activity_main.xml

<?xml version='1.0' encoding='utf-8'?><android.support.constraint.ConstraintLayout 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' tools:context='.MainActivity'> <com.xinrui.view.MulticolourSeekBar android: android:layout_width='350px' android:layout_height='wrap_content' android:background='@null' android:maxHeight='20px' android:minHeight='20px' android:max='100' android:progress='5' android:progressDrawable='@drawable/shape_progress_drawable' android:thumb='@drawable/shape_thumb_icon' android:thumbOffset='-2px' app:layout_constraintBottom_toBottomOf='parent' app:layout_constraintEnd_toEndOf='parent' app:layout_constraintStart_toStartOf='parent' app:layout_constraintTop_toTopOf='parent' /></android.support.constraint.ConstraintLayout>

3.shape_progress_drawable.xml

<?xml version='1.0' encoding='utf-8'?><layer-list xmlns:android='http://schemas.android.com/apk/res/android'> <item android:id='@android:id/background'> <shape> <solid android:color='#e1e8f0' /> <size android: /> <corners android:radius='8px' /> </shape> </item> <item android:id='@android:id/progress'> <clip> <shape> <gradient android:endColor='@android:color/transparent' android:startColor='@android:color/transparent' /> <size android: /> <corners android:radius='8px' /> </shape> </clip> </item></layer-list>

4.shape_thumb_icon.xml

<?xml version='1.0' encoding='utf-8'?><shape xmlns:android='http://schemas.android.com/apk/res/android' android:shape='rectangle'> <size android: android: /> <solid android:color='@android:color/widget_edittext_dark' /></shape>

總結(jié)

到此這篇關(guān)于Android 自定義SeekBar 實(shí)現(xiàn)分段顯示不同背景顏色的文章就介紹到這了,更多相關(guān)Android 自定義SeekBar 背景顏色內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Android
相關(guān)文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
1024亚洲| 免费精品99久久国产综合精品| 亚洲日本成人在线观看| jlzzjlzz亚洲日本少妇| 国产精品久久一区二区三区| 亚洲欧洲性图库| 一区二区亚洲| 国产精品电影院| 国产字幕视频一区二区| 中文字幕av免费专区久久| 欧美午夜精品| 中文字幕一区二区三区色视频 | 久久精品国产免费| 在线视频综合导航| 美洲天堂一区二卡三卡四卡视频 | 欧美人xxxx| 国产电影一区在线| 日韩一区二区在线观看| 国产aⅴ综合色| 精品久久久久久久久久久久久久久久久| 国产成人在线影院| 欧美成人性战久久| 91在线观看成人| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 欧美日韩一区二区三区在线看 | 黄色免费成人| 亚洲欧洲三级电影| 亚洲三级毛片| 婷婷综合另类小说色区| 欧美性受xxxx黑人xyx| 国产91丝袜在线观看| 国产亚洲午夜高清国产拍精品| 国产精品v亚洲精品v日韩精品| 亚洲丝袜另类动漫二区| 亚洲一卡久久| 麻豆一区二区99久久久久| 欧美日本一道本在线视频| 成人a区在线观看| 国产精品午夜久久| 亚洲黄色天堂| 日韩黄色一级片| 69p69国产精品| 99久久精品免费| 亚洲三级在线看| 久久精品二区| 爽爽淫人综合网网站| 欧美高清视频一二三区 | 欧美一区日韩一区| 91看片淫黄大片一级在线观看| 国产精品污www在线观看| 永久域名在线精品| 天天色图综合网| 日韩一级大片在线| 含羞草久久爱69一区| 日欧美一区二区| 日韩女优电影在线观看| 亚洲欧洲精品一区二区三区波多野1战4 | 国产精品亲子伦对白| 国产精品久久九九| 老司机精品视频在线| 欧美精品一区二区久久婷婷| 日韩视频精品在线观看| 精品一区二区日韩| 国产农村妇女精品| 玖玖视频精品| 99这里都是精品| 亚洲午夜激情网站| 91.麻豆视频| 亚洲精品影院| 国产精品123| 亚洲精品国久久99热| 51精品国自产在线| 亚洲国产精品一区| 国产在线播放一区| 国产精品国产a级| 在线影视一区二区三区| 91麻豆国产香蕉久久精品| 日日摸夜夜添夜夜添国产精品| 欧美精品一区二区三区四区| 亚洲欧美日韩精品久久久| 成人美女视频在线看| 亚洲高清在线视频| 久久综合999| 91久久免费观看| 欧美人与禽猛交乱配| 蜜臀av性久久久久蜜臀aⅴ| 久久久综合九色合综国产精品| 久久久久久久久久久一区 | 国产精品推荐精品| 成人午夜在线播放| 一区二区三区中文字幕精品精品| 欧美日韩国产小视频在线观看| 欧美日韩国产欧| 国内精品国产三级国产a久久| 亚洲视频一二区| 日韩精品最新网址| 久久久久一区二区| 欧美日韩一区在线视频| 精品综合久久久久久8888| 中文字幕色av一区二区三区| 欧美日韩国产一区二区三区地区| 亚洲欧洲日韩综合二区| 成人综合婷婷国产精品久久免费| 亚洲一区二区视频在线| 国产欧美视频一区二区三区| 欧美日韩国产高清一区二区三区| 一本色道久久综合亚洲精品高清 | 久久久久久久久一区二区| 欧美黄色大片网站| 狠狠狠色丁香婷婷综合激情| 一区二区在线观看视频在线观看| 久久综合九色欧美综合狠狠 | 成人久久18免费网站麻豆| 亚洲r级在线视频| 国产视频一区二区在线观看| 欧美日韩精品一区视频| 国产精品久久亚洲7777| 午夜久久tv| 粉嫩绯色av一区二区在线观看| 五月天亚洲精品| 亚洲欧美成aⅴ人在线观看| 久久蜜桃香蕉精品一区二区三区| 欧美另类久久久品| 午夜亚洲福利在线老司机| 国内自拍亚洲| a亚洲天堂av| 韩国中文字幕2020精品| 亚洲成人免费av| 亚洲手机成人高清视频| 久久这里只有精品首页| 91精品国产入口在线| 欧美又粗又大又爽| 欧美日韩一区二区国产| 豆国产96在线|亚洲| 麻豆国产精品一区二区三区| 亚洲国产精品麻豆| 亚洲欧美日韩在线不卡| 国产无遮挡一区二区三区毛片日本| 欧美一区二区三区在线视频| 一本一道久久a久久精品| 一区二区三区福利| 亚洲清纯自拍| 伊人久久综合| 一区一区视频| 狠久久av成人天堂| 午夜欧美理论片| 欧美一区二视频在线免费观看| 成人精品在线视频观看| 高清不卡一区二区在线| 高清不卡在线观看| 国产盗摄精品一区二区三区在线 | 麻豆专区一区二区三区四区五区| 亚洲成人动漫精品| 亚洲成人动漫一区| 亚洲国产另类av| 亚洲高清视频的网址| 亚洲综合色噜噜狠狠| 亚洲综合小说图片| 亚洲一区二区三区三| 亚洲一二三级电影| 亚洲大片一区二区三区| 亚洲国产一区二区视频| 亚洲成av人片在线| 香蕉成人啪国产精品视频综合网| 亚洲图片欧美视频| 污片在线观看一区二区| 日韩专区在线视频| 美女精品一区二区| 久久99精品网久久| 国产精品资源网| 成人小视频免费观看| 99久久伊人久久99| 欧美精品首页| 亚洲成人在线| 亚洲一区在线免费| 色综合久久久久久久久| 欧美性大战久久久久久久| 宅男噜噜噜66一区二区66| 日韩欧美在线不卡| 精品sm捆绑视频| 国产日产欧美一区| 中文在线资源观看网站视频免费不卡 | 午夜激情一区二区三区| 舔着乳尖日韩一区| 久久精品国产99| 国产专区欧美精品| 成人免费毛片高清视频| caoporn国产精品| 色综合久久综合网| 狠狠色狠狠色综合日日tαg| 日韩视频在线播放| 久久国产精品99国产| 91久久精品网| 欧美一区二区三区思思人| 久久先锋影音av| 亚洲日本青草视频在线怡红院| 亚洲成人手机在线| 国内一区二区在线| 97久久精品人人做人人爽| 亚洲午夜精品福利|