1

こんにちは私はAndroidを初めて使用します。Android2.2APIレベル8を使用します。したがって、ドラッグ用とドロップ用の2つの画像を使用できます。ここに、ここで実行できるコードを表示します。コードはどのディスプレイデバイスの高さの幅であり、ボールは私のドラッグイメージビューです。

windowwidth = getWindowManager().getDefaultDisplay().getWidth();
        windowheight = getWindowManager().getDefaultDisplay().getHeight();
        Log.e("Screen Width-->", "" + windowwidth);
        Log.e("Screen Height-->", "" + windowheight);
        ball = (ImageView) findViewById(R.id.secondImage);
        tempAnimationDrawable = (AnimationDrawable) ball.getDrawable();
        ball.setOnTouchListener(this);

これにsetontouchListenerを適用します。ontouchListenerは以下のとおりです。

public boolean onTouch(View v, MotionEvent event) 
    {
        layoutParams = (RelativeLayout.LayoutParams) ball.getLayoutParams();

        switch (event.getAction()) 
        {       
        case MotionEvent.ACTION_DOWN:
            break;

        case MotionEvent.ACTION_MOVE:

            int imgWidth = ball.getWidth();
            Log.e("Image Width -->", "" + imgWidth);
            int imgHeight = ball.getHeight();
            Log.e("Image Height -->", "" + imgHeight);

            int x_cord = (int) event.getRawX();
            System.err.println("Display X code->" + x_cord);
            int y_cord = (int) event.getRawY();
            System.err.println("Display y code->" + y_cord);


            int getX=(int) event.getX();
            System.err.println("Display Here X Value -->"+getX);            
            int getY=(int) event.getY();
            System.err.println("Display Here Y Value -->"+getY);

            if (x_cord < windowwidth && getX < imgWidth ) 
            {               
                x_cord = windowwidth;
                Log.e("If Part X Cord-->", "" + x_cord);
            }
            if (y_cord > windowheight) 
            {
                y_cord = windowheight;
                Log.e("If Part Y Cord-->", "" + y_cord);
            }
            layoutParams.setMargins(imgWidth + incLeft, imgHeight + incTop, imgWidth + incRight, imgHeight + incBottom);
            // layoutParams.setMargins(left, top, right, bottom)
            ball.setLayoutParams(layoutParams);
            break;

        default:
            break;

        }
        return true;
    }

今私は何をすべきか。

4

2 に答える 2

0
   import android.app.Activity;
   import android.graphics.Point;
   import android.os.Bundle;
   import android.view.Display;
   import android.view.MotionEvent;
   import android.view.View;
   import android.widget.ImageView;
   import android.widget.RelativeLayout;

 public class DragMainActivity extends Activity  {
     int windowwidth;
     int windowheight;      
     ImageView ima1,ima2;

     private android.widget.RelativeLayout.LayoutParams layoutParams ;
    // private android.widget.RelativeLayout.LayoutParams layoutParams ;
     //private android.widget.RelativeLayout.LayoutParams layoutParams ;         

     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.main);

        /* Display display = getWindowManager().getDefaultDisplay(); 
         int width = display.getWidth();
         int height = display.getHeight();*/


         windowwidth = getWindowManager().getDefaultDisplay().getWidth()-130; 
         windowheight = getWindowManager().getDefaultDisplay().getHeight()-165;

         System.out.println("width" +windowwidth);
         System.out.println("height" +windowheight);             

         ima1 = (ImageView)findViewById(R.id.imageview1);
         ima1.setOnTouchListener(new View.OnTouchListener() {  

             public boolean onTouch(View v, MotionEvent event) {
                 layoutParams = (RelativeLayout.LayoutParams) ima1.getLayoutParams();

                 switch(event.getAction())

                 {
                     case MotionEvent.ACTION_DOWN:                           
                         break;                   
                     /*case MotionEvent.ACTION_CANCEL:
                         break;*/
                     case MotionEvent.ACTION_MOVE:
                         int x_cord = (int) event.getRawX();
                         int y_cord = (int) event.getRawY();

                         System.out.println("value of x" +x_cord);
                         System.out.println("value of y" +y_cord);            

                         if (x_cord > windowwidth) {
                             x_cord = windowwidth;
                         }
                         if (y_cord > windowheight) {
                             y_cord = windowheight;
                         }
                         layoutParams.leftMargin = x_cord-25;
                         layoutParams.topMargin = y_cord-25;
                  //       layoutParams.rightMargin = x_cord-25;
                   //      layoutParams.bottomMargin = y_cord-25;
                         ima1.setLayoutParams(layoutParams);
                         break;
                     default: break;
                 }  
                 return true;
             }
         });

         ima2 = (ImageView)findViewById(R.id.imageview2);
         ima2.setOnTouchListener(new View.OnTouchListener() {         

             public boolean onTouch(View v, MotionEvent event) {
                 layoutParams = (RelativeLayout.LayoutParams) ima2.getLayoutParams();
                 switch(event.getActionMasked())
                 {
                     case MotionEvent.ACTION_DOWN:
                         break;
                     case MotionEvent.ACTION_MOVE:
                         int x_cord = (int) event.getRawX();
                         int y_cord = (int) event.getRawY();

                         System.out.println("value of x1" +x_cord);
                         System.out.println("value of y1" +y_cord);                          

                         if (x_cord > windowwidth) {
                             x_cord = windowwidth;
                         }
                         if (y_cord > windowheight) {
                             y_cord = windowheight;
                         }
                         layoutParams.leftMargin = x_cord - 25;
                         layoutParams.topMargin = y_cord - 75;
                         ima2.setLayoutParams(layoutParams);
                         break;
                     default: break;
                 }
                 return true;
             }
         });
     }
 }
于 2012-08-03T04:57:28.980 に答える
0

こんにちは私はあなたにサーフェスビューを使用せずにアンドロイド2.2でドラッグアンドドロップのコード全体を提供します。ここにリンクを示します。そこに行き、コードを見て、これを実装します。確かにそれはあなたに役立つでしょう。

リンクは Android2.2でドラッグアンドドロップを実装する方法ですか?

そしてもう1つは http://code.google.com/p/android-drag-and-drop-basic/source/browse/src/edu/sbcc/cs123/draganddropbasic/DragAndDropBasicActivity.javaです

于 2012-08-03T04:58:36.323 に答える