我正在使用两个ImageView创建一个Activity。
第一个ImageView在启动时占据了屏幕的一部分,我想要显示另一个ImageView,其内容是我触摸第一个图像和顶部的区域周围的裁剪。
班级:
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()中调用它,它会被绘制在初始图像的顶部吗?
为什么会发生这种情况,以及如何解决这个问题?
答案 0 :(得分:0)
据我了解你的问题,你希望你的一个图像叠加在另一个上。 LinearLayouts以水平或垂直线显示其子项。这不适合用于您的案例,因为它不允许多个子节点占用相同的空间。我尝试使用相对或帧布局。
此外,您最初将第二张图片的可见性设置为gone
,因此不是第一张图片正在其上绘制,而是第二张图片不是&#39 ;直到你在onTouch中拨打setVisibility
,才会被抽出。