我在MotionEvent上旋转图像。当我旋转它时,图像也会缩小。我想在移动事件不多时显示警报对话..
这里我发布了我的代码......
私人ProgressBar distanceBar; 私人按钮回来; private ImageView setAccuracy; float currentDegrees = 0; float currentDistance; float totalDistance = 1000; float totalDegree = 360;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.errandboy_destination);
back = (Button) findViewById(R.id.back);
distanceBar = (ProgressBar) findViewById(R.id.errand_progress);
distanceBar.setMax(1000);
setAccuracy = (ImageView) findViewById(R.id.errandAnim);
OnTouchListener backListener = new OnTouchListener() {
public boolean onTouch (View v, MotionEvent event) {
if (event.getAction()==MotionEvent.ACTION_UP){
finish();
}
return false;
}
};
back.setOnTouchListener(backListener);
setAccuracy.setOnTouchListener(onTableTouched);
}
public android.view.View.OnTouchListener onTableTouched = new android.view.View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_MOVE:
if (currentDegrees > 360) {
currentDegrees = 0;
}
currentDegrees = currentDegrees + 1;
updateRotation(currentDegrees);
System.out.println("Current Degree is:--->" + currentDegrees);
currentDistance = (currentDegrees * totalDistance)
/ totalDegree;
System.out
.println("Current Distance is:--->" + currentDistance);
int progress = (int) currentDistance;
distanceBar.setProgress(progress);
break;
case MotionEvent.ACTION_CANCEL:
AlertDialog.Builder choice = new Builder(getParent());
choice.setTitle("Error");
choice.setMessage("message");
choice.setPositiveButton("Ok",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
return;
}
});
choice.create().show();
break;
}
return true;
}
};
private void updateRotation(double rot) {
float newRot = new Float(rot);
Bitmap bitmapOrg = BitmapFactory.decodeResource(getResources(),R.drawable.anim1);
int width = bitmapOrg.getWidth();
int height = bitmapOrg.getHeight();
int newWidth = 200;
int newHeight = 200;
float scaleWidth = ((float) newWidth) / width;
float scaleHeight = ((float) newHeight) / height;
int centerX = width/2;
int centerY = height/2;
Matrix matrix = new Matrix();
matrix.postScale(scaleWidth, scaleHeight);
matrix.postRotate(newRot);
matrix.postTranslate(centerX, centerY);
matrix.preTranslate(-centerX, -centerY);
Bitmap resizedBitmap = Bitmap.createBitmap(bitmapOrg, 0, 0, width, height, matrix, true);
BitmapDrawable bmd = new BitmapDrawable(resizedBitmap);
setAccuracy.setImageDrawable(bmd);
}
}
我怎样才能克服这个问题?
...谢谢
答案 0 :(得分:1)
在您的情况下使用MotionEvent.ACTION_UP代替MotionEvent.ACTION_CANCEL。
case MotionEvent.ACTION_UP:
AlertDialog.Builder choice = new Builder(getParent());
choice.setTitle("Error");
choice.setMessage("message");
choice.setPositiveButton("Ok",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
return;
}
});
choice.create().show();
break;