2012-08-28 48 views
0

我正在開發一個Android應用程序,我想添加一些eyecandy的用戶界面。我有一個活動(讓我們稱之爲MainActivity),它有一些文本字段,按鈕和一個畫廊。 我想達到的是:當用戶觸摸到某個地方的活動時,他所觸摸的地方應該有一些視覺效果(例如閃閃發光的東西等)。Android的視覺效果觸摸一個活動

所以我的問題的基本部分是: a)如何確定用戶觸摸的位置 b)如何在屏幕上繪製我的效果(作爲活動的「疊加」)。

在此先感謝您的每一個有用的答案。

(我已經簽出this答案,但它似乎並不適用於我的情況。)

回答

1

,你應該重寫你的活動的onTouchEvent方法。然後,您可以獲取觸摸事件的座標:

@Override 
public boolean onTouchEvent(MotionEvent event) { 

    float touchX = event.getX(); 
    float touchY = event.getY(); 

    switch(event.getAction()) { 
    case MotionEvent.ACTION_DOWN: 
     // touch down 
     break; 
    case MotionEvent.ACTION_MOVE: 
     // movement 
     break; 
    case MotionEvent.ACTION_UP: 
     // touch up 
     break; 
    default: 
     // default 
    } 

    return super.onTouchEvent(event); 
} 
+0

謝謝,那答案部分a)!關於如何繪製覆蓋活動視圖的東西的任何想法? (b) – gmazlami

+0

例如,您可以將ImageView放置在可以放置動畫或繪製圖像的座標中。這就是我想要的。 – slezadav

0

如果您在ICS工作的話,我建議你看看在設置應用程序的開發人員選項。如果你沒有與ICS合作,我相信你可以看看APIDEMOS的頭像。他們通過觸摸畫線。該代碼可以讓你開始。

2

首先,您必須將onTouchListener添加到您的根佈局,然後您可以獲取用戶觸摸屏幕的座標。 例如:

float x,y; 
    rl = (RelativeLayout) findViewById(R.id.root_layout); 
    rl.setOnTouchListener(new OnTouchListener() { 

     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      float x = event.getX(); 
      float y = event.getY(); 
       return super.onTouchEvent(); 
     } 

    }); 
+0

謝謝,這答案部分a)!關於如何繪製覆蓋活動視圖的東西的任何想法?有可能有一個帆布覆蓋我的用戶界面? – gmazlami

1

爲了進一步回答你的問題,有一個覆蓋,看APIDemos - >圖像 - >的OpenGL ES - >半透明GLSurfaceView。這將幫助您在活動上創建疊加層。在API演示中可能會有其他一些示例,它們會爲您提供幫助。 Android的API演示是一些很好的例子來解決一些已知的問題。