}
if(newConfig.orientation == Configuration.ORIENTATION_PORTRAIT)
{
dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
adapt = Bitmap.createBitmap(bmp, 0, 0, dm.widthPixels, dm.heightPixels);
scrollX = 0;
scrollY = 0;
main.invalidate();
Toast.makeText(this, "(" + dm.widthPixels + ", " + dm.heightPixels + ")", Toast.LENGTH_SHORT).show();
}
// 下面这句必须存在,否则会出现异常
super.onConfigurationChanged(newConfig);
}
public boolean onTouchEvent(MotionEvent me)
{
return gestureDetector.onTouchEvent(me);
}
public boolean onDown(MotionEvent me)
{
return true;
}
public boolean onFling(MotionEvent me1, MotionEvent me2, float velocityX, float velocityY)
{
return true;
}
public void onLongPress(MotionEvent me)
{
}
public boolean onScroll(MotionEvent me1, MotionEvent me2, float distanceX, float distanceY)
{
// distanceX 和 distanceY ,分别为叫上次位置的滚动量,可以为正,也可能为负
main.handleScroll(distanceX, distanceY);
return true;
}
public void onShowPress(MotionEvent me)
{
}
public boolean onSingleTapUp(MotionEvent me)
{
return true;
}
class PictureView extends View
{
public PictureView(Context ctx)
{
super(ctx);
}
// 调用 invalidate 方法时,会触发 onDraw 这个方法
protected void onDraw(Canvas canvas)
{
canvas.drawBitmap(adapt, 0, 0, paint);
}
public void handleScroll(float distanceX, float distanceY)
{
// 修正每次滚动后的 scrollX 和 scrollY 的值
scrollX += distanceX;
scrollY += distanceY;
if(scrollX < 0)
{
scrollX = 0;
}
if(scrollX > (X - dm.widthPixels))
{
scrollX = X - dm.widthPixels;
}
if(scrollY < 0)
{
scrollY = 0;
}
if(scrollY > (Y - dm.heightPixels))
{
scrollY = Y - dm.heightPixels;
}
// 重新获取 adapt
adapt = Bi