2013-09-22 5 views
0

Я хочу нажать кнопку и перетащить ее в другое положение кнопки. Вы можете получить четкое представление об этом изображении. Guiding ImageПеретащите одну кнопку на другую позицию кнопки

Пожалуйста, помогите мне

Я также нашел, что это очень полезно. Touch and drag image in android , но я хочу перетащить в другое положение кнопки, а некоторые не были на экране. Я не знаю, как я обнаружил, что кнопка вводится в другие размеры кнопок.

До сих пор я делаю это просто анимация, но я не хочу, чтобы просто двигалась по прямой кнопке. Я хочу, чтобы пользователь сам переместил кнопку на другую позицию.

Код

public class AnimationActivity extends Activity implements OnClickListener { 

public Button btn_a1, btn_a2; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.mainsec); 
    btn_a1 = (Button) findViewById(R.id.btn_a1); 
    btn_a2 = (Button) findViewById(R.id.btn_a2); 

    btn_a1.setOnClickListener(this); 
    btn_a2.setOnClickListener(this); 

} 

@Override 
public void onClick(final View v) { 
    // TODO Auto-generated method stub 
    switch (v.getId()) { 
    case R.id.btn_a1: { 
     int direction = -1; 
     DisplayMetrics displaymetrics = new DisplayMetrics(); 
     getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); 
     RelativeLayout.LayoutParams absParams = (RelativeLayout.LayoutParams) btn_a1 
       .getLayoutParams(); 

     final float xDelta = (displaymetrics.widthPixels/2) 
       - absParams.leftMargin - (btn_a1.getWidth()/2); 

     final Animation animation = new TranslateAnimation(0, xDelta 
       * direction, 0, 0); 
     AnimationListener animationOutListener = new AnimationListener() { 
      public void onAnimationEnd(Animation animation) { 
       btn_a2.setBackgroundDrawable(R.id.blank);// Unselect 
      } 

      public void onAnimationRepeat(Animation animation) { 
       // TODO Auto-generated method stub 
      } 

      public void onAnimationStart(Animation animation) { 
       // TODO Auto-generated method stub 
       btn_a2.setBackgroundDrawable(R.id.red);// Select 
      } 
     }; 
     animation.setAnimationListener(animationOutListener); 
     animation.setDuration(1000); 
     btn_a2.startAnimation(animation); 

     break; 
    } 
    case R.id.btn_a2: { 
     int direction = 1; 
     DisplayMetrics displaymetrics = new DisplayMetrics(); 
     getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); 
     RelativeLayout.LayoutParams absParams = (RelativeLayout.LayoutParams) btn_a1 
       .getLayoutParams(); 

     final float xDelta = (displaymetrics.widthPixels/2) 
       - absParams.leftMargin - (btn_a1.getWidth()/2); 

     final Animation animation = new TranslateAnimation(0, xDelta 
       * direction, 0, 0); 
     AnimationListener animationOutListener = new AnimationListener() { 
      public void onAnimationEnd(Animation animation) { 
       btn_a1.setBackgroundDrawable(R.id.blank);// Unselect 
      } 

      public void onAnimationRepeat(Animation animation) { 
       // TODO Auto-generated method stub 
      } 

      public void onAnimationStart(Animation animation) { 
       // TODO Auto-generated method stub 
       btn_a1.setBackgroundDrawable(R.id.red);// Select 
      } 
     }; 
     animation.setDuration(1000); 
     btn_a1.startAnimation(animation); 
     break; 
    } 
    } 
} 

ответ

1

Как об этом:

Вы должны оценить кнопки parentViews onTouchEvents, и если вы нажмете ее, вы можете запустить метод OnClick, связанный с кнопкой, или когда вы поднимаете палец, что когда-либо подходит вашему приложению.

Но пока палец вниз/перемещение, вы можете просто изменить координаты кнопок и вызвать перерисовку на родительском представлении.

Возможно, вам придется создать новый вид, поддерживающий перемещение кнопок. Я не знаю, можете ли вы сделать это внутри макета.

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