2013-09-22 82 views
0

我想觸摸按鈕並拖動到其他按鈕位置,您可以通過此圖像清楚地瞭解想法。 Guiding Image將一個按鈕拖動到其他按鈕位置

請幫我

我也發現了這個非常有幫助。 Touch and drag image in android 但我想拖動到其他按鈕位置沒有其他人在screen.i沒有任何想法如何我會檢測按鈕輸入其他按鈕尺寸。

到目前爲止,我所做的只是動畫,但我不想通過單擊直接向前移動按鈕。 我想讓用戶自己將按鈕移動到其他按鈕位置。

代碼

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方法,或當你舉起你的手指時,什麼都適合你的應用。

雖然手指向下/移動,您可以更改按鈕座標並在父視圖上觸發重繪。

您可能需要創建一個支持移動按鈕的新視圖。我不知道你是否可以在佈局中做到這一點。

相關問題