2014-07-25 121 views
0

我想通過使用seekbar調整圖像大小。 Seekbar正在工作,但沒有給出任何好的結果。使用下面的代碼,圖像被調整大小,但只是當您第一次更改seekbar的進度時。請幫助如何使用seekbar調整圖像大小?

搜索欄收聽

seekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { 

     @Override 
     public void onStopTrackingTouch(SeekBar arg0) { 
      // TODO Auto-generated method stub 

     } 

     @Override 
     public void onStartTrackingTouch(SeekBar arg0) { 
      // TODO Auto-generated method stub 

     } 

     @Override 
     public void onProgressChanged(SeekBar seekBar, int progresValue, 
       boolean fromUser) { 
      // TODO Auto-generated method stub 
      progresValue = progress; 
      resizeImage(image, progresValue); 
     } 
    }); 

功能來調整圖像

public void resizeImage(Bitmap bitmap, int progress) { 
    Bitmap bitmapSource = bitmap; 
    float bHeight = bitmapSource.getHeight(); 
    float bWidth = bitmapSource.getWidth(); 
    float factorH = progress/(float) bHeight; 
    float factorW = progress/(float) bWidth; 
    float factorToUse = (factorH > factorW) ? factorW : factorH; 
    Bitmap bm = Bitmap.createScaledBitmap(bitmapSource, 
      (int)(bWidth * factorToUse), (int)(bHeight * factorToUse), 
      false); 
    qImage.setImageBitmap(bm); 
} 
+0

我猜主要的問題是這一行:'progresValue =進展;'。 –

+0

remove progresValue = progress;這條線再次檢查。 –

+0

去這裏http://stackoverflow.com/questions/24968514/scale-bitmap-through-seekbar 同樣的問題,並顯示我的答案。 –

回答

0
final SeekBar sk1 = (SeekBar) findViewById(R.id.seekBar1); 
       sk1.setMax(500); 
       sk1.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {  

           public void onStopTrackingTouch(SeekBar seekBar) {  
            // TODO Auto-generated method stub  
           }  

           public void onStartTrackingTouch(SeekBar seekBar) {  
            // TODO Auto-generated method stub 

           }  

           public void onProgressChanged(SeekBar seekBar, int progress,boolean fromUser) {  
            // TODO Auto-generated method stub  



        img.setScaleType(ImageView.ScaleType.CENTER_INSIDE); 
         RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(progress,progress); 
         img.setLayoutParams(params); 

         img.setMinimumWidth(progress); 
         img.setMinimumHeight(progress); 






           }  
          });