2016-12-18 62 views
1

我有一些自定義視圖與onTouchEvent我設置mX和mY。如何從自定義視圖獲取座標android

mx=event.getX(); 
my=event.getY(); 

這是獲取觸摸事件的描繪軌跡 - 偉大的工作,我可以看到 其中的主要活動定義我的文本視圖的座標。

我想用我的主要業務佈局 這2個屬性來設置背景顏色 例如

if (mx > 1000 && my > 100){ 
set color 
} 

但似乎MX和我沒有得到任何值 我的嘗試是

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所以很容易跟我:)

加入MainActiviy。

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; 
    } 
+0

從正在試圖獲得x,y座標?在onCreate()?在MainActivity.java中的 – Rahul

+0

即時將它們設置在custom_view上的onTouchEvents中。 – user7258123

+0

帆布在自定義視圖中繪製 – user7258123

回答

0

使用的接口或回調整理您的TouchEvent後。你必須重新撥打您的

findCoordinates()

所以它會更新你的UI對於新值。

+0

的呼叫,你可以給例子代碼? – user7258123

+0

檢查如何使用接口進行通信或回調。 – Rahul

0

我成功使用OnViewTouchListener作爲回調:

添加方法在自定義視圖:

private OnViewTouchListener OnViewTouchListener; 
public interface OnViewTouchListener { 
public void onViewTouched (float x, float y, boolean touched); 
} 

public void setOnViewTouchListener (OnViewTouchListener listener){ 
OnViewTouchListener = listener; 
} 
相關問題