對於android來說,我所做的所有嘗試都是爲了編寫一個應用程序,並且只有很少的視圖與用戶進行交互。我的方法是用xml文件中的一些imageviews定義佈局,並以編程方式處理這些圖像視圖上的事件。 但我遇到了將.setOnTouchListener()分配給先前在xml中定義的RelativeLayout的問題。將.setOnTouchListener()分配給在xml中定義的佈局
代碼如下所示:
public class ThreeActivity extends Activity implements OnTouchListener {
ImageView iv2;
RelativeLayout rl;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.fish);
ImageView iv1 = (ImageView) findViewById(R.id.ImageView02);
iv1.setAlpha(50);
iv2 = (ImageView) findViewById(R.id.ImageView01);
iv2.setId(2);
iv2.setOnTouchListener(this);
iv2.setFocusable(true);
}
@Override
public boolean onTouch(View v, MotionEvent event) {
if (iv2.isFocused()) {
TranslateAnimation translateAnim = new TranslateAnimation(
iv2.getLeft(), event.getX(), iv2.getTop(), event.getY());
translateAnim.setDuration(1000);
translateAnim
.setInterpolator(new AccelerateDecelerateInterpolator());
translateAnim.setFillAfter(true);
iv2.setAnimation(translateAnim);
iv2.startAnimation(translateAnim);
}
return true;
}
}
很明顯,我想要一個imageview的要成爲焦點,以收到多個事件和比它移動到觸摸的位置。這就是我進入麻煩的地方。我感動的RelativeLayout只是沒有設置觸摸監聽器,所以我無法與它進行交互。
你能幫我解決這個問題還是推薦另一種方法? 感謝您的幫助!
對不起,但沒有這個soulutinos正在工作:( 解決方案2號的ImageView仍然只是在由imageview iv2本身定義的方塊上進行偵聽,並且解決方案1號產生NullPointException! – greengold 2012-02-04 11:28:40
您必須爲所有ImageViews設置偵聽器並在onTouch()方法,v參數是對vi的引用新聞被觸及 – 2012-02-06 01:53:39
我想你沒有得到我的問題。 我希望我的對象(圖像視圖)能夠移動到我點擊的任何位置。當然,如果我想要與所有圖像瀏覽器交互,我會將它們分配在TouchListener上並進行關注,而不是檢查onTouch方法中的特定視圖,如果它被移動到應該移動的位置。 事情是,我不能告訴他們在哪裏移動原因RelativeLayout在這個例子中沒有分配onTouchListener,所以我無法獲得座標。 – greengold 2012-02-07 00:48:36