自定義帶刻度的拖動條(SeekBar)

2021-10-07 07:33:25 字數 2829 閱讀 7347

類似設定中字型、顯示大小拖動的形式。

話不多說上乾貨:

一、重寫seekbar 元件

package com.lenovo.fonthelp;

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;

public class rulerseekbar extends seekbar

public rulerseekbar(context context, attributeset attrs)

public rulerseekbar(context context, attributeset attrs, int defstyleattr)

/*** 初始化

*/private void init()

}/**

* 重寫ondraw方法繪製刻度線

** @param canvas

*/@override

protected synchronized void ondraw(canvas canvas)

//獲取每乙份的長度

int length = (getwidth() - getpaddingleft() - getpaddingright() - mrulercount * mrulerwidth) / (mrulercount + 1);

//計算刻度線的頂部座標和底部座標

int rulertop = getheight() / 2 - getminimumheight() / 2;

int rulerbottom = rulertop + getminimumheight();

//獲取滑塊的位置資訊

rect thumbrect = null;

if (getthumb() != null)

//繪製刻度線

for (int i = 1; i <= mrulercount; i++)

//進行繪製

canvas.drawrect(rulerleft, rulertop, rulerright, rulerbottom, mrulerpaint);}}

/*** 設定刻度線的個數

** @param mrulercount

*/public void setrulercount(int mrulercount)

/*** 設定刻度線的寬度,單位(px)

** @param mrulerwidth

*/public void setrulerwidth(int mrulerwidth)

/*** 設定刻度線的顏色

** @param mrulercolor

*/public void setrulercolor(int mrulercolor)

}/**

* 滑塊上面是否需要顯示刻度線

** @param isshowtopofthumb

*/public void setshowtopofthumb(boolean isshowtopofthumb)

}

二、在布局中直接使用

三、在需要呼叫的地方使用

private rulerseekbar mfontseekbar;

...mfontseekbar = findviewbyid(r.id.font_seek_bar);

mfontseekbar.setrulercount(2);

mfontseekbar.setrulercolor(color.yellow);

mfontseekbar.setrulerwidth(5);

mfontseekbar.setshowtopofthumb(false);

mfontseekbar.setprogress(1);

mfontseekbar.setonseekbarchangelistener(new seekbar.onseekbarchangelistener()

@override

public void onstarttrackingtouch(seekbar seekbar)

@override

public void onstoptrackingtouch(seekbar seekbar)

});

四、附上布局shape 檔案

在drawable 資料夾下建立如下檔案:

shape_progress_drawable.xml

<?xml version="1.0" encoding="utf-8"?>

shape_thumb_icon.xml

<?xml version="1.0" encoding="utf-8"?>

自定義刻度 Android自定義滑動刻度進度條

做到以上的效果圖,就可以知道,兩個模式,首先,定義相應的自定義屬性,額,沒辦法,上頭要求,所以規範點 新建乙個bar attrs.xml檔案 attr declare styleable resources 然後就是 中取得相應的屬性值和設定預設值 然後修改seekbar的線的顏色和滑動塊的屬性,通...

自定義控制項的拖動

自定義控制項的拖動 新增事件 this.mouseup new system.windows.forms.mouseeventhandler this.dragend this.mousemove new system.windows.forms.mouseeventhandler this.dra...

自定義控制項的拖動

新增事件 this.mouseup new system.windows.forms.mouseeventhandler this.dragend this.mousemove new system.windows.forms.mouseeventhandler this.dragmove this...