![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
Androidのプログラムについてです。
パラパラ漫画のように、多数の画像を読み込んで表示させるプログラムを教えて下さい。
サンプルを見つけましたが、画像数が極端に多い場合、for文などで出来るのでしょうか。
サンプルは下記で見つけました。
http://monoist.atmarkit.co.jp/mn/articles/1205/2 …
画像の読み込みや、 画像をアニメーションのコマとして追加していく方法が記載されていますが、
画像が多い場合、for文などに変更できるのでしょうか。
(プログラム全く初心者です。)
<参考>
上記URLには以下サンプルプログラムが記載されています。
// 画像の読み込み //
Drawable frame1 = con.getResources().getDrawable( R.drawable.frame1 );
Drawable frame2 = con.getResources().getDrawable( R.drawable.frame2 );
Drawable frame3 = con.getResources().getDrawable( R.drawable.frame3 );
Drawable frame4 = con.getResources().getDrawable( R.drawable.frame4 );
Drawable frame5 = con.getResources().getDrawable( R.drawable.frame5 );
// 画像をアニメーションのコマとして追加していく
anim.addFrame( frame1, 60 );
anim.addFrame( frame2, 60 );
anim.addFrame( frame3, 70 );
anim.addFrame( frame4, 80 );
anim.addFrame( frame5, 120 );
anim.addFrame( frame4, 80 );
anim.addFrame( frame3, 70 );
anim.addFrame( frame2, 60 );
anim.addFrame( frame1, 60 );
<?xml version="1.0" encoding="utf-8"?>
<animation-list
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/frame1" android:duration="60" />
<item android:drawable="@drawable/frame2" android:duration="60" />
<item android:drawable="@drawable/frame3" android:duration="70" />
<item android:drawable="@drawable/frame4" android:duration="80" />
<item android:drawable="@drawable/frame5" android:duration="120" />
<item android:drawable="@drawable/frame4" android:duration="80" />
<item android:drawable="@drawable/frame3" android:duration="70" />
<item android:drawable="@drawable/frame2" android:duration="60" />
<item android:drawable="@drawable/frame1" android:duration="60" />
</animation-list>
.
No.2ベストアンサー
- 回答日時:
Drawable frame1 = con.getResources().getDrawable( R.drawable.frame1 );
Drawable frame2 = con.getResources().getDrawable( R.drawable.frame2 );
Drawable frame3 = con.getResources().getDrawable( R.drawable.frame3 );
Drawable frame4 = con.getResources().getDrawable( R.drawable.frame4 );
Drawable frame5 = con.getResources().getDrawable( R.drawable.frame5 );
この部分を省略していくことは困難です。
ですので、#1の回答でも毎行定義するようにプログラムを書きました。
お示しのURLにこの後紹介されている「XMLを使用したアニメーションの表示」によって表示する方がスマートです。
オブジェクトの配列は「要素ごと」に初期化をしなければNullPointerExceptionが発生します。
Object[] obj = new Object[5]
for (int i; i < obj.length ; i++){
obj = new Object();
}
今回のプログラムの場合、初期化の引数に R.drawable.frame1 などのパラメータが必要で、その都度指定しなければなりません。これは、仮に画像が1000枚になっても同じです。なので上記で示した「XMLを使用したアニメーションの表示」の方がスマートだと考えます。表示させるデータはXMLに定義し、アニメーションの再生のみJavaでプログラムできるからです。
>Eclipseでエラーが表示される。
申し訳ありませんが、エラー箇所とエラーの内容を教えて下さい。
回答頂きありがとうございます。
回答の中で、以下内容の認識合っていますでしょうか?
・XMLで記載する場合は、ソースコード上にDrawableframe = con.getResourse…は不要でシンプル。
・ただし、XMLファイル上に、画像ファイル分の定義(for文などでの簡略化不可)が必要。
イクリプスのエラーについては、再度確認してみます。
No.1
- 回答日時:
forを使うとこのようなイメージです。
class ScaledFrame{
Drawable frame;
int size;
public ScaledFrame(Drawable d, int s){ //コンストラクタ
frame = d;
size = s;
}
}
ScaledFrame[] sf = new ScaledFrame[5];
sf[0] = new ScaledFrame(con.getResources().getDrawable( R.drawable.frame1 ), 60); //コンストラクタを呼びます Drawableとサイズを指定します。
sf[1] = new ScaledFrame(con.getResources().getDrawable( R.drawable.frame2 ), 60);
sf[2] = new ScaledFrame(con.getResources().getDrawable( R.drawable.frame3 ), 70);
sf[3] = new ScaledFrame(con.getResources().getDrawable( R.drawable.frame4 ), 80);
sf[4] = new ScaledFrame(con.getResources().getDrawable( R.drawable.frame5 ), 120);
for (int i = 0 ; i < sf.length ; i++){ //0,1,2,3,4の順にループ
anim.addFrame( sf[i].frame, sf[i].size ); //上記コンストラクタで指定したDrawableとサイズを呼び出します。
}
for (int i = sf.length-1 ; i <= 0 ; i--){ //4,3,2,1,0の順にループ
anim.addFrame( sf[i].frame, sf[i].size );
}
早速の回答大変ありがとうございます。
回答について質問させていただきたいことがあります。
記載の内容ですと、
Drawableとサイズを指定するためには、画像ファイルの数だけ
sf[0] = new ScaledFrame(con.getResources().getDrawable( R.drawable.frame1 ), 60);
・・・
が必要となるのでしょうか?
たとえば1000枚ぐらいの画像があった場合、それだけでかなりの行数になってしまうのですが
仕方ないでしょうか?
あと、ECLIPSEにて上記プログラムを動作させようとしても、エラーとなってしまいます。
(プログラムを貼り付けた時点で何箇所かに✖マークが表示)
記載の内容を理解しきれておらず、今勉強中なのですが、
そのままでは使えない部分があれば教えていただけると大変助かります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Android(アンドロイド) Xperia1 Vってなぜフルセグを復活させなかったのでしょうか?? Xperia1 IVの次世代後 3 2023/05/18 16:51
- ラジオ ダイソーで500円の2つUSBポートがある充電器を購入したのですがこれを使うとFMラジオやAMラジオ 5 2022/06/29 22:03
- タレント・お笑い芸人 M-1優勝はどのコンビだと思いますか 2 2022/12/17 08:28
- 英語 "where I am"のニュアンスについて 3 2022/12/08 13:51
- 輸入車 やはりまず最初にBMWに乗ってBMWらしさを味わうならFR車にすべきでしょうか 9 2023/04/05 00:15
- 国産車 マツダから出るFRベースのSUVって、ズッコケると思いませんか? みんなマツダが作るFRベースのセダ 1 2022/05/19 22:05
- マウス・キーボード タイピングについて。 1 2023/07/07 16:27
- アプリ Android studio 初心者 Hello Android!しか表示されない 1 2023/08/01 08:47
- 英語 be sorry for doingとbe sorry to have doneの意味の違いについて 2 2023/06/09 13:57
- 英語 「第2文型主語のwhat節が前置詞の目的語である場合に、補語の前に同じ前置詞が必須なのか」について 2 2023/05/12 11:17
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
androidプログラムのエラーにつ...
-
Android開発(switch文)について
-
Google8とiPhoneseどっちを、買...
-
クラシルリワード って、旧スマ...
-
dアカウントのこの端末登録名っ...
-
親名義でスマホをdocomo契約し...
-
格安スマホ複数持ちでのポイ活...
-
Googleフォトにバックアップし...
-
電波マークが2つあるのですが、...
-
Fireタブレットで、この「端末...
-
アンドロイド版モンスト 動作重...
-
機種変更する時の、Googleアカ...
-
ahamoでデザリングを使う操作を...
-
最近スマホの調子がおかしいで...
-
Androidアプリ、auとdocomo別々?
-
端末からhtmlファイルをブラウ...
-
PCからスマホ端末保存による情...
-
機種変更しようか迷ってます。 ...
-
xperiaのsov36と、so01kの違い...
-
ワイモバイルスマホ、フィルタ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
androidアプリ開発 -間違い探...
-
androidプログラムのエラーにつ...
-
android.os.Systemをimport
-
Musicカウントフリー適用外?
-
canvas を android で見ると...?
-
android AVDからネットワーク接続
-
Androidプログラムについて
-
エミュレーターでAndroidMarket...
-
スクショを消さずにスマホに残...
-
perlでアクセス端末の解像度を...
-
バージョンアップ後の不具合
-
Android開発(switch文)について
-
さっき、YouTubeをandroidでみ...
-
Android開発の初心者です。分か...
-
スマホアプリ、GANMAが、ば―ジ...
-
Androidアプリ 通信について
-
Googleフォトにバックアップし...
-
Androidスマートフォンについて...
-
クラシルリワード って、旧スマ...
-
SIMフリーとはなにか
おすすめ情報