我制作了一个可以在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);
}
}