저는 비트 맵에 2 개의 원을 배치하고자하는 앱을 가지고 있습니다. 반경을 줄이거 나 반경을 줄이기위한 단추가 두 개 있습니다. 활동에서 xml에서 버튼이 부 풀립니다. 활동보기는 사용자 정의보기입니다. 보기에 표시 할 단추를 얻을 수 있으며 그에 따라 반경 변수가 적절하게 변경됩니다. 여태까지는 그런대로 잘됐다. 두 단추 중 하나를 클릭하면보기를 무효화 할 수 없습니다. 무슨 일이 일어나야하는지, 버튼을 클릭하면 반경이 변경된 다음 반경이 변경된 캔버스가 다시 그려집니다. onclick()에서 무효화를 호출하려면 어떻게해야합니까? 이것이 최선의 방법인지 확실하지 않습니다. 감사. .맞춤보기를 활동에서 무효화하는 방법
import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.view.View.OnClickListener;
import android.widget.Button;
public class Jjilapp extends Activity {
private static final String TAG = "*********jjil";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.touchview);
final TouchView touchView = (TouchView)findViewById(R.id.touchview);
final HorizontalSlider slider = (HorizontalSlider)findViewById(R.id.slider);
touchView.initSlider(slider);
Button plus = (Button)findViewById(R.id.plus);
plus.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Log.e(TAG, "onClickplus");
TouchView.setRadius(TouchView.getRadius() + 5);
Log.e(TAG, "radius = "+TouchView.getRadius());
}}) ;
Button minus = (Button)findViewById(R.id.minus);
minus.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
TouchView.setRadius(TouchView.getRadius() - 5);
Log.e(TAG, "radius = "+TouchView.getRadius());
TouchView.invalidate();// DOESN'T WORK***************
}}) ;
}//end of oncreate
}//end of jjilapp
.
public class TouchView extends View{
private static int radius = 50;
public TouchView(Context context) {
super(context);
}
public TouchView(Context context, AttributeSet attr) {
super(context,attr);
Log.e(TAG, "++++++++++ inside touchview constructor");
pTouch = new Paint(Paint.ANTI_ALIAS_FLAG);
pTouch.setXfermode(new PorterDuffXfermode(Mode.SRC_OUT));
pTouch.setColor(Color.TRANSPARENT);
pTouch.setStyle(Paint.Style.STROKE);
}// end of touchView constructor
@Override
public void onDraw(Canvas canvas){
super.onDraw(canvas);
Log.e(TAG, "******about to draw bgr ");
canvas.drawBitmap(bgr, 0, 0, null);
canvas.drawCircle(centreX, centreY, radius,pTouch);
canvas.drawCircle(centreA, centreB, radius,pTouch);
}
}//end of onDraw
public static int getRadius() {
return radius;
}
public static void setRadius(int r) {
radius = r;
}
}
나는 혼란 스럽다. touchView.invalidate();가 잘못되었습니다. – mibollma