0

enter image description hereкак переключить несколько функций ontouchlistener в андроиде

У меня есть два ontouchlistener функции, перетаскивание и изменение размеров функции. Я хочу сделать это, если кнопка перетаскивания кнопки onclick может выполнять перетаскивание ontouchlistener, если я нажму кнопку изменения размера, он сможет выполнить функцию reize ontouchlistener. имеет ли смысл использовать корпус переключателя в этом случае? Извините за мой английский, надежда может понять мой вопрос

public class Tab3 extends Fragment implements View.OnTouchListener { 
    Button psave; 
    TextView textView3; 
    public static final String PREFERENCES_FILE_NAME = "MyAppPreferences"; 
    private int xDelta; 
    private int yDelta; 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View h = inflater.inflate(R.layout.tab3, container, false); 

     RelativeLayout rl = (RelativeLayout)h.findViewById(R.id.RLtab3); 
     textView3 = (TextView) h.findViewById(R.id.textView3); 

     Button btnAddARoom = new Button(getActivity()); 
     btnAddARoom.setText("Test"); 
     btnAddARoom.setOnTouchListener(this); 
     rl.addView(btnAddARoom); 


     return h; 
    } 
    public boolean onTouch(View view, MotionEvent event) { 
     switch(view.getId()) { 
      case R.id.move: 
       final int X = (int) event.getRawX(); 
       final int Y = (int) event.getRawY(); 
       switch (event.getAction() & MotionEvent.ACTION_MASK) { 
        case MotionEvent.ACTION_DOWN: 
         RelativeLayout.LayoutParams Params = (RelativeLayout.LayoutParams) view.getLayoutParams(); 
         xDelta = X - Params.leftMargin; 
         yDelta = Y - Params.topMargin; 
         break; 
        case MotionEvent.ACTION_UP: 
         break; 
        case MotionEvent.ACTION_POINTER_DOWN: 

         break; 
        case MotionEvent.ACTION_POINTER_UP: 
         break; 
        case MotionEvent.ACTION_MOVE: 

         RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) view.getLayoutParams(); 
         layoutParams.leftMargin = X - xDelta; 
         layoutParams.topMargin = Y - yDelta; 
         layoutParams.rightMargin = -50; 
         layoutParams.bottomMargin = -50; 
         view.setLayoutParams(layoutParams); 
       } 
       return false; 
      case R.id.tresize : 
       int x=(int)event.getX(); 
       int y=(int)event.getY(); 
       int width= view.getLayoutParams().width; 
       int height = view.getLayoutParams().height; 


       if((x - width <= 20 && x - width > 0) ||(width - x <= 20 && width - x > 0)){ 
        switch (event.getAction()){ 
         case MotionEvent.ACTION_DOWN: 
          break; 
         case MotionEvent.ACTION_MOVE: 
          Log.e(">>","width:"+width+" height:"+height+" x:"+x+" y:"+y); 
          view.getLayoutParams().width = x; 
          view.getLayoutParams().height = y; 
          view.requestLayout(); 
          break; 
         case MotionEvent.ACTION_UP: 
          break; 
        } 
       } 

     }return true; 
    } 

} 
+0

спасибо, что это код android java –

ответ

0

Да, вы правы, есть лучший способ. Один TouchListener, который обрабатывает все.

Примечание. Этот подход также будет работать для OnClickListener, OnCheckedChangeListener или любого другого слушателя, который вы установили бы на Android-экране.

Смежные вопросы