2017-02-11 93 views
1

在我的應用程序中我有與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?

回答

1

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