0

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

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);它时,它将使图像适合微小的缩略图视图。

4

2 回答 2

0

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

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

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

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

...
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
于 2012-06-01T19:28:33.237 回答
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 方法(也在那里)从日期生成图像名称。

于 2012-06-01T19:34:45.207 回答