簡體   English   中英

布局在onTouch()內不起作用

[英]Layout doesn't work inside onTouch()

我用兩個ImageViews創建一個Activity。

第一個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()中調用它,它是否會繪制在初始圖像的頂部?

為什么會發生這種情況,如何解決這個問題?

據我了解您的問題,您希望其中一張圖像重疊在另一張圖像上。 LinearLayouts以水平或垂直線顯示其子級。 這不是適合您的案例使用的ViewGroup,因為它不允許多個子對象占用相同的空間。 我會嘗試相對或框架布局。

另外,您已經將第二張圖片的可見性設置為最初gone ,因此並不是在第一張圖片上繪制第一張圖片,而是直到您在onTouch中調用setVisibility才完全繪制第二張圖片。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM