2013-11-27 25 views
2

在我的應用程序中我想拖放圖像視圖在屏幕上觸摸。我可以拖動它在四個方向的屏幕上,但我想只是拖到頂部Botton並禁用左右拖動Imageview。如何在Android中禁用左右拖動ImageView?

我在srceen的拖放imageview的代碼:

public class MainActivity extends Activity implements OnTouchListener, 
     OnDragListener { 
    private static final String LOGCAT = null; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     findViewById(R.id.textView1).setOnTouchListener(this); 
     findViewById(R.id.pinkLayout).setOnDragListener(this); 
     findViewById(R.id.yellowLayout).setOnDragListener(this); 
    } 

    public boolean onTouch(View view, MotionEvent motionEvent) { 
     if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) { 
      DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(view); 
      view.startDrag(null, shadowBuilder, view, 0); 
      view.setVisibility(View.INVISIBLE); 
      return true; 
     } else { 
      return false; 
     } 
    } 

    public boolean onDrag(View layoutview, DragEvent dragevent) { 
     int action = dragevent.getAction(); 
     switch (action) { 
     case DragEvent.ACTION_DRAG_STARTED: 
      Log.d(LOGCAT, "Drag event started"); 
      break; 
     case DragEvent.ACTION_DRAG_ENTERED: 
      Log.d(LOGCAT, "Drag event entered into " + layoutview.toString()); 
      break; 
     case DragEvent.ACTION_DRAG_EXITED: 
      Log.d(LOGCAT, "Drag event exited from " + layoutview.toString()); 
      break; 
     case DragEvent.ACTION_DROP: 
      Log.d(LOGCAT, "Dropped"); 
      View view = (View) dragevent.getLocalState(); 
      ViewGroup owner = (ViewGroup) view.getParent(); 
      owner.removeView(view); 
      LinearLayout container = (LinearLayout) layoutview; 
      container.addView(view); 
      view.setVisibility(View.VISIBLE); 
      break; 
     case DragEvent.ACTION_DRAG_ENDED: 
      Log.d(LOGCAT, "Drag ended"); 
      break; 
     default: 
      break; 
     } 
     return true; 
    } 
} 

如何解決它? 感謝

回答

2

使用這可能是幫助你...

switch (event.getAction() & MotionEvent.ACTION_MASK) { 
case MotionEvent.ACTION_DOWN: 
savedMatrix.set(matrix); 
start.set(event.getX(), event.getY()); 
Log.d(TAG, "mode=DRAG"); 
mode = DRAG; 
break; 
case MotionEvent.ACTION_UP: 
case MotionEvent.ACTION_POINTER_UP: 
mode = NONE; 
Log.d(TAG, "mode=NONE"); 
break; 
case MotionEvent.ACTION_MOVE: 
if (mode == DRAG) { 
matrix.set(savedMatrix); 
matrix.postTranslate(event.getX() - start.x, 
event.getY() - start.y); 
} 
break; 
} 
+0

thanks.how的模式類型? –

+1

static final int NONE = 0; static final int DRAG = 1; int mode = NONE; –

+0

它不工作,因爲左側和右側工作.Iwant禁用在屏幕左右移動 –

相關問題