上下滾動文字自定義控制項

2021-07-12 05:35:32 字數 2802 閱讀 7795

public

class

verticalrollingtextview

extends

view

private

void

parseattrs(context context, attributeset attrs)

@override

protected

void

ondraw(canvas canvas)

string text1 = mdatasetadapter.gettext(mcurrentindex);

string text2 = mdatasetadapter.gettext(mnextindex);

//只需要進行一次測量

if (morgoffsety == -1)

canvas.drawtext(text1, 0, mcurrentoffsety, mpaint);

canvas.drawtext(text2, 0, mcurrentoffsety + moffset + mtexttoptoascentoffset, mpaint);

}public

void

setdatasetadapter(datasetadapter datasetadapter)

/*** 開始轉動,介面可見的時候呼叫

*/public

void

run()

isrunning = true;

manimation.updatevalue(mcurrentoffsety, -2 * mtexttoptoascentoffset);

post(mrollingtask);

}/**

*@return true代表正在轉動

*/public

boolean

isrunning()

/*** 停止轉動,介面不可見的時候呼叫

*/public

void

stop()

runnable mrollingtask = new runnable()

};public

void

animationend()

@override

protected

void

ondetachedfromwindow()

}/**

* 計算第二個角標

*/private

void

confirmnextindex()

/*** float估值器

**@param fraction

*@param startvalue

*@param endvalue

*@return

*/float evaluate(float fraction, float startvalue, float endvalue)

@override

public

void

setonclicklistener(onclicklistener l)

public

void

setonitemclicklistener(final onitemclicklistener onitemclicklistener)

});}

public

inte***ce

onitemclicklistener

class internalanimation extends animation

postinvalidate();

}public

void

updatevalue(float startvalue, float endvalue)

}}

name="verticalrollingtextview">

name="android:textcolor"/>

name="android:textsize"/>

name="android:duration"/>

name="animinterval"

format="integer"/>

declare-styleable>

resources>

android:id="@+id/home_rolling_tv"

android:layout_height="40dp"

android:layout_width="match_parent"

android:layout_alignparentleft="true"

myattrs:animinterval="3000"

android:layout_marginleft="75dp"

android:layout_margintop="8dp"

android:textsize="18sp"

/>

mverticalrollingview.setdatasetadapter(new datasetadapter(arrays.aslist(mstrs)) 

});

mverticalrollingview.setonitemclicklistener(new onitemclicklistener() 

});

if (mverticalrollingview.isrunning())  else

自定義滾動導航控制項

2015 04 25 更新控制左邊距,水平間距,固定title寬屬性,增加非相鄰頻道切換不需要動畫方式。之前囤了不少自定義的控制項,都準備放上來的,但是太懶了.最近發現有需要的時候卻死活找不著了,所以決定開始整理整理,挨個放上來,既幫助了有需要的人也方便了自己.滾動導航檢視 效果圖 覺得不錯請點一下...

自定義控制項文字居中

繪製文字的x,y座標是baseline左端點的座標,原來一直理解為了文字的左上角,今天親測才發現,文字的x座標號計算 控制項寬度 文字寬度 2 文字的y座標計算 控制項高度 2 距離baseline的那段距離 decent ascent 2 android繪製文字時以baseline為y軸0座標線,...

自定義 View 迴圈滾動刻度控制項

先看效果圖 enter description here loopscaleview 是乙個自定義的刻度尺風格的選值控制項,從上面的 大家可以看到 loopscaleview 的執行效果.可以設定螢幕內顯示的刻度數,也可以設定每乙個刻度代表的值得大小。onvaluechangelistener 刻度...