このコードは、2.3.5 のスマートフォンでは機能しますが、4.0.3 のタブレットでは機能しません。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
this.setContentView(R.layout.rotate_image);
mRotator = (ImageView) findViewById(R.id.rotateImage_image_rotator);
mGDetector = new GestureDetector(getApplicationContext(), this);
findViewById(R.id.rotateImage_background).setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
return mGDetector.onTouchEvent(event);
}
});
}
@Override
public boolean onDown(MotionEvent e) {
// TODO Auto-generated method stub
return true;
}
@Override
public boolean onFling(MotionEvent start, MotionEvent finish, float velocityX, float velocityY) {
return false;
}
@Override
public void onLongPress(MotionEvent e) {
// TODO Auto-generated method stub
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
float distanceY) {
if(e2.getHistorySize() == 0){
}
else{
if(e2.getX() > e2.getHistoricalX(e2.getHistorySize() -1)){
updateRotation(true);
}
else{
updateRotation(false);
}
}
return true;
}
@Override
public void onShowPress(MotionEvent e) {
// TODO Auto-generated method stub
}
@Override
public boolean onSingleTapUp(MotionEvent e) {
// TODO Auto-generated method stub
return false;
}
タブレットのバグか何かでしょうか?つまり、同じコードで、電話では完全に機能しますが、タブレットには登録されません。Android版だからなのか、それともタブレットだからなのか。
編集:より具体的には、何らかの理由で、関数 onScroll がタブレットで呼び出されないか、1回だけ呼び出されますが、電話では魅力のように機能します