android - overlappende afbeeldingen (speelkaarten)

Ik probeer de speelkaarten in mijn spel zodanig te laten overlappen dat alleen de eerste helft van een kaart wordt gezien en de andere helft wordt bedekt door de volgende speelkaart. De enige kaart die volledig zichtbaar moet zijn, is de laatste/meest rechtse kaart.

Ik heb de volgende code met zowel framelayout als relativelayout nutteloos gebruikt. kan iemand wat suggesties doen?

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;
}

ik heb geprobeerd de vulling en de offsetmethoden te gebruiken die geen van beide voor mij werken. maar ik heb ook gemerkt dat de methoden getwidth() en getmeasuredwidth() 0 retourneren.

suggesties over welke layout ik zou moeten gebruiken en waarom de getwidth-functies niet werken?

de xml-code is lager ... er zouden meer afbeeldingen zijn dan dit, maar dit is wat ik aan het testen was


            
            
        
6
kan je de xml plaatsen?
toegevoegd de auteur josephus, de bron
zijn bijgewerkt --- het is een relativelayout binnenkant van een ander relativelayout
toegevoegd de auteur JLK, de bron

2 antwoord

Ik zat hier al eeuwen mee vast en na 4 uur rommelen met code en Googelen. Ik heb eindelijk de oplossing bedacht en het is vrij eenvoudig.

Het enige dat u hoeft te doen is de volgende kaart uitlijnen boven en links van de vorige kaart. Hierdoor wordt de tweede kaart eerder op de kaart geplaatst. Stel vervolgens een leftMargin in om de kaart naar boven naar rechts te "duwen", waardoor het gedeeltelijk overlappende effect ontstaat.

Hier is mijn code (programmatisch gedaan):

for(int i=0; i
8
toegevoegd
wat zit er in ll.addView (ib); Betekent dit dat de bovenliggende container een lineaire lay-out heeft? zou het erg op prijs stellen als je de code van het lay-outbestand zou kunnen uitleggen en delen.
toegevoegd de auteur oat, de bron
maakt niet uit - dacht dat het :), heel erg bedankt
toegevoegd de auteur oat, de bron

You can provide view bounds intentionally mismatched with image size, and use ScaleType of an Imageview: http://developer.android.com/reference/android/widget/ImageView.ScaleType.html. For example, android:scaleType="fitStart"

1
toegevoegd