如何在Viewpager中滑动时刷新画布?

时间:2019-06-26 10:54:43

标签: android android-viewpager android-canvas

我制作了一个可以在viewpager中打开多个图像并在其上添加画布的应用程序。一切正常,但我想在滚动到下一张图像时获得清晰的画布,而上一张图像上的图形保持原样。

在我的应用程序中,所有图像上都显示相同的图形。我希望该图形仅在该图像上是本地的,并且当查看下一个图像时,上一个图形应在该图像上保持,但在该新图像上不应有任何图形。 / p>

    @override
    public void onPageScrollStateChanged(int i)
     {
       if(flag == 1)
       drawing_board.invalidate();
       mCustomPageAdapter.notifyDataSetChanged();
        }
    });

设置颜色。

    red.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
                    drawing_board.setPaint_color(Color.RED);
                    flag = 1;
                    dialog.dismiss();
                }
            });

下一个和上一个按钮代码

     private View.OnClickListener onClickListener(final int i) {
     return new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            if (i > 0) {
                //next page
                if (viewPager.getCurrentItem() < viewPager.getAdapter().getCount() - 1) {
                    viewPager.setCurrentItem(viewPager.getCurrentItem() + 1);
                }
            } else {
                //previous page
                if (viewPager.getCurrentItem() > 0) {
                    viewPager.setCurrentItem(viewPager.getCurrentItem() - 1);
                }
            }
        }
    };

布局

        <android.support.v4.view.ViewPager
        android:id="@+id/pager"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginStart="50dp"
        android:layout_marginEnd="50dp"
        android:layout_weight="0.8"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">
    </android.support.v4.view.ViewPager>

    <com.example.paintapp.paintcanvas
        android:id="@+id/drawing_board"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

适配器

  public class CustomPageAdapter extends PagerAdapter {
  Context mContext;
  LayoutInflater mLayoutInflater;
  CustomPageAdapter(Context context) {
  mContext = context;
  mLayoutInflater = (LayoutInflater) 
  mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
   public int getCount() {
         return mArrayUri.size()
       }

    @Override
    public boolean isViewFromObject(@NonNull View view, @NonNull Object 
    object) {
    return view == ( object);
     }
    @NonNull
    @Override
    public Object instantiateItem(@NonNull ViewGroup container, int 
    position) {
    pos = position;
    View itemView = mLayoutInflater.inflate(R.layout.pager_item, 
    container, false);
    ImageView imageView = itemView.findViewById(R.id.imageView);
    imageView.setImageURI(mArrayUri.get(position));
    container.addView(itemView);
    return itemView;
       }
    @Override
    public void destroyItem(@NonNull ViewGroup container, int position, 
    @NonNull Object object) {
     container.removeView((LinearLayout) object);
    }
   }

0 个答案:

没有答案