我有一个imageview,其图像(here)从资产文件onCreateInstance()加载,同一个图像视图被旋转并加载了从相机here拍摄的图像(使用相机API)拍照)。旋转后,imageview会改变位置,每次拍摄新照片时都会移动。
以下是相对布局结构:
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainPage" >
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="16dip"
android:onClick="uploadFile"
android:text="Upload" />
<TextView
android:id="@+id/ins"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="26dp"
android:text="Please scan the QR code on the package to retrieve the package ID"
android:textAppearance="?android:attr/textAppearanceSmall" />
<Button
android:id="@+id/scan"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/ins"
android:layout_centerHorizontal="true"
android:layout_marginTop="21dp"
android:onClick="scan"
android:text="Scan" />
<Button
android:id="@+id/captureFront"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/button1"
android:layout_centerHorizontal="true"
android:layout_marginBottom="26dp"
android:onClick="onClick"
android:text="Camera" />
<ImageView
android:id="@+id/result"
android:layout_width="200dip"
android:layout_height="150dip"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:contentDescription="@string/imageView"
android:scaleType="fitXY"
android:src="@drawable/ic_launcher" />
</RelativeLayout>
以下代码显示了imageview如何加载图像(以编程方式)
imageView.setImageBitmap(loadDataFromAsset());
public Bitmap loadDataFromAsset() {
InputStream in = null;
try {
in = getAssets().open("signBG.jpeg");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Bitmap bmp = BitmapFactory.decodeStream(in);
return bmp;
}
上述代码通过OnCreateInstance()和
调用以下代码更新了onResume
上的imageview @Override
public void onResume() {
super.onResume();
setImage();
}
当活动恢复时(OnResume())
private void setImage(){
if(constants.picTaken){
bitmap = loadPicture("sign.jpeg", bitmap) ;
uploadButton = (Button)findViewById(R.id.button1);
uploadButton.setEnabled(true);
insLabel = (TextView)findViewById(R.id.ins);
insLabel.setText("Please upload on confirmation");
if (bitmap != null) {
//Toast.makeText(this, "not null", Toast.LENGTH_SHORT).show();
imageView.setImageBitmap(bitmap);
imageView.setPivotX(imageView.getHeight()/2);
imageView.setPivotY(imageView.getWidth()/2);
imageView.setRotation(90);
}
}
}
请参考我已链接的两张图片作为参考。 从资产文件加载时,图像看起来是否一致?
答案 0 :(得分:1)
这几乎是在黑暗中拍摄的,因为在问题中的链接被修复之前我无法看到这两个图像。
问题可能出在旋转上,我相信这是在ImageView
放置在布局中之后发生的,然后围绕它的中心旋转90度。如果旋转枢轴不旋转,那么旋转枢轴就是视图的中心。
如果是这种情况,最好的建议是旋转视图中使用的位图,而不是旋转视图。