<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/imageview"
android:scaleType="centerCrop"/>
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/imagecancel"
android:layout_marginBottom="10dp"
android:background="#80000000">
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/imagecaption"
android:hint="Enter a description"
android:textColorHint="#80ffffff"
android:textColor="#ffffff"
android:layout_marginRight="10dp"
android:layout_marginLeft="10dp"/>
</RelativeLayout>
<ImageButton
android:contentDescription="@string/imagecancel"
android:id="@+id/imagecancel"
android:layout_width="wrap_content"
android:layout_height="40dp"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_marginLeft="10dp"
android:layout_marginBottom="10dp"
android:scaleType="fitStart"
android:background="@android:color/transparent"
android:src="@drawable/cancel"/>
<ImageButton
android:contentDescription="@string/imagesave"
android:id="@+id/imagesave"
android:layout_width="wrap_content"
android:layout_height="40dp"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_marginRight="10dp"
android:layout_marginBottom="10dp"
android:scaleType="fitEnd"
android:background="@android:color/transparent"
android:src="@drawable/ok"/>
</RelativeLayout>
爪哇
private void previewCapturedImage() {
try {
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 1;
ExifInterface exif = null;
int orientation = 0;//Since API Level 5
try {
exif = new ExifInterface(fileUri.getPath());
orientation = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL);
} catch (IOException e) {
e.printStackTrace();
}
String exifOrientation = exif.getAttribute(ExifInterface.TAG_ORIENTATION);
Log.i("file path",exifOrientation);
final Bitmap bitmap = BitmapFactory.decodeFile(fileUri.getPath());
previewimage.setImageBitmap(bitmap);
switch(orientation) {
case ExifInterface.ORIENTATION_ROTATE_270:
Log.i("RotateBitmap","270");
RotateBitmap(bitmap, 270);
previewimage.setRotation(270);
break;
case ExifInterface.ORIENTATION_ROTATE_90:
Log.i("RotateBitmap","90");
RotateBitmap(bitmap, 90);
previewimage.setRotation(90);
break;
case ExifInterface.ORIENTATION_ROTATE_180:
Log.i("RotateBitmap","180");
RotateBitmap(bitmap, 180);
previewimage.setRotation(180);
break;
}
} catch (NullPointerException e) {
e.printStackTrace();
}
}
public static Bitmap RotateBitmap(Bitmap source, float angle)
{
Matrix matrix = new Matrix();
matrix.postRotate(angle);
previewimage.setImageBitmap(source);
return Bitmap.createBitmap(source, 0, 0, source.getWidth(), source.getHeight(), matrix, true);
}
此处图片在小屏幕手机中正常填充。但在大屏幕手机图像中没有正确显示。它显示距离顶部2厘米和距离底部2厘米的间隙。图像来自手机摄像头拍照。我想全屏填写图片。如何解决这个问题。
答案 0 :(得分:1)
试试这个
<ImageView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/imageview"
android:scaleType="fitXY"/>
答案 1 :(得分:1)
问题的根源是当前预览区域的侧面比率与您获得的图片的侧面比率之间的差异。您的预览区域在不同的设备上会有所不同(即使在不同方向的同一台设备上 - 由软键和位置引起),您从相机获得的图像与您当前的图像边缘比率很少预习。
您的问题无需任何代码即可解答。只需在一张纸上画一个矩形(非正方形)和一个正方形,然后尝试将它们装入另一个。
矩形(宽或高)代表你的手机,方块代表你从相机获得的图片(它大部分都不是正方形,但我在这里使用正方形使其更清楚地证明)。
如果你采用这两种形状并尝试“适合”。一个到另一个,你将最终得到3种不同的场景:
那么,这个咆哮对你有什么帮助?如果您坚持填满整个屏幕(并且丢失溢出的图像部分),则在获得图像后调整SurfaceView区域,使用它的宽度/高度来计算比率。
如果你真的坚持看到一些代码,it's done here(请参阅setLayoutParams),但要注意,我指向的示例更复杂,涉及自定义相机处理。但总的想法是一样的。
祝你好运
答案 2 :(得分:0)
答案 3 :(得分:0)
更改scaletype
<ImageView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/imageview"
android:scaleType="fitXY"/>