2011-01-28 7 views
12

をスクリーニングする:スケール画像は、私は2枚の画像を有するレイアウトを有する幅

  • 画面幅にストレッチべきもの最初のものだったと同じ比率に拡大する必要があり、その上
  • 1 automaticaly

をより具体的に(元の画像サイズに対して)スケーリングされた:2枚の画像は、同じ画像のスライスであり、その中したがっていくつかの詳細が一致しなければなりません。
これをXMLで作成できますか?

私がXMLで行うことができない場合は、おそらく私はグラフィックスをプリスケールすることができます。この場合、私はそれらをどのようにプレスケールするべきですか?

+0

この問題は解決しましたか?あなたが見たことがあるのか​​分からないが、あなたの 'Canvas.onDraw'問題に対する答えを更新した。 – techiServices

+0

いいえ、解決しません。プログラムでやるよ –

答えて

6

これはちょっとしたハックですが、xmlでこれを行うことができます。

あなたは、たとえば、トップの画像は、その後、あなたは、画面の割合の面での位置とサイズにトップ画像をのLinearLayoutのlayout_weightを使用することができ、下の1の大きさのX%である、ということが分かっている場合:

<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

上記のサイズは、画面の50%でtop_imageのサイズになり、左から20%のオフセットがあります。 top_imageがbottom_imageのサイズの50%である限り、これは同様の縮尺を維持します。

これを行う「正しい」方法は、カスタムビューでonDraw()をオーバーライドし、キャンバスの描画メソッドを使用することです。

0

CanvasクラスメソッドdrawBitmap(Bitmap bitmap, Rect src, RectF dst, Paint paint) を使用すると、指定されたビットマップを自動的に拡大/縮小してターゲット矩形を塗りつぶすことができます。これは、異なるRectを持つ両方のビットマップに使用できます。 Rectは、レイアウトの現在の幅と高さを分割して定式化することができます。そのため、プログラムは、画面サイズの異なるデバイスに合わせて画像を拡大/縮小します。

関連する問題