2016-03-06 97 views
0

從回收觀點適配器項目的圖像轉換爲圖像//我有回收觀點如下在工具欄

private void prepareGridRecycleView() { 
     gridRecyclerView.setHasFixedSize(true); 
     SpaceItemGridDecoration itemDecoration = new SpaceItemGridDecoration(10); 
     gridRecyclerView.setClipToPadding(false); 
     gridRecyclerView.addItemDecoration(itemDecoration); 
     adapter = new ShopPageGridViewAdapter(ShopPageContent.this, new ShopPageHeaderGridInterface() { 
      @Override 
      public void onClick(boolean isClicked) { 
       gridRecyclerView.setVisibility(View.INVISIBLE); 
       listRecycleView.setVisibility(View.VISIBLE); 
      } 
     }, new ShopPageHeaderListInterface() { 
      @Override 
      public void onClick(boolean isClicked) { 

      } 
     }, new CartCoordivateInfoHolder() { 
      @Override 
      public void setViewCoordinate(ImageView view, int x, int y) { 
       view.setVisibility(View.VISIBLE); 
       int pos[] = new int[2]; 
       cart.getLocationOnScreen(pos); 
       Log.e("x", String.valueOf(pos[0])); 
       Log.e("y", String.valueOf(pos[1])); 
       view.bringToFront(); 
       Animations anim = new Animations(); 
       Animation a = anim.fromAtoB(20, 30, 6000,6000,null,850); 
       a.setFillAfter(true); 
       view.setAnimation(a); 
       a.startNow(); 
      } 
     }, new ShopPageHeaderHelpInterface() { 
      @Override 
      public void onClick(boolean isClicked) { 
       AlertDialog.Builder builder = new AlertDialog.Builder(ShopPageContent.this); 
       View view = getLayoutInflater().inflate(R.layout.help_dialog, null); 
       builder.setView(view); 
       AlertDialog alertDialog = builder.create(); 
       alertDialog.show(); 
       alertDialog.setCanceledOnTouchOutside(true); 
      } 
     }, new ShopPageHeaderFilterInterface() { 
      @Override 
      public void onClick(boolean isClick) { 
       AlertDialog.Builder builder = new AlertDialog.Builder(ShopPageContent.this); 
       View view = getLayoutInflater().inflate(R.layout.filter_dialog, null); 
       LinearLayout linearLayout = (LinearLayout) view.findViewById(R.id.circle_view_child); 
       RangeSeekbar seekBar = (RangeSeekbar) view.findViewById(R.id.seekbar); 
       seekBar.setTextMarkSize(0); 
       prepareCircleImage(linearLayout); 
       final TextView s = (TextView) view.findViewById(R.id.s); 
       final TextView m = (TextView) view.findViewById(R.id.m); 
       final TextView l = (TextView) view.findViewById(R.id.l); 
       final TextView xl = (TextView) view.findViewById(R.id.xl); 
       final TextView xxl = (TextView) view.findViewById(R.id.xxl); 
       final TextView xxxl = (TextView) view.findViewById(R.id.xxxl); 
       s.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 
         setBackground(s); 
        } 
       }); 
       l.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 
         setBackground(l); 
        } 
       }); 
       m.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 
         setBackground(m); 
        } 
       }); 
       xl.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 
         setBackground(xl); 
        } 
       }); 
       xxl.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 
         setBackground(xxl); 
        } 
       }); 
       xxxl.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 
         setBackground(xxxl); 
        } 
       }); 
       builder.setView(view); 
       AlertDialog alertDialog = builder.create(); 
       alertDialog.show(); 
       alertDialog.setCanceledOnTouchOutside(true); 
      } 
     }); 
     final GridLayoutManager manager = new GridLayoutManager(this, 2); 
     manager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() { 
      @Override 
      public int getSpanSize(int position) { 
       return adapter.isPositionHeader(position) ? manager.getSpanCount() : 1; 
      } 
     }); 
     gridRecyclerView.setAdapter(adapter); 
     gridRecyclerView.setLayoutManager(manager); 
    } 

//回收站視圖適配器似乎如下

public class ShopPageGridViewAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { 
    private static final int TYPE_HEADER = 0; 
    private static final int TYPE_ITEM = 1; 
    private List<String> list = new ArrayList<>(); 
    private Context context; 
    private ShopPageHeaderGridInterface shopPageHeaderGridInterface; 
    private ShopPageHeaderListInterface shopPageHeaderListInterface; 
    private ShopPageHeaderFilterInterface shopPageHeaderFilterInterface; 
    private CartCoordivateInfoHolder cartCoordivateInfoHolder; 
    private ShopPageHeaderHelpInterface shopPageHeaderHelpInterface; 

    public ShopPageGridViewAdapter(Context context, ShopPageHeaderGridInterface shopPageHeaderGridInterface, ShopPageHeaderListInterface shopPageHeaderListInterface, CartCoordivateInfoHolder cartCoordivateInfoHolder, ShopPageHeaderHelpInterface shopPageHeaderHelpInterface, ShopPageHeaderFilterInterface shopPageHeaderFilterInterface) { 
     this.context = context; 
     this.shopPageHeaderGridInterface = shopPageHeaderGridInterface; 
     this.shopPageHeaderListInterface = shopPageHeaderListInterface; 
     this.cartCoordivateInfoHolder = cartCoordivateInfoHolder; 
     this.shopPageHeaderHelpInterface = shopPageHeaderHelpInterface; 
     this.shopPageHeaderFilterInterface = shopPageHeaderFilterInterface; 
     for (int i = 0; i <= 10; i++) { 
      list.add("hello"); 
     } 
    } 

    @Override 
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
     if (viewType == TYPE_HEADER) { 
      View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.shop_page_grid_layout_header, parent, false); 
      final ImageView heroImageView = (ImageView) v.findViewById(R.id.heroImageView); 
      heroImageView.post(new Runnable() { 
       @Override 
       public void run() { 
        heroImageView.getLayoutParams().height = (int) (heroImageView.getWidth() * 0.63); 
       } 
      }); 
      final ImageView stackImage = (ImageView) v.findViewById(R.id.stack_image); 
      ImageView helpImage = (ImageView) v.findViewById(R.id.help); 
      final ImageView filterImage = (ImageView) v.findViewById(R.id.filter_image); 
      stackImage.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        shopPageHeaderGridInterface.onClick(true); 
       } 
      }); 
      final ImageView gridImage = (ImageView) v.findViewById(R.id.grid_image); 
      gridImage.post(new Runnable() { 
       @Override 
       public void run() { 
        gridImage.getLayoutParams().height = (int) (gridImage.getHeight() * 0.80); 
        gridImage.getLayoutParams().width = (int) (gridImage.getWidth() * 0.80); 
        stackImage.getLayoutParams().height = (int) (stackImage.getHeight() * 0.80); 
        stackImage.getLayoutParams().width = (int) (stackImage.getWidth() * 0.80); 
        filterImage.getLayoutParams().height = (int) (filterImage.getHeight() * 0.80); 
        filterImage.getLayoutParams().width = (int) (filterImage.getWidth() * 0.80); 
       } 
      }); 
      gridImage.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        shopPageHeaderListInterface.onClick(true); 
       } 
      }); 
      helpImage.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        shopPageHeaderHelpInterface.onClick(true); 
       } 
      }); 
      filterImage.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        shopPageHeaderFilterInterface.onClick(true); 
       } 
      }); 
      return new VHHeader(v); 
     } else if (viewType == TYPE_ITEM) { 
      View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.shop_page_grid_layout, parent, false); 
      final RelativeLayout relativeLayout = (RelativeLayout) v.findViewById(R.id.grid_parent); 
      final ImageView gridItemImage=(ImageView)v.findViewById(R.id.grid_item_image); 
      new Handler().post(new Runnable() { 
       @Override 
       public void run() { 
        relativeLayout.getLayoutParams().height = (int) (relativeLayout.getWidth() * 1.2); 
        relativeLayout.requestLayout(); 
        gridItemImage.setImageResource(R.drawable.winter_sale); 
       } 
      }); 
      final ImageView cart = (ImageView) v.findViewById(R.id.cart); 
      final ImageView cartNumber = (ImageView) v.findViewById(R.id.cart_number); 

      cart.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        int pos[] = new int[2]; 
        cartNumber.getLocationOnScreen(pos); 
        Log.e("x", String.valueOf(pos[0])); 
        Log.e("y", String.valueOf(pos[1])); 
        cartCoordivateInfoHolder.setViewCoordinate(cartNumber, pos[0], pos[1]); 
       } 
      }); 
      return new VHItem(v); 
     } 
     throw new RuntimeException("there is no type that matches the type " + viewType + " + make sure your using types correctly"); 
    } 

    @Override 
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { 
     if (holder instanceof VHHeader) { 
      VHHeader VHheader = (VHHeader) holder; 
     } else if (holder instanceof VHItem) { 
      VHItem VHitem = (VHItem) holder; 

     } 
    } 

    // need to override this method 
    @Override 
    public int getItemViewType(int position) { 
     if (isPositionHeader(position)) 
      return TYPE_HEADER; 
     return TYPE_ITEM; 
    } 

    public boolean isPositionHeader(int position) { 
     return position == 0; 
    } 

    //increasing getItemcount to 1. This will be the row of header. 
    @Override 
    public int getItemCount() { 
     return list.size() + 1; 
    } 

    class VHHeader extends RecyclerView.ViewHolder { 
     public VHHeader(View itemView) { 
      super(itemView); 
     } 
    } 

    class VHItem extends RecyclerView.ViewHolder { 
     public VHItem(View itemView) { 
      super(itemView); 
     } 
    } 

} 

//因此,我面臨的問題是我在回收站查看項目中有購物車圖像,點擊時圖像應該轉換爲工具欄上的購物車圖標。但是當在回收站視圖中點擊時,購物車中的物品在項目中移動,而不是出現回收查看..

回答

0

那麼你可以在許多方面實現這一點,但我認爲sharedElementTransition只會做的事對你

  1. 使用SharedElementTransition,這使得它更容易,因爲所有的東西會通過Android系統本身來完成,你可以reffer SharedElementTransition

希望它幫助:)

+0

按照文檔SharedElementTransition在兩個活動之間進行,但在我的情況下,圖像在同一活動的工具欄的循環圖和車體內。所以我詳細闡述一下,以便我可以繼續完整的瞭解 –

+0

是的,你可以做的是,當點擊回收站視圖中的一個項目時,導航到其他視圖,在工具欄中顯示圖像。使用這兩個活動之間的共享元素轉換將爲您提供您所需的相同效果 – 1shubhamjoshi1