0

私が必要としているものには少しやり過ぎのように見える多くの例を見たので、次のような単純なことをしたかっただけです:

私の活動では、これを行います:

ProgressBar bar = bar=(ProgressBar)findViewById(R.id.progress);

そして、私のレイアウトではこれを行います:

<ProgressBar android:id="@+id/progress"
    style="?android:attr/progressBarStyleHorizontal"
    android:src="@drawable/ajax-loader"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" />

そして、この画像http://problemio.com/img/ajax-loader.gifを自分の画像ディレクトリに入れました。

しかし、.gif ファイルはこれらのディレクトリにあるはずがないというコンパイル エラーが発生しました。エラーは次のとおりです。

res\drawable-hdpi\ajax-loader.gif: Invalid file name: must contain only [a-z0-9_.]

また、進行状況バーのレイアウトが正しく作成されているかどうかもわかりません。ここで私にとって正しい道は何ですか?それとも私は完全に軌道から外れていますか?:)

ありがとう!

4

1 に答える 1

1

エラー メッセージが明確に示すように、ドローアブル名が正しくありません。このajax_loaderNOTのように画像に名前を付ける必要がありますajax-loader。これは、ADT がR使用済みリソースの自動割り当て ID を使用して配列を作成するためです。また、これRは単なる通常の Java コードであり、すべての ID はファイル名に基づいて構築されるため、このような名前は無効です。単にR.drawable.ajax 変数からローダー変数を減算ajax-loaderすることを意味するため、このドローアブルを参照できるはずだからです。そして、これはあなたが望むものではありません (同じ理由で、リソース名にスペースを含めることはできません)。もう 1 つのことは、GIF ではなく、PNG をリソースとして使用する必要があることです。アニメーションが必要な場合は、GIF アニメーションを別の画像に変換して使用してくださいR.drawable.ajax-loaderAndroidのフレームアニメーション機能

したがって、問題を解決するには、リソースの名前を に変更する必要がありますajax_loader.gif。これは正しい命名スキームです。しかし、それは PNG ではなく GIF であるため、拒否されます。私の提案は、このGIFをGIMPなどにロードし、各フレームを個別のドローアブル(など)として保存することajax_loader_01.pngですajax_loader_02.png。そして、次のようなコンテンツを含むフォルダーに作成ajax_loader.xmlします。res/drawable

<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
    android:oneshot="false">
    <item android:drawable="@drawable/ajax_loader_01" android:duration="200" />
    <item android:drawable="@drawable/ajax_loader_02" android:duration="200" />
    ...
</animation-list>

次に、これをレイアウトでドローアブルとして使用します(R.drawable.ajax_loaderフレームを個別に参照するのではなく、 を参照する必要があります)。GIF アニメーションに合わせて長さを調整すれば完了です。

于 2012-09-05T15:44:45.890 に答える