2016-01-20 4 views
5

私のアプリに画像を背景として表示したい。今私はandroid:background="@drawable/background"<LineraLayout>で使っています。ここ.xmlコードは次のとおりです。Androidプログラミングのクロップバックグラウンド画像

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    tools:context="overbit.user.MainActivity" 
    android:background="@drawable/background"> 
</LinearLayout> 

今、私はこの出力を得る:たぶんあなたの誰かが助けることができる

as

image

しかし、私はこのようにそれをしたいです私。ありがとう。

答えて

7

BitmapDrawableがあります。

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

そして、あなたのレイアウトの背景リソースとして、それを指定します:まず、あなたは次のように描画可能リソースを作成する必要があります(これは、プロジェクトのリソースres/drawable/mybg.xml内のファイルであるとする)

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    tools:context="overbit.user.MainActivity" 
    android:background="@drawable/mybg"> 
</LinearLayout> 
3

ます画像のサイズ自体をPhotoshopなどで変更する必要があります(これはアンドロイドスマートフォンのさまざまな画面サイズのために非常に困難です)。この問題を回避するには、Relativelayoutにあなたの親のレイアウトを変更してから、このようなあなたの写真を表示するIm​​ageViewのを使用することができます。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    xmlns:ads="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    <ImageView 
     android:layout_width="match_parent" //make sure its match parent 
     android:layout_height="match_parent"// and this one also 
     android:src="@drawable/yourBackgroundImage" 
     android:scaleType="..."/> 
    <LinearLayout>put your childviews here</LinearLayout> 

アンドロイドのために利用可能な4-5のオプションがあります:scaleTypeが..あなたが望む結果が得られるまで、それらを試してみてください。 SRCではなく、アンドロイド:あなたはBitmapRegionDecoderを使って何をしようとして達成することができImageViewの

+0

こんにちは、お返事ありがとうございます!それが最善の方法ですか? – MyNewName

+0

@MyNewName便利で簡単な方法です。 imageviewのscaleType属性は便利な柔軟性を提供します。余分なImageViewを追加しても、レイアウトがかなり混乱しているわけではありません(既にかなり混乱している場合を除きます)。 – drWisdom

4

の背景属性もあなたがアンドロイドを使用する必要があることに注意してください。ドキュメントから

BitmapRegionDecoderが 画像から矩形領域を復号するために使用することができます。 BitmapRegionDecoderは、オリジナルの イメージが大きく、イメージの一部だけが必要な場合に特に便利です。

特定のビットマップのRect領域をかなり簡単にデコードすることができます。唯一行う必要があるのは、ビットマップに対してデコードするRect領域を計算することだけです。

0

アンドロイドでは、イメージビューの位置は画像の左上側で決まります。私は、x方向が開始点から幅の1/3であると仮定しています。これでピボットを設定できます。基本的に、ピボットポイントの位置は、ビューが回転して拡大縮小する位置です。

int displacementX = ImageView.getWidth()/3; 
int displacementY = 10; 
imgview.setPivotX((float)displacementX); 
imgview.setPivotY((float)displacementY); 

ここでピボットを設定したので、画像に合わせて縮尺タイプを使用することができます。

imgview.setScaleType(ImageView.ScaleType.CENTER_CROP);