大小pos機(jī)刷卡,Android View篇之調(diào)整字體大小滑桿的實(shí)現(xiàn)

 新聞資訊2  |   2023-05-28 12:28  |  投稿人:pos機(jī)之家

網(wǎng)上有很多關(guān)于大小pos機(jī)刷卡,Android View篇之調(diào)整字體大小滑桿的實(shí)現(xiàn)的知識(shí),也有很多人為大家解答關(guān)于大小pos機(jī)刷卡的問題,今天pos機(jī)之家(m.afbey.com)為大家整理了關(guān)于這方面的知識(shí),讓我們一起來看下吧!

本文目錄一覽:

1、大小pos機(jī)刷卡

大小pos機(jī)刷卡

小伙伴們大家好呀,介紹一個(gè)稍微有點(diǎn)意思的View,在很多閱讀類、新聞?lì)惖腁PP上都標(biāo)配的字體大小調(diào)整功能。100多行代碼就可以實(shí)現(xiàn),來看看效果吧!

效果圖(這里沒有辦法插入動(dòng)圖)

思路分析

1、刻度條代表著每個(gè)字體的大小值,想想Android的SeekBar就是這樣的功能呀,改一下刻度浮標(biāo)的樣式即可。

2、刻度條上面的標(biāo)注的文本代表著字體大小的說明,如果用一個(gè)LinearLayout包著3個(gè)TextView的方法很難實(shí)現(xiàn)文本跟刻度對(duì)齊,只能畫出來了。

開始寫代碼

我們以SeekBar作為基礎(chǔ),對(duì)它進(jìn)行重寫onDraw()的方法,在這之前我們先來初始化一下基本屬性。

/** * 字體大小調(diào)整滑桿 * Created by ChenRui on 2017/10/13 0013 12:50. */public class RaeSeekBar extends AppCompatSeekBar { // 刻度說明文本,數(shù)組數(shù)量跟刻度數(shù)量一致,跟mTextSize的長度要一致 private String[] mTickMarkTitles = new String[]{ "A", "標(biāo)準(zhǔn)", "", "", "A" }; // 刻度代表的字體大小 private int[] mTextSize = new int[]{ 16, 18, 24, 26, 28 }; // 刻度文本畫筆 private final Paint mTickMarkTitlePaint = new TextPaint(Paint.ANTI_ALIAS_FLAG); // 刻度文本字體大小 private float mTickMarkTitleTextSize = 18; // 刻度文本跟刻度之間的間隔 private float mOffsetY = 40; // 刻度線的高度 private int mLineHeight = 10; // 保存位置大小信息 private final Rect mRect = new Rect(); // ...省略一些其他構(gòu)造函數(shù) public RaeSeekBar(Context context, AttributeSet attrs) { super(context, attrs); init(); } protected void init() { // 初始化刻度文本字體大小 mTickMarkTitleTextSize = getSize(mTickMarkTitleTextSize); // 刻度文本跟刻度之間的間隔 mOffsetY = getSize(mOffsetY); // 刻度線的高度 mLineHeight = getSize(mLineHeight); // 刻度文字的對(duì)齊方式為居中對(duì)齊 mTickMarkTitlePaint.setTextAlign(Paint.Align.CENTER); // 刻度文字的字體顏色 mTickMarkTitlePaint.setColor(ContextCompat.getColor(getContext(), R.color.ph1)); // 設(shè)置最大刻度值為字體大小數(shù)組的長度 setMax(mTextSize.length); // 設(shè)置當(dāng)前的刻度 setProgress(1); }}

測量布局

因?yàn)橐谠瓉淼腟eekBar的基礎(chǔ) 上添加文本,那就應(yīng)該在原來的SeekBar的 高度上再增加最大刻度的文字的高度就是控件布局的高度。

@Overrideprotected synchronized void onMeasure(int width="360px",height="auto" />

重繪

總結(jié)一下畫的思路,這樣可以比較好理解代碼的實(shí)現(xiàn)。整個(gè)過程一共需要我們畫3部分:

直線刻度線刻度文本

當(dāng)然還有個(gè)滑動(dòng)塊,這個(gè)我們可以使用SeekBar自帶的效果,即可以自定義樣式,又能偷下懶。下面來一個(gè)個(gè)解析畫的具體步驟。

1、畫直線

我們先理解成外部是一個(gè)矩形,直線位于中間,左右兩邊的間距為滑塊的一半。通過研究發(fā)現(xiàn)getPaddingLeft() getPaddingright() 正好就是這個(gè)一半值。

[站外圖片上傳中...(image-34565a-1557546251449)]

2、刻度線

很容易看得出來,刻度線實(shí)際是把直線進(jìn)行等分,等分的多少取決于setMax()的取值,也相當(dāng)于mTextSize.length,這樣我們通過畫直線就能輕松實(shí)現(xiàn)了。

3、刻度文本

最重要的是確定文本所在的(x,y) 坐標(biāo)值即可,不難發(fā)現(xiàn)文本的坐標(biāo)是跟隨刻度線的位置變化的,所以在畫刻度線的時(shí)候就可以一起把文本也畫出來了。

4、滑塊位置

系統(tǒng)滑塊的位置其實(shí)是跟分割線的位置一樣的。等分直線,處于分割線中心。

@Overrideprotected void onDraw(canvas canvas) { super.onDraw(canvas); // 刻度長度 int maxLength = getMax(); int width="360px",height="auto" />

top = h2 - getSize(1); // 居中 mRect.bottom = mRect.top + getSize(1.5f); // 1.5f為直線的高度 // 直線的長度 int linewidth="360px",height="auto" />

畫好了是不是等不及了來實(shí)際應(yīng)用一下呢?

具體應(yīng)用示例

布局文件

<!--thumb屬性為滑塊的圖片--><com.rae.cnblogs.widget.RaeSeekBar android:id="@+id/seekBar" android:layout_width="360px",height="auto" />

thumb滑塊圖片

<selector xmlns:android="http://schemas.android.com/apk/res/android" android:constantSize="true"> <item> <shape android:shape="oval"> <solid android:color="@color/badge_color" /> <size android:width="360px",height="auto" />

滑塊回調(diào)監(jiān)聽

mSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int value, boolean b) { // 獲取滑塊所在位置對(duì)應(yīng)的字體大小 int size = mSeekBar.getRawTextSize(value); mMessage.setTextSize(size); } //... 省略其他方法 });

以上就是關(guān)于大小pos機(jī)刷卡,Android View篇之調(diào)整字體大小滑桿的實(shí)現(xiàn)的知識(shí),后面我們會(huì)繼續(xù)為大家整理關(guān)于大小pos機(jī)刷卡的知識(shí),希望能夠幫助到大家!

轉(zhuǎn)發(fā)請(qǐng)帶上網(wǎng)址:http://m.afbey.com/newsone/59026.html

你可能會(huì)喜歡:

版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn),該文觀點(diǎn)僅代表作者本人。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請(qǐng)發(fā)送郵件至 babsan@163.com 舉報(bào),一經(jīng)查實(shí),本站將立刻刪除。