2016-08-15 2 views
0

내 안드로이드 프로젝트에 SeekBar을 사용하여 이미지 크기를 조정했지만 예상대로 작동하지 않습니다. 크기를 조정하는 대신 이미지가 숨기는 것입니다. 여기 내 코드는 다음과 같습니다.안드로이드 SeekBar 이미지 크기 조정이 작동하지 않습니다

seekbarSize.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { 
    @Override 
    public void onProgressChanged(SeekBar seekBar, int progresValue, boolean fromUser) { 
     tmp = (ImageView) findViewById(lastIdImage); 
     tmp.requestLayout(); 
     tmp.getLayoutParams().height = ((500 * progresValue)/100) + 30; 
     tmp.getLayoutParams().width = ((500 * progresValue)/100) + 30; 
    } 

    @Override 
    public void onStartTrackingTouch(SeekBar seekBar) { 
    } 

    @Override 
    public void onStopTrackingTouch(SeekBar seekBar) { 
    } 
}); 

아무도 내가 코드 내부에서 잘못했는지 도와 줄 수 있습니까?

답변

1
private static final int WIDTH_SCALE_RATIO = 10; 
private static final int HEIGHT_SCALE_RATIO = 10; 
private int previousProcess = 0; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    final ImageView imgg = (ImageView) findViewById(R.id.imageView1); 
    ((SeekBar) findViewById(R.id.seekBar1)) 
      .setOnSeekBarChangeListener(new OnSeekBarChangeListener() { 
       @Override 
       public void onStopTrackingTouch(SeekBar arg0) { 
       } 

       @Override 
       public void onStartTrackingTouch(SeekBar arg0) { 
       } 

       @Override 
       public void onProgressChanged(SeekBar seekBar, 
         int progresValue, boolean fromUser) { 
        int diff = progresValue - previousProcess; 
        scaleImage(imgg, diff); 
        previousProcess = progresValue; 
       } 
      }); 
} 

public void scaleImage(ImageView img, int scale) { 
    Bitmap bitmap = ((BitmapDrawable) img.getDrawable()).getBitmap(); 
    float width = bitmap.getWidth(); 
    float height = bitmap.getHeight(); 
    width += scale * WIDTH_SCALE_RATIO; 
    height += scale * HEIGHT_SCALE_RATIO; 
    bitmap = Bitmap.createScaledBitmap(bitmap, (int) width, (int) height, 
      true); 
    img.setImageBitmap(bitmap); 
} 
+0

당신을 도울 수 있습니다 :) –

+0

여기서 무엇을하고 있는지에 대해 좀 더 설명해 주시겠습니까? – AMAN77

+0

@DharaChandarana scaleImage 메서드는 이미지보기 대신 전체 레이아웃을 조정합니다. –

관련 문제