Java 如何从自定义视图中获取坐标
我在onTouchEvent中有一些自定义视图,我在其中设置mX和我的Java 如何从自定义视图中获取坐标,java,android,touch-event,Java,Android,Touch Event,我在onTouchEvent中有一些自定义视图,我在其中设置mX和我的 mx=event.getX(); my=event.getY(); 这是为了得到触摸事件的绘图路径-工作得很好,我可以 查看“我的文本”视图中的坐标,该视图在主活动中定义 我想在我的主要活动布局中使用这2个属性 用于设置背景色 比如说 if (mx > 1000 && my > 100 ){ set color } 但似乎mx和my没有得到任何价值 我试过的是 custom_view pai
mx=event.getX();
my=event.getY();
这是为了得到触摸事件的绘图路径-工作得很好,我可以
查看“我的文本”视图中的坐标,该视图在主活动中定义
我想在我的主要活动布局中使用这2个属性
用于设置背景色
比如说
if (mx > 1000 && my > 100 ){
set color
}
但似乎mx和my没有得到任何价值
我试过的是
custom_view paintview = (custom_view) findViewById(R.id.custum_view_id)
float mx =paintview.getmx();
float my =paintview.getmy();
也许我没有在自定义视图中正确定义getmx
public float getmx(){
return mx;
}
我是Java和android新手,所以请对我放松:)
添加main活动
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Drawing - custom view
drawView = (Drawing) findViewById(R.id.drawing);
findCoordinates();
TextView Coordinates = (TextView) findViewById(R.id.CNcoordinates);
//Coordinates - message with coordinates
paintView.setTextView(Coordinates);
}
private Drawing drawView;
public void findCoordinates() {
Drawing paintView = (Drawing) findViewById(R.id.drawing);
float xX = drawView.getmX();
float yY = drawView.getmY();
int nColor = Color.BLUE;
View buttonmove1 = findViewById(R.id.layoutMove);
if (Math.abs(xX) > 1000 && Math.abs(yY) > 1000) {
buttonmove1.setBackgroundColor(nColor);
}
}
坐标来自:
protected void onDraw(Canvas canvas) {
canvas.drawBitmap(canvasBitmap, 0, 0, canvasPaint);
canvas.drawPath(drawPath, drawPaint);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
mX = event.getX();
mY = event.getY();
View buttonmove = findViewById(R.id.drawing);
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
drawPath.moveTo(mX, mY);
if(myCoordinates!=null){
myCoordinates.setText(":" + mX + " , " + ":" + mY);
}
break;
public void setTextView(TextView tv){
myCoordinates = tv;
}
完成touchEvent后使用接口或回调。你必须重新打电话给你的朋友 findCoordinates()
因此,它将根据新值更新您的UI。在完成touchEvent后使用接口或回调。你必须重新打电话给你的朋友 findCoordinates()
因此,它将根据新值更新您的UI。我成功地将OnViewTouchListener用作回调: 在自定义视图中添加方法:
private OnViewTouchListener OnViewTouchListener;
public interface OnViewTouchListener {
public void onViewTouched (float x, float y, boolean touched);
}
public void setOnViewTouchListener (OnViewTouchListener listener){
OnViewTouchListener = listener;
}
我成功地将OnViewTouchListener用作回调: 在自定义视图中添加方法:
private OnViewTouchListener OnViewTouchListener;
public interface OnViewTouchListener {
public void onViewTouched (float x, float y, boolean touched);
}
public void setOnViewTouchListener (OnViewTouchListener listener){
OnViewTouchListener = listener;
}
从哪里得到x,y坐标?在onCreate()中?在MainActivity.java im中,在自定义视图的onTouchEvents中设置它们。在自定义视图中绘制画布可以显示完整的MainActivity.java添加我的main,谢谢,从您尝试获取x,y坐标的位置开始?在onCreate()中?在MainActivity.java im中,在自定义视图的onTouchEvents中设置它们。在自定义视图中绘制画布可以显示完整的MainActivity.javaadd my main,谢谢,检查如何使用接口进行通信或回调。检查如何使用接口进行通信或回调。