package com.example.imagemove1;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MainActivity extends Activity
{
Character character;
protected void onCreate( Bundle savedInstanceState )
{
super.onCreate( savedInstanceState );
setContentView( R.layout.activity_main );
character = (Character)findViewById( R.id.character );
Button btnLeft = (Button)findViewById( R.id.btnLeft );
btnLeft.setOnClickListener( new OnClickListener()
{
public void onClick( View v )
{
character.move( -1 );
}
} );
Button btnRight = (Button)findViewById( R.id.btnRight );
btnRight.setOnClickListener( new OnClickListener()
{
public void onClick( View v )
{
character.move( 1 );
}
} );
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
package com.example.imagemove1;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.Display;
import android.view.View;
import android.view.WindowManager;
public class Character extends View
{
Paint paint;
Bitmap bitmap;
int X;
int sw; // 스크린넓이
int c; // 이미지 넓이의 절반
@SuppressWarnings("deprecation")
public Character( Context context, AttributeSet attrs )
{
super( context, attrs );
WindowManager wm = (WindowManager)context.getSystemService( Context.WINDOW_SERVICE );
Display display = wm.getDefaultDisplay();
sw = display.getWidth();
bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ball);
c = bitmap.getWidth() / 2;
X = sw/ 2; // 초기 X값을 구한다. (가운데)
}
@Override
protected void onDraw( Canvas canvas )
{
super.onDraw( canvas );
canvas.drawBitmap( bitmap, ( X - c ), 0, paint );
invalidate();
}
public void move( int d )
{
int dx = X + ( 30 * d ); // 왼쪽은 마이너스, 오른쪽은 플러스
if ( dx > c && dx < ( sw - c ) )
{
X = dx;
}
}
}
버튼을 왼쪽 / 오른쪽 버튼을 생성하여 왼쪽 버튼을 누르면 왼쪽으로 한칸씩 이동하구요 오른쪽 버튼을 누르면 오른쪽으로 한칸씩 이동하는 코드를 만들었는데요.. 버튼을 한번 누르면 계속 이동하는 방법은 없는건가요? 만약 있다면 어떤 방법으로 코드를 짜면 좋을까요?
즉, 왼쪽 버튼을 한번 누르면 왼쪽으로 이미지가 계속 이동하고 오른쪽 버튼을 한번 누르게 되면 왼쪽으로 가는 이미지가 오른쪽으로 이동하는 겁니다 ㅠ