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 刻度...