2016-11-28 2 views
1

Ich habe eine Recycler-Ansicht, die Liste der Produkte zeigt, und es gibt ein Einkaufswagen-Symbol in jeder Recycler-Ansicht Zeile Element. Beim Klicken auf das Einkaufswagensymbol möchte ich, dass das Produktbild die Skalierung dupliziert und in die obere rechte Ecke in Einkaufswagensymbol in der Aktionsleiste verschoben wird.Android In den Einkaufswagen hinzufügen Animation von Recyclerview

Mein Ansatz:

eine Image in Reihe Artikel xml von recyclerview Erstellt und machte es zunächst unsichtbar. beim Klicken auf das Einkaufswagen-Symbol von recyclerview machte diese Bildansicht sichtbar und bevölkerte Bildansicht mit Bild-URL und hinzugefügt übersetzen Animation von Start- und Endposition.

Aktuell Ergebnis:

das Bild bewegen innerhalb der jeweiligen Zeile einzelnes Element und verschwindet, sobald sie die Grenze der Reihe Artikel Hits .. ich das Bild bedeutet nicht nicht oben Aktionsleiste Menü erreichen aus Reihe Postens stehen Artikel.

Lösung versucht:

public static void setAllParentsClip(View v, boolean enabled) { 
     while (v.getParent() != null && v.getParent() instanceof ViewGroup) { 
      ViewGroup viewGroup = (ViewGroup) v.getParent(); 
      viewGroup.setClipChildren(enabled); 
      viewGroup.setClipToPadding(enabled); 
      v = viewGroup; 
     } 
    } 

auch manuell alle Eltern in xml:

android:clipChildren="false" 
android:clipToPadding="false" 

Immer noch das Bild verschwindet, nachdem es Grenze Reihe Punkt berührt .. Irgendwelche Vorschläge a sein große Hilfe

Code für mein RecyclerView Adapter:

public class TrendingItemsAdapter extends RecyclerView.Adapter<TrendingItemsAdapter.MyViewHolder> { 

    private List<ProductEventDetail> productEventDetailList; 
    private Context context; 


    public TrendingItemsAdapter (List<ProductEventDetail> productEventDetailList){ 
     this.productEventDetailList=productEventDetailList; 
    } 


    public class MyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { 
     private TextView productName; 
     private TextView progressDisplay; 
     private ImageView imageView, addToCart,animImg; 
     private ProgressBar progressBar; 

     @TargetApi(Build.VERSION_CODES.LOLLIPOP) 
     public MyViewHolder(View view) { 
      super(view); 
      productName=(TextView)view.findViewById(R.id.trending_Product_Name); 
      imageView=(ImageView)view.findViewById(R.id.trending_product_img); 
      addToCart=(ImageView)view.findViewById(R.id.add_to_cart); 
      animImg=(ImageView)view.findViewById(R.id.animProductImg); 
      progressDisplay=(TextView)view.findViewById(R.id.event_progress_value); 
      progressBar=(ProgressBar)view.findViewById(R.id.event_progress); 
      progressBar.setProgressDrawable(context.getDrawable(R.drawable.progress_tint)); 

      addToCart.setOnClickListener(this); 
     } 

     @Override 
     public void onClick(View v) { 
      if(v.getId()==addToCart.getId()){ 

       Toast.makeText(context,productEventDetailList.get(getAdapterPosition()).getProductName(),Toast.LENGTH_SHORT).show(); 
       setAllParentsClip(animImg,false); 

       // Animation code 

       Animations anim = new Animations(); 
       int fromLoc[] = new int[2]; 
       imageView.getLocationOnScreen(fromLoc); 
       animImg.setVisibility(View.VISIBLE); 

       Glide.with(context) 
         .load(productEventDetailList.get(getAdapterPosition()).getProductImageUrl()) 
         .diskCacheStrategy(DiskCacheStrategy.SOURCE) 
         .fitCenter() 
         .into(animImg); 

       float startX = fromLoc[0]; 
       float startY = fromLoc[1]; 
       Animation a = anim.fromAtoB(startX,startY, 1028, 143, animL,2000); 
       animImg.setAnimation(a); 
       a.startNow(); 

      } 



     } 

     Animation.AnimationListener animL = new Animation.AnimationListener() { 

      @Override 
      public void onAnimationStart(Animation animation) { 
      } 

      @Override 
      public void onAnimationRepeat(Animation animation) { 
      } 

      @Override 
      public void onAnimationEnd(Animation animation) { 
       //this is just a method call you can create to delete the animated view or hide it until you need it again. 
       animImg.setVisibility(View.GONE); 
      } 
     }; 
    } 



    @Override 
    public TrendingItemsAdapter.MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 

     context=parent.getContext(); 

     View itemView = LayoutInflater.from(parent.getContext()) 
       .inflate(R.layout.trending_item_row_detail, parent, false); 

     itemView.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       callProductEventDetails(); 
      } 
     }); 


     return new MyViewHolder(itemView); 
    } 

    @Override 
    public void onBindViewHolder(TrendingItemsAdapter.MyViewHolder holder, int position) { 

     ProductEventDetail productEventDetail= productEventDetailList.get(position); 
     holder.productName.setText(productEventDetail.getProductName()+ " xxxx xxxxxxxxxxxxxxxx.."); 
     holder.progressBar.setProgress(productEventDetail.getEventProgressStatus()); 
     holder.progressDisplay.setText(String.valueOf(productEventDetail.getEventProgressStatus())+"% "); 

     Glide.with(context) 
       .load(productEventDetail.getProductImageUrl()) 
       .diskCacheStrategy(DiskCacheStrategy.SOURCE) 
       .fitCenter() 
       .into(holder.imageView); 


    } 

    @Override 
    public int getItemCount() { 
     return productEventDetailList.size(); 
    } 

private void callProductEventDetails(){ 
    Intent intent= new Intent(context, ProductEventDetailActivity.class); 
    intent.putExtra("eventStatus","inProgress"); 
    context.startActivity(intent); 
} 

    public static void setAllParentsClip(View v, boolean enabled) { 
     while (v.getParent() != null && v.getParent() instanceof ViewGroup) { 
      ViewGroup viewGroup = (ViewGroup) v.getParent(); 
      viewGroup.setClipChildren(enabled); 
      viewGroup.setClipToPadding(enabled); 
      v = viewGroup; 
     } 
    } 
    } 
+0

Haben Sie es tun? –

+0

@ FlorescuGeorgeCătălin yeah ... Ich habe es teilweise getan, ich kann das Bild in den Warenkorb mit seiner Größe als statische senden ... aber die Größe ändern, wie es nach oben führt es vom Ziel weg ... aber wenn es ein Bild ist mit statischer Größe bewegt es sich genau in den Warenkorb ... – Moulesh

+0

Mit diesem Code? –

Antwort

0

Ich glaube, Sie suchen den Warenkorb Animation hinzufügen, können Sie Lösung finden Sie hierfly to cart animation

Verwandte Themen