0

アセットファイル onCreateInstance() から画像 (ここ) が読み込まれる画像ビューがあり、同じ画像ビューが回転し、ここでカメラから撮影した画像が読み込まれます(撮影した写真でカメラ API を使用)。イメージビューは、回転すると位置が変わり、新しい写真を撮るたびに移動します。

相対的なレイアウト構造は次のとおりです。

<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() を介して呼び出され、

次のコードは、imageview onResume を更新します。

    @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);




        }
    }
}

参考までに、私がリンクした2つの画像を参照してください。アセット ファイルからの読み込みと同じように、画像に一貫性がありますか?

4

1 に答える 1

1

質問でリンクが修正されるまで両方の画像を見ることができないため、これはほとんど暗闇の中でのショットです.

問題は、レイアウトに配置された後に発生していると思われる回転にある可能性があり、そのImageView中心を中心に90度回転しました。ここで、回転されていない場合、その回転ピボットがビューの中心になります。

その場合、ビューを回転させるのではなく、ビューで使用されているビットマップを回転させることをお勧めします。

于 2013-09-17T10:13:03.680 に答える