Android падает, когда createBitmap называется X или Y координата> 0 - PullRequest
1 голос
/ 05 января 2012

Я написал некоторый код для перемещения растрового изображения в сенсорном событии.К сожалению, код вызывает сбой при вызове createBitmap, и xval или yval - это что-то отличное от 0. Вот код, связанный с этой проблемой.Любая помощь будет оценена:

public class AndroidBitmap  extends Activity {

private int yval=0;
private int xval=0;
Bitmap bitmapOrg;
private int bmpWidth;
private int bmpHeight;


/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.image_main);
    myImageView = (ImageView)findViewById(R.id.imageview);

    bitmapOrg = BitmapFactory.decodeResource(getResources(), R.drawable.android);

    bmpWidth = bitmapOrg.getWidth();
    bmpHeight = bitmapOrg.getHeight();

    drawMatrix();
}

public boolean onTouchEvent(MotionEvent event) {
    int eventaction = event.getAction();

    switch (eventaction) {
        case MotionEvent.ACTION_DOWN: 
            // finger touches the screen
            break;

        case MotionEvent.ACTION_MOVE:
            // finger moves on the screen
            break;

        case MotionEvent.ACTION_UP:   
            // finger leaves the screen
            xval = (int) event.getX();
            yval = (int) event.getY();
            drawMatrix();
            break;
    }
    // tell the system that we handled the event and no further processing is required
    return true; 
} 

private void drawMatrix(){

    Matrix matrix = new Matrix();
    Bitmap resizedBitmap = Bitmap.createBitmap(bitmapOrg, xval, yval,
            bmpWidth, bmpHeight, matrix, true);
    BitmapDrawable bmd = new BitmapDrawable(resizedBitmap);
    myImageView.setImageDrawable(bmd);      
}
}

1 Ответ

2 голосов
/ 05 января 2012

xval или yval - это что угодно, кроме 0. да, это правда. Он должен быть больше 0, иначе он выдаст ошибку IllegalArgumentException, если ширина или высота <= 0. В вашем коде при первом вызове drawMatrix (); затем метод xval и yval передают 0. Таким образом, он выдает ошибку. </p>

...