2015-12-18 15 views
8

Quindi sto replicando un'implementazione simile a quella con il fumetto della chat di Facebook e ho creato con successo il contenitore di rilascio per la bolla da eliminare. La funzionalità che sto cercando di ottenere è che dovrei essere in grado di far cadere una bolla in una zona di cancellazione (che sembra essere un'immagine circolare con un segno di croce). Quando trascino la bolla all'interno dell'immagine circolare, spero di ridimensionare l'immagine circolare e ingrandirla. Quindi quando lascio la bolla all'interno dell'immagine ingrandita dovrebbe scomparire. Non sono stato in grado di ridimensionare questa immagine quando aleggi la mia bolla su di essa. La funzionalità di cancellazione è a posto.Ridimensionamento della zona di rilascio per la distruzione delle bolle

desidero indicazioni su ri dimensionamento dinamico immagine circolare zona di rilascio di (espansione e contrazione sulla base oscillato o meno attestata)

Qualsiasi puntatori sono ammessi. Grazie in anticipo.

Immagini qui sotto per la comprensione.

enter image description here

enter image description here

+0

potete inserire i codici e xml rilevanti? –

+0

C'è qualcosa che non si ottiene da http://stackoverflow.com/questions/15975988/what-apis-in-android-is-facebook-using-to-create-chat-heads – James

+0

Stai chiamando? sistema per sapere se la bolla è posizionata all'interno della zona di cancellazione? – Dinash

risposta

-1

Riesci a rilevare l'evento hover?
Si prega di provare questo.

onHover

versionNameTextView.setScaleX(1f); 
versionNameTextView.setScaleY(1f); 
circlerImageView.animate().scaleX(1.5f).scaleY(1.5f).setDuration(500).start(); 

onHoverEnd

versionNameTextView.setScaleX(1.5f); 
versionNameTextView.setScaleY(1.5f); 
circlerImageView.animate().scaleX(1f).scaleY(1f).setDuration(500).start(); 
0

semplicemente modificato il drag and drop del campione a disposizione here per avere il vostro comportamento previsto. Spero che questo ti aiuti.

public class MyNewActivity extends Activity { 
ImageView img; 
String msg; 
private android.widget.RelativeLayout.LayoutParams layoutParams; 
private View target; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.my_drag_drop); 
    img=(ImageView)findViewById(R.id.imageView); 
    target=findViewById(R.id.target); 

    img.setOnLongClickListener(new View.OnLongClickListener() { 
     @Override 
     public boolean onLongClick(View v) { 
      ClipData.Item item = new ClipData.Item((CharSequence)v.getTag()); 
      String[] mimeTypes = {ClipDescription.MIMETYPE_TEXT_PLAIN}; 

      ClipData dragData = new ClipData(v.getTag().toString(),mimeTypes, item); 
      View.DragShadowBuilder myShadow = new View.DragShadowBuilder(img); 

      v.startDrag(dragData,myShadow,null,0); 
      return true; 
     } 
    }); 

    img.setOnDragListener(onDragListener1); 
    target.setOnDragListener(onDragListener1); 

    img.setOnTouchListener(new View.OnTouchListener() { 
     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      if (event.getAction() == MotionEvent.ACTION_DOWN) { 
       ClipData data = ClipData.newPlainText("", ""); 
       View.DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(img); 

       img.startDrag(data, shadowBuilder, img, 0); 
       img.setVisibility(View.INVISIBLE); 
       return true; 
      } 
      else 
      { 
       return false; 
      } 
     } 
    }); 
} 

private boolean isViewScalled=false; 

View.OnDragListener onDragListener1=new View.OnDragListener() { 
    @Override 
    public boolean onDrag(View v, DragEvent event) { 
     switch(event.getAction()) 
     { 
      case DragEvent.ACTION_DRAG_STARTED: 
       Log.d(msg, "Action is DragEvent.ACTION_DRAG_STARTED"); 

       // Do nothing 
       break; 

      case DragEvent.ACTION_DRAG_ENTERED: 
       Log.d(msg, "Action is DragEvent.ACTION_DRAG_ENTERED"); 
       if(!isViewScalled) { 
        target.animate().scaleXBy(.5f).scaleYBy(.5f).start(); 
        isViewScalled=true; 
       } 
       break; 

      case DragEvent.ACTION_DRAG_EXITED : 
       Log.d(msg, "Action is DragEvent.ACTION_DRAG_EXITED"); 
       if(isViewScalled) { 
        target.animate().scaleXBy(-.5f).scaleYBy(-.5f).start(); 
        isViewScalled=false; 
       } 
       break; 

      case DragEvent.ACTION_DRAG_LOCATION : 
       Log.d(msg, "Action is DragEvent.ACTION_DRAG_LOCATION"); 
       break; 

      case DragEvent.ACTION_DRAG_ENDED : 
       Log.d(msg, "Action is DragEvent.ACTION_DRAG_ENDED"); 

       // Do something 
       break; 

      case DragEvent.ACTION_DROP: 
       Log.d(msg, "ACTION_DROP event"); 
       break; 
      default: break; 
     } 
     return true; 
    } 
}; 

}

e il layout

<?xml version="1.0" encoding="utf-8"?> 

<ImageView 
    android:layout_width="75dp" 
    android:layout_height="75dp" 
    android:id="@+id/imageView" android:scaleType="fitXY" 
    android:src="@drawable/abc_btn_radio_material" /> 


<ImageView 
    android:layout_width="125dp" 
    android:layout_height="125dp" android:scaleType="fitXY" 
    android:id="@+id/target" android:layout_centerHorizontal="true" 
    android:src="@drawable/abc_btn_radio_material" android:layout_alignParentBottom="true" />