Android侧边栏滑动切换的view效果
废话不多说了,直接给大家贴代码了,具体代码如下所示:
importandroid.content.Context;
importandroid.graphics.Canvas;
importandroid.graphics.Paint;
importandroid.graphics.drawable.BitmapDrawable;
importandroid.util.AttributeSet;
importandroid.view.MotionEvent;
importandroid.view.View;
publicclassSideBarextendsView{
privatestaticfinalintMARGIN_BOTTOM=2;
privateintmItemHeight=18;
privateOnLetterTouchListenermOnLetterTouchListener;
privatePaintmPaint;
privatefloatmWidthCenter;
privateintbackgroundColor=0x00F0F0F0;
privatechar[]chars=AppCommon.INDEXER_CHARS;
publicinterfaceOnLetterTouchListener{
publicabstractvoidonPressedDown(intindex,charch);
publicabstractvoidonPressedUp(intindex,charch);
}
publicSideBar(Contextcontext){
this(context,null);
}
publicSideBar(Contextcontext,AttributeSetattrs){
this(context,attrs,-1);
}
publicSideBar(Contextcontext,AttributeSetattrs,intdefStyle){
super(context,attrs,defStyle);
init();
}
privateintstartY=0;//其实位置的y轴坐标
publicSideBarsetChars(char[]chars){
this.chars=chars;
//for(inti=0;i<(26-chars.length)/2;i++){
//startY+=i*mItemHeight;
//}
init();
postInvalidate();
returnthis;
}
privatevoidinit(){
mPaint=newPaint();
mPaint.setColor(0xFFCFCFD0);
mPaint.setAntiAlias(true);
mPaint.setFakeBoldText(true);
mPaint.setTextSize(32);
mPaint.setColor(getResources().getColor(R.color.blue));
mPaint.setSubpixelText(true);
mPaint.setTextAlign(Paint.Align.CENTER);
setBackgroundColor(backgroundColor);
}
publicbooleanonTouchEvent(MotionEventevent){
super.onTouchEvent(event);
intidx=(int)event.getY()/mItemHeight;
if(idx>=chars.length){
idx=chars.length-1;
}elseif(idx<0){
idx=0;
}
if(event.getAction()==MotionEvent.ACTION_DOWN||event.getAction()==MotionEvent.ACTION_MOVE){
setBackgroundResource(R.color.sidebar_select_background);
if(mOnLetterTouchListener!=null){
mOnLetterTouchListener.onPressedDown(idx,chars[idx]);
}
}elseif(event.getAction()==MotionEvent.ACTION_UP){
setBackgroundDrawable(newBitmapDrawable());
setBackgroundColor(backgroundColor);
if(mOnLetterTouchListener!=null){
mOnLetterTouchListener.onPressedUp(idx,chars[idx]);
}
}
returntrue;
}
@Override
protectedvoidonSizeChanged(intw,inth,intoldw,intoldh){
mItemHeight=(h-MARGIN_BOTTOM)/26;
mWidthCenter=getMeasuredWidth()/2;
super.onSizeChanged(w,h,oldw,oldh);
}
protectedvoidonDraw(Canvascanvas){
for(inti=0;i
以上所述是小编给大家介绍的Android侧边栏滑动切换的view效果,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!