使用SeekBar动态更新ImageView中的圆圈大小 - Android

问题描述:

在我的应用程序中我有与seekbar对话框,它将大小设置为我的绘画笔刷,在此下方,我想对此大小进行简单预览。我设法在这个seekbar下面创建ImageView并在里面画一个圆圈。只要我取得比以前更大的进展,一切都可以正常进行,圈子就像它应该的那样动态增长,但是当我降低进度时,什么都不会发生。我想,每当我改变进度的价值时,新的圈子就出现在旧圈子上,所以当我想让圈子变小时就看不到。我试过了setImageBitmap(null)setImageResource(0)等方法,但没有奏效。 我的代码如下所示:使用SeekBar动态更新ImageView中的圆圈大小 - Android

LayoutInflater layoutInflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      View view = layoutInflater.inflate(R.layout.brush_size,null); 
      AlertDialog.Builder builder = new AlertDialog.Builder(this) 
        .setView(view) 
        .setTitle("Change brush size"); 
      alertDialog = builder.create(); 
      alertDialog.show(); 
      final ImageView imageView = (ImageView)view.findViewById(R.id.image_view); 
      final Bitmap preview = Bitmap.createBitmap(100,100,Bitmap.Config.ARGB_8888); 
      final Canvas canvas = new Canvas(preview); 
      final Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); 
      paint.setColor(mPaintView.getColor()); 
      SeekBar sb = (SeekBar)view.findViewById(R.id.seekBar); 
      sb.setMax(50); 
      sb.setProgress(mPaintView.getSize()); 
      sb.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { 
       @Override 
       public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { 
        mPaintView.setSize(progress); 
        canvas.drawCircle(50,50,mPaintView.getSize(),paint); 
        imageView.setImageBitmap(preview); 
       } 

有没有办法真正清除我的ImageView,每次我改变进度条,所以小圆圈可以visable?

Color.TRANSPARENTPorterDuff.Mode.CLEAR参数绘图本应该做的伎俩。

@Override 
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { 
    mPaintView.setSize(progress); 
    canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR) 
    canvas.drawCircle(50,50,mPaintView.getSize(),paint); 
    imageView.setImageBitmap(preview); 
} 
+0

非常感谢你,工作就像一个魅力! – BednarQ