0

2 つの ImageView を持つアクティビティを作成しています。

最初の ImageView は起動時に画面の一部を占めており、他の ImageView を表示したいと考えています。そのコンテンツは、最初の Image に触れた領域とその上部のトリミングです。

クラス:

public class DetectEyesActivity extends Activity  implements OnTouchListener {  
private ImageView imgView;
private Bitmap imgBitmap;

private ImageView touchView2;
private Bitmap temp;

@Override
public void onCreate(Bundle savedInstanceState) {
    setContentView(R.layout.detecteyeslayout);

    Intent intent = this.getIntent();
    byte[] image = intent.getByteArrayExtra("Image");

    imgView = (ImageView) findViewById(R.id.detectImageView1);
    touchView2 = (ImageView) findViewById(R.id.detectImageView2);

    imgBitmap = BitmapFactory.decodeByteArray(image, 0, image.length);
    imgView.setImageBitmap(imgBitmap);   

    temp = Bitmap.createBitmap(imgBitmap, 200, 200, 200, 200);
    //touchView2.setImageBitmap(temp);

    imgView.setOnTouchListener(this);
}

@Override
public boolean onTouch(View v, MotionEvent event) {
    int y = (int)event.getY();
    int x = (int)event.getX();

    temp = Bitmap.createBitmap(imgBitmap, 200,200, 200, 200);
    touchView2.setImageBitmap(temp);
    touchView2.setVisibility(0);
    touchView2.bringToFront();
    touchView2.layout(x-200, y-200, x-30, y-30);

    return true;
}

}

レイアウト:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <ImageView
        android:id="@+id/detectImageView1"
        android:layout_width="400dp"
        android:layout_height="400dp" />

    <ImageView
        android:id="@+id/detectImageView2"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:visibility="gone" />
</LinearLayout>

でも電話したら

touchView2.setImageBitmap(temp);

onTouch() 内で、ビューはレイアウトの最初の画像の下に描画されます。しかし、onCreate() 内で呼び出すと、最初の画像の上に描画されますか?

なぜこれが起こるのか、どうすればこの問題を解決できますか?

4

1 に答える 1

0

あなたの質問を理解しているように、あなたはあなたの画像の1つを別の画像に重ねたいと思っています。LinearLayouts は、子を水平線または垂直線で表示します。複数の子が同じスペースを占めることができないため、これはあなたの場合に使用するのに適した ViewGroup ではありません。相対レイアウトまたはフレーム レイアウトのいずれかを試してみます。

また、最初に 2 番目の画像の可視性を設定しているため、最初の画像がその上に描画されているわけではなく、onTouchgoneを呼び出すまで 2 番目の画像はまったく描画されていません。setVisibility

于 2012-05-25T17:10:50.800 に答える