7

Androidで画像を扱うのは本当に難しいと思います.Android開発の最も難しい部分だと思います...

1)私は画像を持っています。それをアプリケーションの背景にしたいので、そうします

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    tools:context=".MainActivity" 
    android:background="@drawable/accueil">
</RelativeLayout>

背景は画面全体を埋める必要がありますが、cas ではありません。一部の (小さい) 画面では、背景の一部のみが表示されます。どのように言うことができますか: 画像が画面よりも大きい場合でも、画像を画面全体に表示したいので、背景がすべて見えるように画像を縮小する必要がありますか?

背景として使用する代わりに、背景を配置する必要があるかもしれません

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    tools:context=".MainActivity">


       <ImageView
           android:id="@+id/imageView1"
           android:layout_width="500dp"
           android:layout_height="500dp"
           android:adjustViewBounds="false"
           android:src="@drawable/accueil" />

</RelativeLayout>

ただし、一部のデバイスでは、画像が少しトリミングされています。

2) レイアウトを別のレイアウトに配置する必要がありますが、その位置を正確にし、その幅を親レイアウトに相対的にする必要があります。それでも私がするなら

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/fond">

 <LinearLayout
     android:layout_width="300dp"
     android:layout_height="350dp"
     android:layout_marginTop="20dp"
     android:background="@drawable/fondshare"
     android:orientation="vertical" >

結果が私が期待したものではないことがわかります(線形レイアウトはスマイリーとすべてのボタンのある長方形です) ここに画像の説明を入力

4

6 に答える 6

2

Android は、サイズと密度という 2 つの一般的なプロパティを使用してデバイスの画面を分類します。アプリは、さまざまなサイズと密度の画面を備えたデバイスにインストールされることを想定する必要があります。そのため、さまざまな画面サイズと密度に合わせてアプリの外観を最適化する代替リソースをいくつか含める必要があります。一般化された 4 つのサイズ: small、normal、large、xlargeおよび 4 つの一般化された密度: low (ldpi)、medium (mdpi)、high (hdpi)、extra high (xhdpi)

さまざまな画面に使用するさまざまなレイアウトとビットマップを宣言するには、さまざまな言語文字列の場合と同様に、これらの代替リソースを個別のディレクトリに配置する必要があります。

また、画面の向き (横向きまたは縦向き) は画面サイズのバリエーションと見なされるため、多くのアプリではレイアウトを修正して各向きでのユーザー エクスペリエンスを最適化する必要があることに注意してください。

詳細については、 android.com の「さまざまな画面のサポート」の記事を参照してください。

于 2013-02-07T09:49:42.760 に答える
0

バックグラウンドとしてビットマップを使用したい場合は、いくつかの解決方法があると思います。

  1. さまざまなデバイス用にいくつかのサイズの画像をデザインします(drawable-hdpi、drawable-xhdpi ...)
  2. 別のレイアウトを使用し、修飾子を使用する別のリソースパッケージに配置します。(layout-sw600dp ...)
于 2013-02-07T09:29:26.690 に答える
0

各レイアウトフォルダとドローアブルフォルダのレイアウトを調整することをお勧めします。

レイアウトレイアウト-800x480レイアウト-土地などはこちらを参照http://developer.android.com/guide/practices/screens_support.html

または、このリンクを参照してください。

さまざまな画面解像度のUIの設計

于 2013-02-07T09:29:49.183 に答える
0

このタスクを実行するための最良のテクニックは、線形レイアウトを使用して使用することです

 <LinearLayout
 android:layout_width="300dp"
 android:layout_height="350dp"
 android:layout_marginTop="20dp"
 android:weightSum="3"
 android:background="@drawable/fondshare"
 android:orientation="vertical" >

  <View
    android:id="@+id/imageView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    />

  </LinearLayout>

上記の場合

android:weightSum="レイアウトを分割したい部分の数"

アンドロイド:layout_weight="1"

ビューが占める合計部分。線形レイアウトの重み合計が 3 であるとすると、ビューでカバーされる部分は

視野の幅:

(layout_width / WeightSum) * 重量

ビューの高さ:

(layout_height / WeightSum) * 重量

あなたの場合、ビューの最終的な高さは= 119dpになります

最終的な幅は= 100dpになります

于 2013-02-07T14:20:57.923 に答える
0

これを試して:

私は自分のレイアウト設計のために多くの時間を費やしました.最終的に私は次のような解決策を得ました

小さい画面や大きい画面など、さまざまな画面用のレイアウト フォルダーを作成しました。元のレイアウト フォルダの xml ファイルは、HVGA である通常のレイアウトでのみ機能します。小さなレイアウト用にname=layout-smallでフォルダを作成し、ここに xml ファイルを置きます。次に、大きなレイアウト用に folder name=layout-longでフォルダーを作成し、そのレイアウト用にここに xml ファイルを作成します。

于 2013-02-07T10:11:36.763 に答える