2017-11-20 5 views
0

recyclerviewでの共有要素の遷移の目的の動作を達成しましたが、activityという詳細にはなりましたが、行アイテムをクリックするとわずかな迷惑な遅延が発生しました。SharedElementTransitionビットがrecyclerViewで遅くなりました

public void onRowClick(int position, View view, ImageView sharedImv) { 
    System.out.println("hehe + position : " + position); 

    NoteModel noteModel = noteModelList.get(position); 

    Bitmap bitmap = BitmapFactory.decodeResource(getResources(), noteModel.getPath()); 
    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); 
    bitmap.compress(Bitmap.CompressFormat.PNG, 100, byteArrayOutputStream); 
    byte byteArray[] = byteArrayOutputStream.toByteArray(); 
    Intent intent = new Intent(v.getContext(), DetailedActivity.class); 
    Bundle bundle = new Bundle(); 
    bundle.putString("key", "senpai"); 
    bundle.putString(EXTRA_ANIMAL_IMAGE_TRANSITION_NAME, ViewCompat.getTransitionName(sharedImv)); 
    bundle.putByteArray("picture", byteArray); 
    intent.putExtras(bundle); 
    ActivityOptions activityOptions = ActivityOptions.makeSceneTransitionAnimation(getActivity(), 
      sharedImv, ViewCompat.getTransitionName(sharedImv)); 
    startActivity(intent, activityOptions.toBundle()); 
} 

DetailedActivityClass中:

if (bundle != null) { 
     String key = bundle.getString("key"); 
     String imvTransitionName = bundle.getString(FragOne.EXTRA_ANIMAL_IMAGE_TRANSITION_NAME); 
     imv2.setTransitionName(imvTransitionName); 


     byte byteArray[] = bundle.getByteArray("picture"); 

     if (byteArray != null) { 
      System.out.println(key + imvTransitionName); 
      Bitmap bitmap = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length); 


      Glide.with(getApplicationContext()).asBitmap().load(bitmap).listener(new RequestListener<Bitmap>() { 
       @Override 
       public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Bitmap> target, boolean isFirstResource) { 
        supportStartPostponedEnterTransition(); 
        return false; 
       } 

       @Override 
       public boolean onResourceReady(Bitmap resource, Object model, Target<Bitmap> target, DataSource dataSource, boolean isFirstResource) { 
        supportStartPostponedEnterTransition(); 
        return false; 
       } 
      }).into(imv2); 
     } 

、ここでは、アダプタクラスです:

@Override 
public void onBindViewHolder(MyViewHolder myViewHolder, final int position) { 
    System.out.println("OBV"); 
    if (v != null) { 

     NoteModel noteModel = noteModelList.get(position); 
     myViewHolder.noteRowTextView.setText(noteModel.getTitle()); 
     Glide.with(v.getContext()).load(noteModel.getPath()).into(myViewHolder.imageView); 
     ViewCompat.setTransitionName(myViewHolder.imageView, "imageViewTransName"); 
    } 

} 

答えて

0

母は、私はこれらすべてのビットマップの操作を削除し、単にparcelable実装されており、ドロアブルへの道を提供して、今それは大丈夫です。お元気ですか。

関連する問題