亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Android > 正文

android實現年齡段選擇器

2019-10-21 21:34:44
字體:
來源:轉載
供稿:網友

本文實例為大家分享了android實現年齡段選擇器的具體代碼,供大家參考,具體內容如下

android,選擇器

效果就是滑動圓形按鈕選擇時間,廢話不多說,先上工具類

import android.view.View;import android.content.Context;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Canvas;import android.graphics.Paint;import android.util.AttributeSet;import android.view.MotionEvent;import com.zhiziyun.dmptest.bot.R;/** * Created by Administrator on 2018/7/27. */public class RangeSeekBar extends View { private float lineWidth = 5.0f; private float textSize = 25.0f; private int inRangeColor = 0xff247ab7; private int outRangeColor = 0xff777777; private int textColor = 0xff247ab7; private int textMarginBottom = 10; private int lowerCenterX; private int upperCenterX; private int bmpWidth; private int bmpHeight; private Bitmap lowerBmp; private Bitmap upperBmp; private Paint inRangePaint; private Paint outRangePaint; private Paint bmpPaint; private Paint textPaint; private boolean isLowerMoving = false; private boolean isUpperMoving = false; private OnRangeChangedListener onRangeChangedListener; private int paddingLeft = 50; private int paddingRight = 50; private int paddingTop = 50; private int paddingBottom = 10; private int lineHeight; private int lineLength = 400; private int lineStart = paddingLeft; private int lineEnd = lineLength + paddingLeft; private float smallValue = 13.0f;//最小值 private float bigValue = 60.0f;//最大值 private float smallRange = smallValue; private float bigRange = bigValue; private int textHeight; public RangeSeekBar(Context context) {  super(context);  init(); } public RangeSeekBar(Context context, AttributeSet attrs) {  super(context, attrs);  init(); } public RangeSeekBar(Context context, AttributeSet attrs, int defStyle) {  super(context, attrs, defStyle);  init(); } private void init() {  lowerBmp = BitmapFactory.decodeResource(getResources(),    R.drawable.circular);//圓形按鈕圖標,自己設置  upperBmp = BitmapFactory.decodeResource(getResources(),    R.drawable.circular);//圓形按鈕圖標,自己設置  bmpWidth = upperBmp.getWidth();  bmpHeight = upperBmp.getHeight();  lowerCenterX = lineStart;  upperCenterX = lineEnd;  lineHeight = getHeight() - paddingBottom - lowerBmp.getHeight() / 2;  textHeight = lineHeight + lowerBmp.getHeight() / 2 + 10; } private void initPaint() {  // 繪制范圍內的線條  inRangePaint = new Paint();  inRangePaint.setAntiAlias(true);  inRangePaint.setStrokeWidth(lineWidth);  inRangePaint.setColor(inRangeColor);  // 繪制范圍外的線條  outRangePaint = new Paint();  outRangePaint.setAntiAlias(true);  outRangePaint.setStrokeWidth(lineWidth);  outRangePaint.setColor(outRangeColor);  // 畫圖片滑塊  bmpPaint = new Paint();  // 畫范圍文字  textPaint = new Paint();  textPaint.setColor(textColor);  textPaint.setTextSize(textSize);  textPaint.setAntiAlias(true);  textPaint.setStrokeWidth(lineWidth); } private int measureWidth(int measureSpec) {  int result = 0;  int specMode = MeasureSpec.getMode(measureSpec);  int specSize = MeasureSpec.getSize(measureSpec);  if (specMode == MeasureSpec.EXACTLY) {   result = specSize;  } else {   result = paddingLeft + paddingRight + bmpWidth * 2;   if (specMode == MeasureSpec.AT_MOST) {    result = Math.min(result, specSize);   }  }  return result; } private int measureHeight(int measureHeight) {  int result = 0;  int specMode = MeasureSpec.getMode(measureHeight);  int specSize = MeasureSpec.getSize(measureHeight);  if (specMode == MeasureSpec.EXACTLY) {   result = bmpHeight * 2;  } else {   result = bmpHeight + paddingTop;   if (specMode == MeasureSpec.AT_MOST) {    result = Math.min(result, specSize);   }  }  return result; } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {  widthMeasureSpec = measureWidth(widthMeasureSpec);  heightMeasureSpec = measureHeight(heightMeasureSpec);  setMeasuredDimension(widthMeasureSpec, heightMeasureSpec); } @Override protected void onDraw(Canvas canvas) {  super.onDraw(canvas);  bmpWidth = upperBmp.getWidth();  bmpHeight = upperBmp.getHeight();  lineHeight = getHeight() - paddingBottom - lowerBmp.getHeight() / 2;  textHeight = lineHeight - bmpHeight / 2 - textMarginBottom;  // 畫線  Paint linePaint = new Paint();  linePaint.setAntiAlias(true);  linePaint.setStrokeWidth(lineWidth);  // 繪制處于圖片滑塊之間線段  linePaint.setColor(inRangeColor);  canvas.drawLine(lowerCenterX, lineHeight, upperCenterX, lineHeight,    linePaint);  // 繪制處于圖片滑塊兩端的線段  linePaint.setColor(outRangeColor);  canvas.drawLine(lineStart, lineHeight, lowerCenterX, lineHeight,    linePaint);  canvas.drawLine(upperCenterX, lineHeight, lineEnd, lineHeight,    linePaint);  // 畫圖片滑塊  Paint bmpPaint = new Paint();  canvas.drawBitmap(lowerBmp, lowerCenterX - bmpWidth / 2, lineHeight    - bmpHeight / 2, bmpPaint);  canvas.drawBitmap(lowerBmp, upperCenterX - bmpWidth / 2, lineHeight    - bmpHeight / 2, bmpPaint);  // 畫范圍文字  Paint textPaint = new Paint();  textPaint.setColor(textColor);  textPaint.setTextSize(textSize);  textPaint.setAntiAlias(true);  textPaint.setStrokeWidth(lineWidth);  canvas.drawText(String.format("%.0f歲", smallRange), lowerCenterX    - bmpWidth / 2, textHeight, textPaint);  canvas.drawText(String.format("%.0f歲", bigRange), upperCenterX    - bmpWidth / 2, textHeight, textPaint); } @Override public boolean onTouchEvent(MotionEvent event) {  super.onTouchEvent(event);  float xPos = event.getX();  switch (event.getAction()) {   case MotionEvent.ACTION_DOWN:    // 如果按下的位置在垂直方向沒有與圖片接觸,則不會滑動滑塊    float yPos = event.getY();    if (Math.abs(yPos - lineHeight) > bmpHeight / 2) {     return false;    }    // 表示當前按下的滑塊是左邊的滑塊    if (Math.abs(xPos - lowerCenterX) < bmpWidth / 2) {     isLowerMoving = true;    }    // //表示當前按下的滑塊是右邊的滑塊    if (Math.abs(xPos - upperCenterX) < bmpWidth / 2) {     isUpperMoving = true;    }    // 單擊左邊滑塊的左邊線條時,左邊滑塊滑動到對應的位置    if (xPos >= lineStart && xPos <= lowerCenterX - bmpWidth / 2) {     lowerCenterX = (int) xPos;     updateRange();     postInvalidate();    }    // 單擊右邊滑塊的右邊線條時, 右邊滑塊滑動到對應的位置    if (xPos <= lineEnd && xPos >= upperCenterX + bmpWidth / 2) {     upperCenterX = (int) xPos;     updateRange();     postInvalidate();    }    break;   case MotionEvent.ACTION_MOVE:    // 滑動左邊滑塊時    if (isLowerMoving) {     if (xPos >= lineStart && xPos < upperCenterX - bmpWidth) {      lowerCenterX = (int) xPos;      updateRange();      postInvalidate();     }    }    // 滑動右邊滑塊時    if (isUpperMoving) {     if (xPos > lowerCenterX + bmpWidth && xPos < lineEnd) {      upperCenterX = (int) xPos;      updateRange();      postInvalidate();     }    }    break;   case MotionEvent.ACTION_UP:    // 修改滑塊的滑動狀態為不再滑動    isLowerMoving = false;    isUpperMoving = false;    break;   default:    break;  }  return true; } // 計算指定滑塊對應的范圍值 private float computRange(float range) {  return (range - lineStart) * (bigValue - smallValue) / lineLength    + smallValue; } // 滑動滑塊的過程中,更新滑塊上方的范圍標識 private void updateRange() {  smallRange = computRange(lowerCenterX);  bigRange = computRange(upperCenterX);  if (null != onRangeChangedListener) {   onRangeChangedListener.onRangeChanged(smallRange, bigRange);  } } // 注冊滑塊范圍值改變事件的監聽 public void setOnRangeChangedListener(   OnRangeChangedListener onRangeChangedListener) {  this.onRangeChangedListener = onRangeChangedListener; } // 公共接口,用戶回調接口范圍值的改變 public interface OnRangeChangedListener {  public void onRangeChanged(float lowerRange, float upperRange); }}

在xml中

<com.zhiziyun.dmptest.bot.util.RangeSeekBar    android:id="@+id/rangeSeekBar"    android:layout_width="match_parent"    android:layout_height="wrap_content" />

最后在代碼中調用

rangeSeekBar = (RangeSeekBar) findViewById(R.id.rangeSeekBar);  rangeSeekBar.setOnRangeChangedListener(new RangeSeekBar.OnRangeChangedListener() {   @Override   public void onRangeChanged(float lowerRange, float upperRange) {    tv_age.setText((int) lowerRange + "~" + (int) upperRange);   }  });

寫完收工。

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


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品国产欧美一区二区五十路| 国产成人涩涩涩视频在线观看| 夜夜躁日日躁狠狠久久88av| 国产精品无av码在线观看| 欧美日本啪啪无遮挡网站| 欧洲午夜精品久久久| 欧美中文在线免费| 日韩精品福利网站| 日韩av电影手机在线观看| 欧洲亚洲在线视频| 亚洲高清不卡av| 欧美国产日韩一区二区| 国产91精品视频在线观看| 亚洲视频在线免费观看| 国产精品久久久久久av福利软件| 自拍亚洲一区欧美另类| 日韩国产欧美精品一区二区三区| 国产精品99久久久久久白浆小说| 97国产一区二区精品久久呦| 青草青草久热精品视频在线网站| 成人免费视频网址| 久久人人爽人人爽爽久久| 久久免费视频网| 日韩激情视频在线| 亚洲欧美日韩国产中文专区| 欧美在线亚洲一区| 亚洲影院高清在线| 欧美日韩在线第一页| 亚洲精品黄网在线观看| 久久久久久久999| 一本色道久久综合亚洲精品小说| 97视频在线观看亚洲| 97视频在线观看免费高清完整版在线观看| 91亚洲永久免费精品| 日韩av在线网址| 欧美裸体视频网站| 国模视频一区二区三区| 成人激情视频在线观看| 欧美在线www| 亚洲欧美日韩另类| 91成人在线观看国产| 久久亚洲国产精品成人av秋霞| 国产精品久久久久7777婷婷| 欧美激情在线播放| 自拍偷拍亚洲区| 国产成人福利夜色影视| 韩国日本不卡在线| 国产精品扒开腿做爽爽爽视频| 久久久久久亚洲精品不卡| 欧洲亚洲免费在线| 一区二区在线免费视频| 国产一区二区三区在线观看视频| 国产亚洲成精品久久| 成人免费xxxxx在线观看| 欧美孕妇孕交黑巨大网站| xxxxx成人.com| 亚洲综合社区网| 中文字幕日韩av| 国产精品av免费在线观看| 日韩电影网在线| 国产亚洲欧美日韩一区二区| 欧美老女人在线视频| 成人综合国产精品| 亚洲精品电影久久久| 日韩av电影中文字幕| 亚洲国产小视频| 国产精品久久久久久久久久久久久| 国产狼人综合免费视频| 成人福利网站在线观看11| 91精品久久久久久久久青青| 日韩一级裸体免费视频| 国产精品99久久久久久久久| 欧美成人精品在线播放| 成人黄色免费片| 国产精品r级在线| 国内精品国产三级国产在线专| 亚洲欧美日韩天堂| 亚洲精品福利视频| 日韩在线观看免费av| 亚洲精品免费网站| 97人人爽人人喊人人模波多| 蜜臀久久99精品久久久无需会员| 亚洲品质视频自拍网| 亚洲国内高清视频| 性欧美视频videos6一9| 国产精品免费在线免费| 日韩高清a**址| 亚洲**2019国产| 亚洲成人三级在线| 国产精品999999| 97成人超碰免| 欧美电影在线观看网站| 欧美成人精品在线视频| 日韩av中文在线| 欧美精品一区三区| 亚洲区中文字幕| 国产精品成人一区| 在线观看亚洲区| 欧美猛男性生活免费| 欧美日韩国产在线播放| 欧美性黄网官网| 久久天天躁狠狠躁老女人| 66m—66摸成人免费视频| 夜夜嗨av一区二区三区四区| 国模极品一区二区三区| 欧美性猛交xxxx久久久| 日韩视频亚洲视频| 日本久久久久久久久久久| 欧美激情综合色综合啪啪五月| 国产精品久久久久久久久粉嫩av| 国产亚洲精品va在线观看| 亚洲精品视频中文字幕| 欧美精品中文字幕一区| 欧美日本啪啪无遮挡网站| 国产精品99久久久久久白浆小说| 日韩国产欧美精品在线| 久久夜色精品国产| 日韩精品中文字幕在线| 国外色69视频在线观看| 亚洲精品日韩在线| 亚洲free性xxxx护士白浆| 亚洲精品久久久久久久久| 日韩电影免费观看中文字幕| 欧美激情综合色综合啪啪五月| 91人人爽人人爽人人精88v| 欧美日韩性视频在线| 成人国产在线视频| 久久精品91久久香蕉加勒比| 日韩欧美a级成人黄色| 欧美激情2020午夜免费观看| 欧美黄色片免费观看| 中文综合在线观看| 亚洲网站在线播放| 亚洲成av人乱码色午夜| 精品无码久久久久久国产| 992tv在线成人免费观看| 中文字幕在线视频日韩| 亚洲第一精品福利| 国产婷婷成人久久av免费高清| 久久夜色精品国产欧美乱| 欧美性视频精品| 日韩精品久久久久| 亚洲成年网站在线观看| 欧美国产视频一区二区| 国产精品免费福利| 精品欧美国产一区二区三区| 美女撒尿一区二区三区| 久久亚洲精品网站| 亚洲视频国产视频| 色综合久久88色综合天天看泰| 久久久久九九九九| 91视频免费网站| 国产亚洲视频在线观看| 日韩精品免费观看| 奇米成人av国产一区二区三区| 亚洲国产精品成人一区二区| 欧美性jizz18性欧美| 91亚洲va在线va天堂va国| 国产成人精品av在线| 在线观看日韩视频| 中文字幕精品www乱入免费视频| 欧美激情喷水视频| 亚洲老头老太hd| 欧美成aaa人片免费看|