2012-06-06 40 views
1

我是新來的android編程...我試圖移動一個新添加到佈局使用手勢(特別是ontouchlistener)的imageview ..它設法添加imageview,但ontouchlistener只能望塵莫及,直到ACTION_DOWN ..這裏是我的代碼:不能使用ontouchlistener拖動自定義imageview

package com.calengine; 

import android.os.Bundle; 
import android.view.MotionEvent; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.view.View.OnTouchListener; 
import android.widget.FrameLayout; 
import android.widget.FrameLayout.LayoutParams; 
import android.widget.ImageView; 
import android.widget.TextView; 

public class coba extends CALEngineActivity implements OnClickListener, OnTouchListener{ 

    private ImageView movableimage; 
    private FrameLayout layout; 
    private LayoutParams params; 
    int status; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.mainform2); 

     layout = (AbsoluteLayout) findViewById(R.id.absLayoutAction); 
     status = 0; 
      movableimage = new ImageView(this); 
      movableimage.setImageResource(R.drawable.icon_launcher); 
      layout.addView(movableimage); 
      movableimage.setOnTouchListener(this); 
    } 

    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
     TextView txt = (TextView) findViewById(R.id.textView1); 
     LayoutParams layoutParams = (LayoutParams) movableimage.getLayoutParams(); 
     switch(event.getAction()) 
     { 
     case MotionEvent.ACTION_DOWN: 
      txt.setText("Created"); 
      break; 
     case MotionEvent.ACTION_MOVE: 
      txt.setText("Moving"); 
      int x_cord = (int)event.getRawX(); 
      int y_cord = (int)event.getRawY(); 

      layoutParams.leftMargins = x_cord - 25; 
      layoutParams.topMargins = y_cord - 75; 

      movableimage.setLayoutParams(layoutParams); 
      break; 
     case MotionEvent.ACTION_UP: 
      txt.setText("Up"); 
      break; 
     default: 
      break; 
     } 
     return false; 
    } 
} 

我承擔這些事件的TextView將顯示相應的文字。但它僅顯示「創建」,沒有「動」或「向上」 ...圖像不會移動...如何解決這個問題?

回答

1

您需要在onTouch方法中返回true。

+0

謝謝,它終於工作!!在我以前的嘗試中,我已經給出了返回true,但它只是沒有作品......再次感謝!! :) –

1

我相信,當你從聽衆返回錯誤,它會停止給你更多的信息(涉及到後續的事件正在通過)。嘗試返回true,看看是否解決了你的問題。 Offhand我沒有看到其他任何根本錯誤的東西(儘管一個長篇講座是爲了正確的方式來做你在這裏做的事情,這不涉及AbsoluteLayout,而是一個你可以繪製的SurfaceView並操縱)任何你想要的東西...但這是一個更先進的點

這裏是一個合理的簡單的開始請記住,你可以捕捉任何視圖的觸摸事件,在這個例子中,你只需添加該功能你可以很容易地找到關於如何拖動東西的教程,你可以很容易地找到關於如何拖動東西的教程 http://android-coding.blogspot.com/2011/05/drawing-on-surfaceview.html

+0

謝謝..我試圖找到更多關於surfaceview,但我認爲我需要更多的時間來研究它,時間不夠(我正在做一個簡單的項目)。在未來,我會嘗試使用surfaceview和自定義視圖更多...感謝您的建議:) –