2015-12-18 7 views
8

So repliziere ich eine ähnliche Implementierung wie die mit der Facebook-Chat-Blase und erfolgreich erstellt den Drop-Container für die Blase fallengelassen werden. Die Funktionalität, die ich erreichen möchte, ist, dass ich in der Lage sein sollte, eine Blase in einer Löschzone (die zufällig ein kreisförmiges Bild mit einer Kreuzmarkierung ist) fallen zu lassen. Wenn ich die Blase in das kreisförmige Bild ziehe, hoffe ich, das kreisförmige Bild zu vergrößern und es größer zu machen. Wenn ich also die Blase innerhalb des vergrößerten Bildes verlasse, sollte sie verschwinden. Ich bin nicht in der Lage, dieses Bild zu skalieren, wenn ich meine Blase darüber schwebe. Die Funktionalität des Löschens ist vorhanden.Größenänderung der Drop-Zone für Bubble zerstören

Ich möchte Zeiger auf dynamische Wieder Dimensionierung der Kreis Drop-Zone Bild (Ausdehnen und Zusammenziehen auf Basis schwebte oder nicht schwebte)

Alle Hinweise sind willkommen. Danke im Voraus.

Bilder unten für das Verständnis.

enter image description here

enter image description here

+0

können Sie relevante Codes und xml posten? –

+0

Gibt es etwas, was Sie nicht bekommen von http://stackoverflow.com/questions/15975988/what-apis-in-android-is-facebook-using-to-create-chat-heads – James

+0

Haben Sie einen Rückruf zurück System zu wissen, ob die Blase in der Löschzone platziert ist? – Dinash

Antwort

-1

Können Sie den Hover-Ereignis erkennen?
Bitte versuchen Sie es.

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

einfach per Drag & Drop geändert Probe verfügbar here Ihr gewünschtes Verhalten zu haben. Hoffe das hilft.

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; 
    } 
}; 

}

und Plan

<?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" />