Skip to content Skip to sidebar Skip to footer

How To Drag Images Around The Screen

Can anyone help me on how to code program for an image that can be drag around the screen? Can you give me a sample code for it. thanks a lot. And how can i make a game score for i

Solution 1:

imageView.setOnLongClickListener(newOnLongClickListener() {

            publicbooleanonLongClick(View v) {
                modeEdit = false;
                ClipData.Itemitem=newClipData.Item((CharSequence) v.getTag());
                String[] mimeTypes = {ClipDescription.MIMETYPE_TEXT_PLAIN};
                ClipDatadragData=newClipData(v.getTag().toString(), mimeTypes, item);

                // Instantiates the drag shadow builder.DragShadowBuildermyShadow=newMyDragShadowBuilder(treeBitmap);
                v.startDrag(dragData,  // the data to be dragged
                        myShadow,  // the drag shadow builder
                        treeBitmap,      // no need to use local data0// flags (not currently used, set to 0)
                );
                returntrue;
            }
        });

This code below is to set the drag listener

MyDragEventListenermDragListen=newMyDragEventListener();

This is the drag listener

protectedclassMyDragEventListenerimplementsOnDragListener {

        public boolean onDrag(View v, DragEvent event) {
            final int action = event.getAction();

            switch(action) {

                case DragEvent.ACTION_DRAG_STARTED:
                    Log.d(TAG, "FIELD ACTION_DRAG_STARTED");
                    if (event.getClipDescription().hasMimeType(ClipDescription.MIMETYPE_TEXT_PLAIN)) {
                        v.invalidate();
                        return(true);
                    } 
                    else {
                        return(false);
                    }

                case DragEvent.ACTION_DRAG_ENTERED:
                    Log.d(TAG, "FIELD ACTION_DRAG_ENTERED");
                    treePresentInMyView = true;
                    //Toast.makeText(getApplicationContext(), "Dragged data entered", Toast.LENGTH_LONG).show();
                    v.invalidate();
                    return(true);

                case DragEvent.ACTION_DRAG_LOCATION:
                    Log.d(TAG, "FIELD ACTION_DRAG_LOCATION");
                    positionX = event.getX();
                    positionY = event.getY();
                    layoutParams = v.getLayoutParams();
                    return(true);

                case DragEvent.ACTION_DRAG_EXITED:
                    Log.d(TAG, "FIELD ACTION_DRAG_EXITED");
                    modeEdit = false;
                    treePresentInMyView = false;
                    //Toast.makeText(getApplicationContext(), "Dragged data exited", Toast.LENGTH_LONG).show();
                    v.invalidate();
                    return(true);

                case DragEvent.ACTION_DROP:
                    Log.d(TAG, "FIELD ACTION_DROP");
                    keyOfTree = event.getClipDescription().getLabel().toString();
                    Log.d(TAG, "KEY VALUE = "+keyOfTree);

                    final ImageView view = new ImageView(getApplicationContext());
                    String treeWidth = getResources().getString(R.string.treeWidth);
                    String treeHeight = getResources().getString(R.string.treeHeight);

                    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(Integer.parseInt(treeWidth), Integer.parseInt(treeHeight));
                    view.setLayoutParams(params);
                    view.setImageResource(R.drawable.tree1);

                    //to get image width and height:
                    BitmapFactory.Options o = new BitmapFactory.Options();
                    o.inTargetDensity = DisplayMetrics.DENSITY_DEFAULT;
                    Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.tree1, o);
                    int w = bmp.getWidth();
                    int h = bmp.getHeight();

                    Log.d(TAG, "width = " + w + " height = " +h);
                    params.leftMargin = (int) positionX - w;//-w and -h so dragged image placed not at mouseparams.topMargin = (int) positionY - h;//    but where actual image is on map

                    view.setVisibility(View.VISIBLE);
                    openField.addView(view);
                    LinearLayout.LayoutParams paramsOpenField = new LinearLayout.LayoutParams(openFieldWidth, openFieldHeight);
                    openField.setLayoutParams(paramsOpenField);

                    try {
                        Thread.sleep(1000);
                    } 
                    catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    v.invalidate();
                    returntrue;

                case DragEvent.ACTION_DRAG_ENDED:
                    Log.d(TAG, "FIELD ACTION_DRAG_ENDED");
                    v.invalidate();
                    if (event.getResult() & treePresentInMyView) {
                        Log.d(TAG, "(x,y) = ("+positionX+", "+positionY+")");
                        int subSubPlot = 0;
                        if (positionX > openField.measuredWidth/2) { //3 and 4if (positionY > openField.measuredHeight/2) {
                                subSubPlot = 4;
                            }
                            else {
                                subSubPlot = 3;
                            }
                        }
                        else {
                            if (positionY > openField.measuredHeight/2) {
                                subSubPlot = 1;
                            }
                            else {
                                subSubPlot = 2;
                            }
                        }
                        double latitudeOfTree = mValues[0] + (Math.abs(mValues[0] - mValues[2]) / openField.measuredWidth) * positionX;
                        double longitudeOfTree = mValues[1] + (Math.abs(mValues[1] - mValues[3])/ openField.measuredHeight) * positionY;
//                      openField.drawTreeCoordinated(latitudeOfTree, longitudeOfTree, positionX, positionY);returntrue;
                    } 
                    else {
                        returnfalse;
                    }

                default:
                    Log.e(TAG,"Unknown action type received by OnDragListener.");
                break;
            };
            returnfalse;
        }
    };

Post a Comment for "How To Drag Images Around The Screen"