效果如图
1,自定义View
package com.apple.mybitmap.widget;2,在主函数中匹配TextView/**
* 联系人A-z的view
*/public class MyA2ZView extends View {private int width;
private int height;
private float x;
private float y;
private int index=-1;
private OnItemChangeListener onItemChangeListener;
private String[] array = new String[]{"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"};
private Paint mPaintText;
private Paint mPaintSelsctText;
public MyA2ZView(Context context) {
super(context);
}
public interface OnItemChangeListener {
void onItemchange(int index, String indexString);
}
public void setOnItemChangeListener(OnItemChangeListener onItemChangeListener) {
this.onItemChangeListener = onItemChangeListener;
}
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_MOVE:
case MotionEvent.ACTION_DOWN:
x = event.getX();
y = event.getY();
if (x > width - height / 26f * 2) {
index = (int) (y / (height / 26f));
if (onItemChangeListener!=null) {
onItemChangeListener.onItemchange(index, array[index]);
}
invalidate();
return true;
}
break;
case MotionEvent.ACTION_UP:
index=-1;
invalidate();
default:
break;
}
return super.onTouchEvent(event);
}
public MyA2ZView(Context context, AttributeSet attrs) {
super(context, attrs);
mPaintText = new Paint();
mPaintText.setTextAlign(Paint.Align.CENTER);
mPaintText.setColor(Color.BLACK);
mPaintSelsctText = new Paint();
mPaintSelsctText.setTextAlign(Paint.Align.CENTER);
mPaintSelsctText.setColor(Color.RED);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
width = getDefaultSize(getSuggestedMinimumWidth(), widthMeasureSpec);
height = getDefaultSize(getSuggestedMinimumHeight(), heightMeasureSpec);
setMeasuredDimension(width, height);
mPaintText.setTextSize(height / 26f);
mPaintSelsctText.setTextSize(height / 26f);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
for (int i = 0; i < array.length; i++) {
canvas.drawText(array[i], width - height / 26f, height / 26f * (i + 1), mPaintText);
}
if(index!=-1) {
canvas.drawText(array[index], width - height / 26f, height / 26f * (index + 1), mPaintSelsctText);
}
}
}
package com.apple.mybitmap;
import com.apple.mybitmap.widget.MyA2ZView;
public class MainActivity extends Activity {
private TextView mTextView;
private MyA2ZView mMyA2ZView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTextView = (TextView) findViewById(R.id.textview);
mMyA2ZView = (MyA2ZView) findViewById(R.id.mya2zview);
mMyA2ZView.setOnItemChangeListener(new MyA2ZView.OnItemChangeListener() {
@Override
public void onItemchange(int index, String indexString) {
mTextView.setText(indexString);
}
});
}
}