如何将图像适合从相机拍摄的屏幕?我目前有一个预览版,它是所拍摄图像的缩略图版本。我想触摸它并适合整个屏幕。在布局中,我有属性:
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);
时,它会使图像适合微小的缩略图视图。
答案 0 :(得分:0)
3种可能的解决方案,但是对于所有这些解决方案,您需要为视图设置一个新的layoutParams(对于宽度和高度,将它们设置为fillParent):
在imageView上使用“setContentView”将其用作新布局。完成后,在您使用的布局上使用此方法返回到先前的布局。
它需要接管根视图的整个空间。此解决方案取决于活动的布局。例如,如果布局很复杂,请将其包装在framelayout中,然后将视图移动到framelayout,然后设置layoutParams。
将视图设置在所有视图的顶部,然后设置layoutParams.example(在示例中,“view”是您希望在顶部设置的视图,对于您,这个将是“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
答案 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(也在那里)从日期生成图像名称。