将多个图像按顺序放在前面
Bring multiple images front in order
我对 bringtofront 方法有疑问。
我一次使用很多图像。一切动作不停。
我想根据坐标更改图像的 z 索引。
有什么办法吗?
我可能会在移动图像时检查每个图像的坐标。并按顺序使用 bringtofront...但解决方案对我来说似乎不太清楚。
编辑:
我添加了一些代码。计算不是那么重要。 rl 是相对布局。当我点击 rl 时,会创建一个图像。问题是当我创建一个图像时,它是旧的。
我想要,哪个图像具有更大的 y 索引值。会在别人面前。
一张图片:http://i.hizliresim.com/blkyzj.jpg
第 1 步:我创建了绿色方块。
第 2 步:我创建了棕色正方形。
-> 棕色在绿色的后面,因为绿色有更大的 y 值。
我可能会在每次创建图像时检查 y 坐标,但图像也会移动。检查 y 值并在每次移动时都放在前面是有问题的。此外还有30 40张图片...
有什么办法可以做到 image.zindex = ycoordinate*-1;
rl.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View arg0, MotionEvent arg1) {
if (arg1.getAction() == MotionEvent.ACTION_DOWN) {
final int finalX = (int) (Math.floor(arg1.getX() - (width * 5.93667 / 100))/(width*12.53290/100));
final int finalY = (int) (Math.floor(arg1.getY() - (height * 11.04784 / 100))/(height*7.73524/100));
characters.add(new Character());
characters.get(characters.size()-1).image = new ImageView(InPlay.this);
characters.get(characters.size()-1).image.setScaleType(ImageView.ScaleType.FIT_XY);
characters.get(characters.size()-1).image.setBackgroundResource(getId(towerid[activet], R.drawable.class));
characters.get(characters.size()-1).anim = (AnimationDrawable) characters.get(characters.size()-1).image.getBackground();
rl.addView(characters.get(characters.size()-1).image, characters.get(characters.size()-1).lp);
characters.get(characters.size()-1).image.getLayoutParams().width = (int) (width*12.53290/100) + (int)(characters.get(characters.size()-1).size * (width/10));
characters.get(characters.size()-1).image.getLayoutParams().height = (int) (height*7.73524/100) + (int)(characters.get(characters.size()-1).size * (height/10));
characters.get(characters.size() - 1).x= (float) ((finalX * (width*12.53290/100))+ (width * 5.93667 / 100)) - (float)(characters.get(characters.size()-1).size * (width/20));
characters.get(characters.size() - 1).y= (float) ((finalY * (height*7.73524/100))+ (height * 11.04784 / 100)) - (float)(characters.get(characters.size()-1).size * (height/10));
characters.get(characters.size()-1).image.setX((float) ((finalX * (width*12.53290/100))+ (width * 5.93667 / 100)) -(float)(characters.get(characters.size()-1).size * (width/20)));
characters.get(characters.size()-1).image.setY((float) ((finalY * (height*7.73524/100))+ (height * 11.04784 / 100)) - (float)(characters.get(characters.size()-1).size * (height/10)));
}
查看LayerDrawable,它管理着很多Drawable,你可以根据数组顺序设置哪个层在最上面。这可能需要一些数组操作,但我认为这是一种跟踪图层的相对简单的方法。您可以轻松检查可绘制对象在屏幕上的位置并更改数组顺序以满足您的需要。
我对 bringtofront 方法有疑问。 我一次使用很多图像。一切动作不停。 我想根据坐标更改图像的 z 索引。 有什么办法吗?
我可能会在移动图像时检查每个图像的坐标。并按顺序使用 bringtofront...但解决方案对我来说似乎不太清楚。
编辑:
我添加了一些代码。计算不是那么重要。 rl 是相对布局。当我点击 rl 时,会创建一个图像。问题是当我创建一个图像时,它是旧的。 我想要,哪个图像具有更大的 y 索引值。会在别人面前。
一张图片:http://i.hizliresim.com/blkyzj.jpg
第 1 步:我创建了绿色方块。 第 2 步:我创建了棕色正方形。 -> 棕色在绿色的后面,因为绿色有更大的 y 值。 我可能会在每次创建图像时检查 y 坐标,但图像也会移动。检查 y 值并在每次移动时都放在前面是有问题的。此外还有30 40张图片... 有什么办法可以做到 image.zindex = ycoordinate*-1;
rl.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View arg0, MotionEvent arg1) {
if (arg1.getAction() == MotionEvent.ACTION_DOWN) {
final int finalX = (int) (Math.floor(arg1.getX() - (width * 5.93667 / 100))/(width*12.53290/100));
final int finalY = (int) (Math.floor(arg1.getY() - (height * 11.04784 / 100))/(height*7.73524/100));
characters.add(new Character());
characters.get(characters.size()-1).image = new ImageView(InPlay.this);
characters.get(characters.size()-1).image.setScaleType(ImageView.ScaleType.FIT_XY);
characters.get(characters.size()-1).image.setBackgroundResource(getId(towerid[activet], R.drawable.class));
characters.get(characters.size()-1).anim = (AnimationDrawable) characters.get(characters.size()-1).image.getBackground();
rl.addView(characters.get(characters.size()-1).image, characters.get(characters.size()-1).lp);
characters.get(characters.size()-1).image.getLayoutParams().width = (int) (width*12.53290/100) + (int)(characters.get(characters.size()-1).size * (width/10));
characters.get(characters.size()-1).image.getLayoutParams().height = (int) (height*7.73524/100) + (int)(characters.get(characters.size()-1).size * (height/10));
characters.get(characters.size() - 1).x= (float) ((finalX * (width*12.53290/100))+ (width * 5.93667 / 100)) - (float)(characters.get(characters.size()-1).size * (width/20));
characters.get(characters.size() - 1).y= (float) ((finalY * (height*7.73524/100))+ (height * 11.04784 / 100)) - (float)(characters.get(characters.size()-1).size * (height/10));
characters.get(characters.size()-1).image.setX((float) ((finalX * (width*12.53290/100))+ (width * 5.93667 / 100)) -(float)(characters.get(characters.size()-1).size * (width/20)));
characters.get(characters.size()-1).image.setY((float) ((finalY * (height*7.73524/100))+ (height * 11.04784 / 100)) - (float)(characters.get(characters.size()-1).size * (height/10)));
}
查看LayerDrawable,它管理着很多Drawable,你可以根据数组顺序设置哪个层在最上面。这可能需要一些数组操作,但我认为这是一种跟踪图层的相对简单的方法。您可以轻松检查可绘制对象在屏幕上的位置并更改数组顺序以满足您的需要。