Centrowanie obrazu tła w systemie Android

Mam obraz tła około 100 x 100, które chcę wyśrodkować w aplikacji na Androida. Jest na to sposób?

Myślę, że bardzo pomogłoby to przy zmianach orientacji w prostych aplikacjach.

Author: NotACleverMan, 2010-10-03

2 answers

Możesz użyć BitmapDrawable dla sprawy. Utwórz wyśrodkowane.xml w folderze res/drawable:

<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@drawable/your_image"
    android:gravity="center"/>

Następnie możesz użyć centered drawable jako tła.

 45
Author: Konstantin Burov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-10-03 12:21:47

Pytanie jest stare i odpowiedź ma jedną dużą słabość - nie mamy możliwości zmiany rozmiaru obrazu, to znaczy, że w pełni zależy od tego, co mamy.

Podczas korzystania z najnowszych bibliotek projektowych Androida głównym widokiem aktywności będzie CoordinatorLayout lub DrawerLayout i te układy nie mają domyślnego widoku pokazującego hierarchię, oznacza to, że pierwszy widok potomny będzie przesłonięty przez następny, a drugi przez trzeci i ... za ostatnie. Aby mieć wyśrodkowane tło musimy dodać jako pierwsze dziecko LinearLayout z wyśrodkowany obraz w środku. Jakiś fragment kodu:

<android.support.v4.widget.DrawerLayout>
<!-- first child -->
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    >
    <ImageView
        android:layout_width="match_parent"
        android:layout_height="60dp"
        android:src="@drawable/some_background"
        />
</LinearLayout> 
... next view will be above

Możemy w pełni dostosować rozmiar obrazu, który będzie wyśrodkowany przez opcję grawitacji LinearLayout. Ważne jest również, aby mieć match_parent na szerokości i wysokości LinearLayout, dzięki temu centrum będzie również centrum widoku rodzica.

To samo można zrobić w RelativeLayout lub w dowolnym innym układzie, który umożliwia nakładanie się widoków potomnych.

 0
Author: Maciej Sikora,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-22 00:05:21