我正在使用来自GitHub的MikeOrtiz TouchImageView
。这是链接TouchImageView
我试图仅在横向方向上将宽度设置为屏幕 这是一张图片来展示我想要做的事情。
我想要这个
这是一些代码。
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
viewWidth = MeasureSpec.getSize(widthMeasureSpec);
viewHeight = MeasureSpec.getSize(heightMeasureSpec);
//
// Rescales image on rotation
//
if (oldMeasuredHeight == viewWidth && oldMeasuredHeight == viewHeight
|| viewWidth == 0 || viewHeight == 0)
return;
oldMeasuredHeight = viewHeight;
oldMeasuredWidth = viewWidth;
if (saveScale == 1) {
// Fit to screen.
float scale;
Drawable drawable = getDrawable();
if (drawable == null || drawable.getIntrinsicWidth() == 0
|| drawable.getIntrinsicHeight() == 0)
return;
int bmWidth = drawable.getIntrinsicWidth();
int bmHeight = drawable.getIntrinsicHeight();
Log.d("bmSize", "bmWidth: " + bmWidth + " bmHeight : " + bmHeight);
float scaleX = (float) viewWidth / (float) bmWidth;
float scaleY = (float) viewHeight / (float) bmHeight;
scale = Math.min(scaleX, scaleY);
matrix.setScale(scale , scale );
// Center the image
float redundantYSpace = (float) viewHeight
- (scale * (float) bmHeight);
float redundantXSpace = (float) viewWidth
- (scale * (float) bmWidth);
redundantYSpace /= (float) 2;
redundantXSpace /= (float) 2;
matrix.postTranslate(redundantXSpace, redundantYSpace);
origWidth = viewWidth - 2 * redundantXSpace;
origHeight = viewHeight - 2 * redundantYSpace;
setImageMatrix(matrix);
}
fixTrans();
}
谢谢
答案 0 :(得分:0)
您已在res layout-land中创建一个文件夹,然后在其中创建一个具有相同名称的xml文件,并在landsacpe模式下根据需要设置UI,它非常适合您
如果您将home.xml放在layout-port文件夹中,当您的设备处于纵向时,它将使用以下文件:layout-port / home.xml。
如果您将home.xml放在layout-land文件夹中,当您的设备处于横向时,它将使用以下文件:layout-land / home.xml。
对于纵向和横向等不同方向模式的含义...我们使用两个home.xml文件;一个在layout-port中,另一个在layout-land中。另一方面,如果要为两者使用相同的布局文件,只需将home.xml放在布局文件夹中,然后将其从layout-land和layout-port中删除即可。