1.新建工程
2.主MainActivity增加一个函数
package com.appseed.app03;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void showClickArea(int x, int y) {
Toast.makeText(MainActivity.this,"您点击自定义View(" + x + ", " + y + ")!",Toast.LENGTH_SHORT).show();
}
}
3.新建自定义view类
新增代码如下:
package com.appseed.app03;
import android.view.View;
import android.content.Context;
import android.graphics.Color;
import android.graphics.Canvas;
import android.util.AttributeSet;
import android.view.MotionEvent;
public class cmView extends View {
private Context mContext;
public int mIndex = 0;
public cmView(Context context) {
this(context, null);
}
public cmView(Context context, AttributeSet attrs) {
super(context, attrs) ;
mContext = context;
}
@Override
protected void onDraw(Canvas canvas) {
canvas.drawColor( Color.RED);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
float x = event.getX();
float y = event.getY();
((MainActivity) mContext).showClickArea((int)x,(int)y);
}
return super.onTouchEvent(event);
}
}
4.修改Layout
<com.appseed.app03.cmView
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginLeft="32dp"
android:layout_marginTop="32dp"
android:layout_marginRight="32dp"
android:layout_marginBottom="32dp"
android:text="Hello World!"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
运行。
另外一种做法:
cmView中代码改为:
public boolean onTouchEvent(MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_DOWN) { float x = event.getX(); float y = event.getY(); m_x = (int)x; m_y = (int)y; //((MainActivity) mContext).showClickArea((int)x,(int)y); } return super.onTouchEvent(event); }
public void onClickView(View view){ cmView cm = (cmView)findViewById( R.id.view01 ); int x = cm.m_x; int y = cm.m_y; Toast.makeText(MainActivity.this,"点击(" + x + ", " + y + ")!",Toast.LENGTH_SHORT).show(); Log.d("MainView", "Jump: "); }/*按钮函数响应*/