Android开发:水平方向和垂直方向同时滚动(二)

2014-11-24 11:36:40 来源: 作者: 浏览: 6
Toast.makeText(this, "(" + dm.widthPixels + ", " + dm.heightPixels + ")", Toast.LENGTH_SHORT).show();


}



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

-->

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: