Андроид – наложение изображений (игральные карты)

Я пытаюсь сделать игровые карты в моей игре перекрытыми, чтобы увидеть только первую половину карты, а другая половина покрыта следующей игровой картой. Единственная карта, которая должна быть полностью видимой, будет последней / самой правой картой.

Я использовал следующий код как с рамкой, так и с relativelayout безрезультатно. Может ли кто-нибудь предложить какие-то предложения?

public int shouldShow(int numberOfCards, int card, int id) { if(card == -1) hide(id); else { findViewById(id).setBackgroundDrawable(deckimages[card]); //findViewById(id).offsetLeftAndRight(findViewById(id).getWidth()* numberOfCards / 2); show(id); //findViewById(id).setPadding(findViewById(id).getWidth()* numberOfCards / 2, 0,0,0); return numberOfCards+1; } return numberOfCards; } 

Я пробовал использовать дополнения и методы смещения, ни один из которых не работает для меня. Но я также заметил, что методы getwidth () и getmeasuredwidth () возвращают 0.

Любые предложения, по которым я должен использовать макет, и почему функции getwidth не работают?

Код xml ниже … было бы больше изображений, чем это, но это то, что я тестировал

 <RelativeLayout android:layout_height="wrap_content" android:layout_width="fill_parent" android:id="@+id/RelativeLayout1"> <ImageView android:id="@+id/imageView2" android:layout_width="wrap_content" android:layout_height="wrap_content"></ImageView> <ImageView android:id="@+id/imageView3" android:layout_width="wrap_content" android:layout_height="wrap_content"></ImageView> </RelativeLayout> 

Я застрял на этом целую вечность и через 4 часа возился с кодом и Googling. Я, наконец, понял решение, и это довольно просто.

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

Вот мой код (программно):

 for(int i=0; i<hand.size();i++){ int c = hand.get(i).getCardResource(); ib = new ImageButton(this); RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); params.addRule(RelativeLayout.ALIGN_TOP, i-1); params.addRule(RelativeLayout.ALIGN_LEFT,i-1); params.leftMargin= 40; ib.setImageResource(c); ib.setClickable(true); ib.setPadding( 3, 3, 3, 3); ib.setId(i); ib.setLayoutParams(params); ll.addView(ib); } 

Вы можете предусмотреть границы представления, преднамеренно несогласованные с размером изображения, и использовать ScaleType для изображения: http://developer.android.com/reference/android/widget/ImageView.ScaleType.html . Например, android:scaleType="fitStart"

Intereting Posts
Кнопка ALLOW не работает после обновления Анимация отмены анимации Единичные тесты частных функций в Android Mockito Uri.parse всегда возвращает null Как позвонить на услугу у получателя зависит от подключенного Интернета или нет? Nexus 6 и MediaPlayer.VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING); Canvas.drawText (…) не печатает строку WifiDirectActivity Изменение образца: Перенесите ArrayList <String> p2p Сбои веб-просмотров в совместном переходе элементов на леденец Проверьте метод onReceivedSslError () WebViewClient, если сертификат подписан из определенного самозаверяющего ЦС Android Datepicker Fragment – Как сделать что-то, когда пользователь устанавливает дату? Использование SMS для проверки номера телефона устройства Отправка JSON в качестве дополнительных данных в широковещательной передаче по протоколу Android через ADB неправильно отформатирована Настройка Robolectric, Android Studio и Gradle для принятия тестового приложения Требуется ли ACCESS_COARSE_LOCATION, если пользователь уже предоставил ACCESS_FINE_LOCATION?