2013-06-13 15 views
0

在我的活動中,我計劃在用戶包圍區域時繪製矩形或箭頭。 我確定存在繪製視圖的方法,但我可以找到的所有方法都是覆蓋onDraw函數。這在我的情況下是不可行的,因爲我打算從我的onclick處理程序中繪製一個像素。在即時查看中繪製

我希望應該有以下方式的一些代碼,但我還沒有找到它..

View v; 
s = v.GetFrawingSurface() 
s.PutPixel(x,y,rgb); 

在此請幫助...

回答

1

把您查看」上述空白視圖關於在ViewGroup中繪製。 然後在該視圖的onDraw中,您可以繪製任何您想要的內容,並且它會出現在內容的頂部。

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

    //... your content here 

    <com.your.packagename.widget.YourCustomView 
     android:id="@+id/overlay" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"/> 

</FrameLayout> 

現在告訴您的視圖中繪製你需要什麼

@Override 
public boolean onTouchEvent (MotionEvent event) { 
    if (event.getAction == MotionEvent.ACTION_DOWN) { 
     yourView.drawPixel(event.getX(), event.getY()); 
     return true; 
    } 
    return super.onTouchEvent(event); 
} 

而且你的觀點

public final class YourView extends View { 


    public void drawPixel(float x, float y) { 
     //store filled pixels somewhere... (matrix is not a Matrix clas here, just an example) 
     matrix.addValues(x, y); 
     invalidate(); //cal this to call onDraw(); 
    } 

    @Override 
    protected void onDraw(Canvas c) { 
     // get pixels from matrix and draw them 

     for(...) { 

      c.drawPoint(currentX, currentY, paint); 

     } 
    } 

} 
+0

我能做到這一點,但後來我不得不航線從疊加活動的所有事件。有沒有簡單的方法。恕我直言,必須有一個方法來繪製, – mSO