5

Chcę narysować obraz z tłem gradientowym. Utworzyłem rozciągliwej zasobu bitmapy jak poniżejRysowanie kafelkowej bitmapy z wyrównaniem dolnym

<bitmap xmlns:android="http://schemas.android.com/apk/res/android" 
     android:src="@drawable/bg" 
     android:tileMode="repeat" 
     android:gravity="bottom" 
     /> 

Jak wiecie, grawitacja jest ignorowana, gdy tileMode jest zdefiniowana. Próbowałem stworzyć własną klasę, która jest dziedziczona z BitmapDrawable, ale nie mogłem z tym osiągnąć sukcesu. Proszę mi pomóc, aby zastosować obie właściwości: tileMode i grawitację.

Odpowiedz

0

Nie zrozumiałem wyraźnie tego pytania. Jaki jest cel tutaj?

Czy używa on obrazu gradientowego (np. .png .jpg) z tileMode?

A może używa przezroczystej ikony i zmienia jej tło?

Po co ci też grawitacja, kiedy używasz tileMode? tileMode oznacza wstawić cały obszar bitmapy z tym samym obrazem. Ponieważ zrobi to całemu obrazowi, nie da to grawitacji na tym obrazie, ponieważ wszystko będzie wypełnione.

Jeśli celem jest, aby korzystać z tej rozciągliwej bitmapę w jakiejś części ekranu dodać do tego układu:

<ImageView 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:src="@drawable/mydrawablebitmap" 
android:id="@+id/imageview1" /> 

Można umieścić go na swojej layout.xml i ustawić własną szerokość i wysokość i dopasuj, co chcesz.

Jeśli celem jest za pomocą obrazu i uczynienie jej tło jest tu jak idziesz z nim:

Tworzenie gradient.xml w swojej rozciągliwej folderu:

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle"> 
    <gradient 
    android:startColor="#E0E0E0" 
    android:endColor="#FFFFFF" 
    android:angle="-90"/> 
</shape> 

Następnie dodaj do listy ImageView layout:

<ImageView 
    android:id="@+id/myimagewithgradientbackground" 
    android:layout_width="match_parent" 
    android:layout_height="160dp" 
    android:background="@drawable/gradient" 
    android:src="@drawable/foregroundimage" /> 

Jeśli podasz mi więcej szczegółów na temat tego pytania, przejdę do właściwej odpowiedzi.