代码之家  ›  专栏  ›  技术社区  ›  Suragch Shmidt

touchImageView只有在捏一下手势后才显示图像

  •  0
  • Suragch Shmidt  · 技术社区  · 6 年前

    我正在使用自定义视图 TouchImageView . 但是,当我设置位图时,它不会显示图像,除非我在上面做了一个捏手势。

    public class PhotoOverlayActivity extends AppCompatActivity {
    
        public static final String CURRENT_MESSAGE_KEY = "message";
    
        private static final int IMAGE_REQUEST_CODE = 0;
    
        String currentMessage;
        private Bitmap bitmap;
        private TouchImageView mImageView;
    
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_photo_overlay);
    
            setupToolbar();
            setupImageView();
    
            currentMessage = getIntent().getStringExtra(CURRENT_MESSAGE_KEY);
            chooseImage();
        }
    
        private void setupToolbar() {
            Toolbar toolbar = findViewById(R.id.toolbar);
            setSupportActionBar(toolbar);
            ActionBar actionBar = getSupportActionBar();
            if (actionBar != null) {
                actionBar.setDisplayHomeAsUpEnabled(true);
                actionBar.setDisplayShowHomeEnabled(true);
                actionBar.setTitle("");
            }
        }
    
        private void setupImageView() {
            mImageView = findViewById(R.id.imageView);
    
        }
    
        private void chooseImage() {
            Intent intent = new Intent();
            intent.setType("image/*");
            intent.setAction(Intent.ACTION_GET_CONTENT);
            intent.addCategory(Intent.CATEGORY_OPENABLE);
            startActivityForResult(intent, IMAGE_REQUEST_CODE);
        }
    
        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            if (requestCode == IMAGE_REQUEST_CODE && resultCode == Activity.RESULT_OK)
                try {
                    if (bitmap != null) {
                        bitmap.recycle();
                    }
                    InputStream stream = getContentResolver().openInputStream(data.getData());
                    bitmap = BitmapFactory.decodeStream(stream);
                    stream.close();
                    int nh = (int) (bitmap.getHeight() * (512.0 / bitmap.getWidth()));
                    Bitmap scaled = Bitmap.createScaledBitmap(bitmap, 512, nh, true);
                    mImageView.setImageBitmap(scaled);
                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            super.onActivityResult(requestCode, resultCode, data);
        }
    
    }
    

    我终于找到了隐藏的解决方案 here ,所以我把我的答案贴在下面。

    1 回复  |  直到 6 年前
        1
  •  0
  •   Suragch Shmidt    6 年前

    打电话后

    mImageView.setImageBitmap(yourBitmap);
    

    mImageView.setZoom(1f);
    

    另一种选择是修改源代码以执行相同的操作,因为 TouchImageView 类无论如何都包含在项目中。

    多亏了 this post 为了这个主意。