`
阿尔萨斯
  • 浏览: 4180339 次
社区版块
存档分类
最新评论

Activity-视图onTouchEvent初探(6)

 
阅读更多

1.本文阐释总结,再根据案例验证总结:


首先,构建两个控件:Layout和View的子类,同样,Activity也有onTouchEvent().且无论如何都会执行;

package org.lean.lifecyleapp;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;

/**
 * @author linwb
 */
public class ChildView extends View {
	
	private int colorNum=0;
	
	public ChildView(Context context,AttributeSet attributeSet) {
		super(context,attributeSet);
		setFocusable(true);
		setFocusableInTouchMode(true);
	}
	
	@Override
	protected void onDraw(Canvas canvas) {
		super.onDraw(canvas);
		if (colorNum>100) {
			colorNum=0;
		}else {
			colorNum+=1;
		}
		
		Paint paint=new Paint();
		switch (colorNum%4) {
		case 0:
			paint.setColor(Color.RED);
			break;
		case 1:
			paint.setColor(Color.BLUE);
			break;
		case 2:
			paint.setColor(Color.YELLOW);
			break;
		case 3:
			paint.setColor(Color.GREEN);
			break;
		default:
			break;
		}
		canvas.drawRect(20.0f, 20.0f, 390.0f, 370.0f,paint);
		
	}
	
	
	@Override
	public boolean onTouchEvent(MotionEvent event) {
		
		return super.onTouchEvent(event);
	}

}

public class Layout extends RelativeLayout {

	public Layout(Context context, AttributeSet attrs) {
		super(context, attrs);
	}
	
	@Override
	public boolean onTouchEvent(MotionEvent event) {
		return super.onTouchEvent(event);
	}
	
}

在主Activity中添加布局layout_main,代码如下:

<org.lean.lifecyleapp.Layout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"  >

    <org.lean.lifecyleapp.ChildView
        android:layout_width="300dp"
        android:layout_height="300dp"
        android:background="#F00"   />
	
</org.lean.lifecyleapp.Layout>

运行界面如下:


探索横向跨层的规律:

@Override
	public boolean onTouchEvent(MotionEvent event) {
		switch (event.getAction()) {
		case MotionEvent.ACTION_DOWN:
			Log.v("aa","ChildView::::ACTION_DOWN");
			return true;
//			break;
		case MotionEvent.ACTION_MOVE:
			Log.v("aa","ChildView::::ACTION_MOVE");
//			return true;
			break;
		case MotionEvent.ACTION_UP:
			Log.v("aa","ChildView::::ACTION_UP");
			break;
		default:
			break;
		}
		return super.onTouchEvent(event);
	}



分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics