我一直在创建一个应用程序,其中我有imageview,我正在旋转,缩放和拖动图像。触摸每件事都很完美。但这是一个问题。也就是说,由于我的app requiremtnt,我想在屏幕底部设置图像,因为通过将scaletype设置为矩阵不会让图像粘到所需的位置
但是有些人给了我非常好的解决方案,如下所示
imageView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
if (Build.VERSION.SDK_INT >= 16) {
imageView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
} else {
imageView.getViewTreeObserver().removeGlobalOnLayoutListener(this);
}
Drawable drawable = imageView.getDrawable();
Rect rectDrawable = drawable.getBounds();
float leftOffset = (imageView.getMeasuredWidth() - rectDrawable.width()) / 2f;
float topOffset = (imageView.getMeasuredHeight() - rectDrawable.height()) / 1f;
matrix = imageView.getImageMatrix();
Log.d("pixels_are",leftOffset+"top"+topOffset+"matrix"+matrix);
matrix.postTranslate(leftOffset, topOffset);
imageView.setImageMatrix(matrix);
imageView.invalidate();
}
});
这是将图像设置到屏幕的底部,然后当我在10英寸平板电脑上测试此代码时,它再次将图像设置在屏幕顶部
我不知道为什么它只发生在10英寸平板电脑上,而它是在7英寸平板电脑和其他设备上运行。
那我该怎么办?这是什么主要原因?
更新1:** *** 10'设备日志* imageview大小为800宽度和1232px。我通过
得到了这个imageView.getMeasuredWidth()和imageView.getMeasuredHeight()
接下来的事情是抵消和顶部我得到的代码 leftOffset = 40.5,topOffset = 610.0 矩阵为{[1.0,0.0,0.0] [0.0,1.0,0.0] [0.0,0.0,1.0]}
7'设备日志
每个7英寸,每件事都在工作,旋转,缩放和拖动,日志如下
图像视图大小为800宽度和1280像素。我通过
得到了这个imageView.getMeasuredWidth()和imageView.getMeasuredHeight()
接下来的事情是抵消和顶部我得到的代码 leftOffset = -78.5和topOffset = 452.0 矩阵为{[1.0,0.0,0.0] [0.0,1.0,0.0] [0.0,0.0,1.0]}