Android ImageView适合Screen onTouch

时间:2012-06-01 18:52:47

标签: android onclick imageview ontouchevent image-enlarge

如何将图像适合从相机拍摄的屏幕?我目前有一个预览版,它是所拍摄图像的缩略图版本。我想触摸它并适合整个屏幕。在布局中,我有属性:

android:onClick="previewPhoto"

但我不知道该怎么办。这是我认为我应该做的,但想知道是否有更简单的方法。如果我开始一项新活动,我应该如何完成以下代码?

public void previewPhoto(View view){
    Toast.makeText(this, "Photo touched!", Toast.LENGTH_SHORT).show();
    mImageView.setScaleType(ScaleType.FIT_XY);

    Intent fullScreenIntent = new Intent(view.getContext(),FullImageActivity.class);
    fullScreenIntent.putExtra
    //ProfilePageNormalUser.this.startActivity(fullScreenIntent); 
}

请注意,mImageView是一个保存拍摄照片的对象。当我只使用setScaleType(ScaleType.FIT_XY);时,它会使图像适合微小的缩略图视图。

2 个答案:

答案 0 :(得分:0)

3种可能的解决方案,但是对于所有这些解决方案,您需要为视图设置一个新的layoutParams(对于宽度和高度,将它们设置为fillParent):

  1. 在imageView上使用“setContentView”将其用作新布局。完成后,在您使用的布局上使用此方法返回到先前的布局。

  2. 它需要接管根视图的整个空间。此解决方案取决于活动的布局。例如,如果布局很复杂,请将其包装在framelayout中,然后将视图移动到framelayout,然后设置layoutParams。

  3. 将视图设置在所有视图的顶部,然后设置layoutParams.example(在示例中,“view”是您希望在顶部设置的视图,对于您,这个将是“mImageView”):

  4. ...
    final View view=findViewById(R.id.view1);
    final WindowManager.LayoutParams layoutParams=new WindowManager.LayoutParams();
    layoutParams.gravity=Gravity.TOP|Gravity.LEFT;
    layoutParams.width=view.getLayoutParams().width;
    layoutParams.height=view.getLayoutParams().height;
    layoutParams.flags=WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
    layoutParams.flags|=WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE;
    final ViewGroup parent=(ViewGroup)view.getParent();
    parent.removeView(view);
    final WindowManager windowManager=(WindowManager)getSystemService(Context.WINDOW_SERVICE);
    windowManager.addView(view,layoutParams);
    // TODO handle overlapping title bar and/or action bar if needed
    

答案 1 :(得分:0)

如果您只需要全屏显示照片而不需要自定义布局/按钮,则可以使用以下代码启动图库应用程序(或支持显示图像的任何其他第三方应用程序):

Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.parse("file://" + picturePath),"image/*");
startActivity(intent);  

编辑:

启动相机时可以设置picturePath,因此您可以知道图像的存储位置。请在这里查看takePhotoFromCamera方法:

https://github.com/miguelrodelas/Android-Snippets/blob/master/ImageSnippets.java

此方法返回图片路径。它使用方法getOutputMediaFile(也在那里)从日期生成图像名称。