matrix.postTranslate在平板电脑10英寸

时间:2015-09-23 06:37:45

标签: android uiimageview

我一直在创建一个应用程序,其中我有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]}

0 个答案:

没有答案