2011-01-28 11 views
12

Mam układ z dwoma obrazami:skalować obrazy w Android stosunku do sita Szerokość

  • który powinien strech do szerokości ekranu
  • jeden nad nim, które powinny być powiększane do tej samej proporcji Pierwszy był automatycznie skalowane (w stosunku do oryginalnego rozmiaru obrazu)

Bardziej szczegółowe: dwa obrazy są plastry tego samego obrazu, a więc pewne szczegóły wewnątrz należy je dopasować.
Czy mogę to zrobić w XML?

Jeśli nie mogę tego zrobić poprzez XML, może uda mi się przeskalować grafikę. W takim przypadku jak mam je przeskalować?

+0

Czy rozwiązałeś to pytanie? btw nie jestem pewien, czy widziałem, ale zaktualizowałem moją odpowiedź na problem 'Canvas.onDraw'. – techiServices

+0

Nie, nie rozwiązany. Sądzę, że zrobię to programowo –

Odpowiedz

6

To trochę hack, ale pozwoliłoby to zrobić to w xml.

Jeśli wiesz, że, na przykład, górna obrazu wynosi X% wielkości dolnej jednej, a następnie można użyć layout_weight LinearLayout jest pozycja i wielkość górnego obrazu w procentach ekranu:

<LinearLayout android:layout_width="fill_parent" 
    android:layout_height="wrap_content"> 
    <ImageView android:id="@+id/left_filler" android:layout_weight="20" 
     android:layout_width="wrap_content" android:layout_height="wrap_content"/> 
    <ImageView android:id="@+id/top_image" android:layout_weight="50" 
     android:layout_width="wrap_content" android:layout_height="wrap_content"/> 
    <ImageView android:id="@+id/right_filler" android:layout_weight="30" 
     android:layout_width="wrap_content" android:layout_height="wrap_content"/> 
</LinearLayout> 
... bottom image

Powyższy rozmiar ma rozmiar top_image na 50% ekranu z przesunięciem o 20% od lewej. Dopóki top_image ma rozmiar 50% bottom_image, zachowa on podobną skalę.

Alternatywnie "właściwym" sposobem na to jest prawdopodobnie zastąpienie onDraw() w widoku niestandardowym i użycie metod rysowania na płótnie.

0

Można użyć metody klasy Canvas klasy drawBitmap(Bitmap bitmap, Rect src, RectF dst, Paint paint) do rysowania określonej bitmapy przez automatyczne skalowanie/tłumaczenie w celu wypełnienia docelowego prostokąta. Może to być użyte zarówno w bitmapach o różnych Rect. Rect można sformułować, dzieląc bieżącą szerokość i wysokość układu. Aby program skalował obrazy zgodnie z urządzeniami o różnych rozmiarach ekranu.

Powiązane problemy