Wątek przeniesiony 2017-10-07 19:13 z Java przez Koziołek.

Android - problem z proporcjonalnym skalowaniem Drawable w LinearLayout

0

Mam bitmapę jako Drawable, której używam jako Canvas. Wszystko jest wyświetlane jako LinearLayout.
Niestety mam problem z skalowaniem. Bitmapa rysuje się w wysokości takiej jak wybrana w pikselach, a szerokość jest automatycznie redukowana do szerokości ekranu. Tak, że zmieniają się proporcje.
Jak używać Canvas z bitmapą w tle by wszystko skalowało się proporcjonalnie i dopasowywało do szerokości ekranu (także, gdy jest większa niż szerokość bitmapy) ?
Jestem początkujący w Androidzie więc proszę o wyrozumiałość ;)
Oto kod metody inicjującej:

    public void initMap(LinearLayout ll, Resources res) {
        clearBg = BitmapFactory.decodeResource(res, R.drawable.world);
        Bitmap scaledBitmap = Bitmap.createScaledBitmap(clearBg, d, h, true);
        clearBg.recycle();
        clearBg = scaledBitmap;
        bg = Bitmap.createBitmap(d, h, Bitmap.Config.ARGB_8888);
        canvas = new Canvas(bg);
        ll.setBackground(new BitmapDrawable(res, bg));

"clearBg" służy do "resetowania" obrazu do stanu pierwotnego.
gdzie LinearLayout w konstruktorze metody to:

    <LinearLayout
        android:id="@+id/world_map"
        android:orientation="horizontal"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:adjustViewBounds="true">
    </LinearLayout>
0

scale type centerCrop?
nie chce mi się tego czytać do końca^^

1

Spróbuj użyć imageView i to w nim ustawiaj bitmapę. O ile dobrze pamiętam, to jeśli użyjesz android:src="..." (zamiast android:background="...") to domyślnie powinien skalować proporcjonalnie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1