안드로이드 개발 질문/답변
(글 수 45,052)
현재 과제로 그림판 어플을 제작하고 있는데요. 옵션 메뉴에서 펜 옵션을누르면 다이얼로그가뜨면서 시크바로 펜의 굵기를
조절해서 확인버튼을 누르면 조절한 굵기가 적용되도록 구현하려고 합니다!
현재 다이얼로그 클래스를 따로 만들어서 메인 액티비티와 연결시키려고 하는데 잘 않되는 부분이 있어 질문 올립니다!
좀더 정확히 말씀드리면 조절한 굵기 값을 어떻게 메인 액티비티에서 사용할것인가 입니다!
여기저기서 검색하고 책보고 코딩한거라 좀 코드가 개념이 없더라도 양해부탁드립니다^^:;;;;;;;
먼저 다이얼로그 시크바 - 클래스입니다.
public class PenSize extends Dialog {
private OnDismissListener _listener;
static int pensize;
public PenSize(Context context) {
super(context);
// TODO Auto-generated constructor stub
} @Override
public void onCreate(Bundle savedInstanceState ) {
super.onCreate(savedInstanceState ) ;
setContentView( R.layout.pensize ) ;
setTitle( "펜크기" ) ;
final TextView size = (TextView) findViewById( R.id.volume ) ;
SeekBar seek = (SeekBar) findViewById( R.id.seekbar ) ;
Button ok = (Button) findViewById(R.id.ok);
seek.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
size.setText("펜 크기 : " + progress);
pensize = progress;
} public void onStartTrackingTouch(SeekBar seekBar) {
} public void onStopTrackingTouch(SeekBar seekBar) {
}
});
ok.setOnClickListener( new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if( _listener == null ) {} else {
_listener.onDismiss( PenSize.this ) ;
}
dismiss() ;
}
});
}
public void setOnDismissListener( OnDismissListener $listener ) {
_listener = $listener ;
}
public int getSize() {
return pensize ;
} 그리고 아래는 위 다이얼로그를 불러올 메인 액티비티 코드입니다. 이미 구현해놓은 부분이 많아서 다이얼로그를 불러오는 부분만 올려봅니다!@Override
public void onDismiss(DialogInterface $dialog) {
// TODO Auto-generated method stub
PenSize dialog = (PenSize) $dialog ;
int size = dialog.getSize() ;
mPaint.setStrokeWidth(pen_size);
} @Override
public boolean onOptionsItemSelected(MenuItem item)
{
// 메뉴 선택에 따른 이벤트 처리
switch(item.getItemId()){
case 1:
new PenSize(this)
.show();
break;
/*case 1:
pen_size = 1;
mPaint.setStrokeWidth(pen_size);
break;*/
case 2:
pen_size = 3;
mPaint.setStrokeWidth(pen_size);
break;
case 3:
pen_size = 5;
mPaint.setStrokeWidth(pen_size);
break;
case 4:
pen_size = 10;
mPaint.setStrokeWidth(pen_size);
break;
case 5:
pen_size = 15;
mPaint.setStrokeWidth(pen_size);
break;
case 6:
pen_size = 20;
mPaint.setStrokeWidth(pen_size);
break;
case 7:
new ColorPickerDialog(this, this, mPaint.getColor()).show();
break;
케이스 1번부터 7번은 다이얼로그를 구현하면 없앨예정인 부분입니다!




static으로 pensize를 갖고 계실 거면 따로 클래스 하나 만드셔서 멤버 생성하시는게 더 나을 듯 하네요.
어쨌든 위의 경우는 getSize method 지우시고
onDismiss 안의 내용을 mPaint.setStrokeWidth(Pensize.pensize); 로 바꾸시면 해결이 가능할 것 같습니다.