2015-02-14 2 views
1

У меня возникла проблема с методом tottront. Я использую сразу несколько изображений. Все движется непрерывно. Я хочу изменить z индекс изображений зависит от их координат. Есть ли способ для этого?Принесите несколько изображений спереди по порядку

Я могу проверить координаты всех изображений, когда я перемещаю изображение. И используйте приведение в порядок ... но решение мне не кажется ясным.

Редактировать:

Я добавил код. Расчеты не так важны. rl - относительная компоновка. Когда я нажимаю на rl, создается изображение. Проблема в том, когда я создаю образ, Он приходит по старому. Я хочу, какое изображение имеет большее значение индекса y. Будет впереди других.

Изображение: http://i.hizliresim.com/blkyzj.jpg

Шаг 1: Я создал зеленый квадрат. Шаг 2: Я создал коричневый квадрат. -> Браун находится позади зеленого, потому что зеленый цвет имеет большее значение y. Я могу проверять координаты y каждый раз, когда создаю изображение, но изображения также перемещаются. Проблема в том, чтобы проверять значения y и выполнять их при каждом движении. Кроме того, есть 30 40 изображений ... Есть ли способ сделать sth как 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))); 

     } 
+0

Не могли бы вы предоставить код? Вы пытаетесь создать многоуровневый эффект, когда у вас несколько каскадированных изображений на экране? – mithunm93

ответ

0

Заканчивать LayerDrawable, которая управляет много и вводимого коэффициента вы можете установить, какой слой находится сверху на основании порядка массива. Это может потребовать немного манипуляции с массивами, но я думаю, что это относительно легкий способ отслеживать слои. вы можете легко проверить местоположение извлекаемого на экране и изменить порядок массива в соответствии с вашими потребностями.

+0

Спасибо, я ищу :) Я надеюсь, что это поможет мне – nadirg

+0

Дайте мне знать, как это происходит :) – mithunm93

Смежные вопросы