在Android中创建自己的VIEW只要继承android.view.View类,然后在onDraw方法中使用canvas画自己所需要的东东就可以了。当然你还需要做一些实际处理,比如对用户点击的处理,向前或向后滚动的处理等。
以下是我创建的CalendarView中,部分显示日历的代码:
public CalendarView(Context context) {
super(context);
calendarBrowse = (CalendarBrowse) context;
setFocusable(true);
setFocusableInTouchMode(true);
cPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
cPaint.setStyle(Paint.Style.FILL_AND_STROKE);
cPaint.setColor(Color.RED);
cPaint.setTextSize(20f);
tPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
tPaint.setStyle(Paint.Style.FILL_AND_STROKE);
tPaint.setColor(Color.WHITE);
tPaint.setTextSize(20f);
setBackgroundColor(getResources().getColor(R.color.background));
mGestureDetector = new GestureDetector(
new GestureDetector.SimpleOnGestureListener() {
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2,
float velocityX, float velocityY) {
if (e1.getX() > e2.getX()) {
cal.add(Calendar.MONTH, 1);
CalendarView.this.invalidate();
}
if (e1.getX() < e2.getX()) {
cal.add(Calendar.MONTH, -1);
CalendarView.this.invalidate();
}
return true;
}
@Override
public boolean onSingleTapUp(MotionEvent e) {
day = getDay(e.getX(), e.getY());
if (day != INVALID_POSITION) {
calendarBrowse.showTimeItemList(year, month, day);
}
return true;
}
});
}
GestureDetector类是用于对手势操作的处理,它可以截取你对屏幕的单击,长按,
向前向后滚动等操作,这个功能在Android的框架中封装的很好,使用起来很舒服。