package com.user.textviewabc;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
/**
* user
*/
public class AbcTextView extends View {
private Paint paint;
private int index=-1;//当前选中的下标
private String[] str={"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"};
public AbcTextView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
private void init() {
paint=new Paint();
paint.setColor(Color.BLUE);
paint.setAntiAlias(true);
paint.setTextSize(50);
paint.setTextAlign(Paint.Align.CENTER);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
for(int i=0;i<str.length;i++){
canvas.drawText(str[i],getWidth()/2,(paint.descent()-paint.ascent())*(i+1),paint);//画text
}
}
@Override
public boolean onTouchEvent(MotionEvent event) {
int dy= (int) event.getY();
switch (event.getAction()){
case MotionEvent.ACTION_DOWN:
break;
case MotionEvent.ACTION_MOVE:
int index= (int) (dy/(paint.descent()-paint.ascent()));
break;
case MotionEvent.ACTION_UP:
break;
}
return super.onTouchEvent(event);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
setMeasuredDimension(measureView(widthMeasureSpec,0),measureView(heightMeasureSpec,1));
}
private int measureView(int spec, int type){
int mode=MeasureSpec.getMode(spec);
int size=MeasureSpec.getSize(spec);
switch (mode){
case MeasureSpec.EXACTLY:
return size;
//这里是测量wrapContent
case MeasureSpec.AT_MOST:
if(type==0){
size= (int) (paint.measureText(str[0])+getPaddingLeft()+getPaddingRight());
}else if(type==1){
size= (int) ((paint.descent()-paint.ascent())*str.length+getPaddingTop()+getPaddingBottom());
}
return size;
case MeasureSpec.UNSPECIFIED:
break;
}
return size;
}
}
android画右边的ABCD.....
最新推荐文章于 2022-01-19 16:09:21 发布