質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

解決済

2回答

4345閲覧

Androidでオートで動くスライドショーのアプリを作成したい

kipipipi

総合スコア60

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

0クリップ

投稿2020/05/01 03:34

編集2020/05/01 12:51

現在Androidで自動で動くスライドショーを作ろうと思っています。

画像、動画の読込先は指定のディレクトリからと決まっています。
動画を永遠に流し続けるコードと
指定の /res/layout/にある.xmlを切り替えて画像をスライドショーし続けるものはできています。(ViewFlipperを使用したもの)

動画は良いとして、ViewFlipperの方は/res/layout/のレイアウトファイルを切り替えていますが、この場合、初めに用意していなければできないため目標とは異なります。
やりたいこととして、指定のディレクトリにある1枚かもしれないし100枚かもしれない画像を切り替えたいです。

java

1activity_main.xml 2 34<ViewFlipper 5 android:id="@+id/flipper" 6 android:scaleType="fitCenter" 7 android:layout_width="match_parent" 8 android:layout_height="wrap_content" 9 android:contentDescription="photo"> 10 <include android:id="@+id/firstlayout" layout="@layout/first" /> 11 <include android:id="@+id/secondlayout" layout="@layout/first" /> 12 <include android:id="@+id/thirdlayout" layout="@layout/first" /> 13</viewFlipper> 14 15

java

1first.xml(second.xml third.xml同様) 2 34<ImageView 5 android:layout_width="wrap_content" 6 android:layout_height="wrap_content" 7 android:src="@drawable/first"> //画像名:first.jpg 8

java

1MainActivity.java 2 34private String path = Environment.getExternalStorageDirectory().getPath+"指定のディレクトリ"; 5 6private void getImageFile(){ 7 File[] imageFiles = new File(path).listFile(); 8 9 for(int i = 0; i < imageFiles.length; i++){ 10 if(imageFiles[i].getName().endsWith(".jpg")){ 11 リスト入れる変数.add(imageFiles[i].getPath()); 12 } 13 } 14 } 15 16

first.xml内のandroid:src="@drawable/first"の部分を動的に
getImageFile()で取得した画像に変更する方法がありますか?
それともMainActivity内でimageViewを使用して直書き?をしなくてはいけないのでしょうか?

コードはなくても良いので、指針、ヒントをいただきたいです。
先輩方の知恵をお貸しください。
どうぞよろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hoshi-takanori

2020/05/01 04:33

指定のディレクトリのファイル一覧を取得して、それを順番に表示するだけだと思いますが、どの辺でお悩みですか?
kipipipi

2020/05/01 04:42

お返事ありがとうございます! 簡潔に言うと表示方法でつまづいています。 ファイル名の取得まではできているのですが、レイアウトファイル(.xml)にincludeを使用した表示方法しか知らず(汗) 後に画像動画の切り替えの時のアニメーションを自由に変更できるようにもしたいので、そこも考慮した方法があればヒントを頂けると嬉しいです。 よろしくお願い致します。
hoshi-takanori

2020/05/04 09:09

ViewFlipper って child view を順番に切り替えるだけなので、child view が固定・少数ならいいのですが、たくさんの画像を切り替えるには向いてない気がします。単純に ImageVIew の画像を順番に切り替えるか、アニメーションの内容によっては二つの ImageView を切り替えて使うみたいな custom view を自作する (または、ライブラリを探す) のが良いかと。
guest

回答2

0

ベストアンサー

こんな感じで書き換えられないですかね?

xml

1<ImageView 2 android:id="@+id/firstImageView" 3 android:layout_width="wrap_content" 4 android:layout_height="wrap_content" 5 android:src="@drawable/first"> 6</ImageView>

java

1File imgFile = new File("/test.jpg"); 2Bitmap bm = BitmapFactory.decodeFile(imgFile.getAbsolutePath()); 3ImageView iv = findViewById(R.id.firstImageView); 4iv.setImageBitmap(bm);

投稿2020/05/04 12:14

razuma

総合スコア1313

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kipipipi

2020/05/21 05:56

ruzuma様 お返事が遅れてしまい大変失礼しました。別件の仕事が割り込んでそちらの対処をしていたため、こちらのコードの対処を休んでいました。 ruzuma様が記入していただいたコードとHandlerを組み合わせることで簡単なスライドショーができました!これからアニメーションなどを付けたりなど色々ありますが、こちらをベースに作業ができそうです! 直書きの方法がこれが初めてで戸惑いますが、前に進めそうで嬉しいです!ありがとうございました!!
guest

0

皆さんのご意見を参考に以下のコードで簡単なスライドショーができました!
ありがとうございます!
(手打ちしたので書き間違えがあるかもしれません。)

int imageCount = 0; // ここに指定のディレクトリからファイルのパスをリストしてくる List<String> VIDEO_NAMES new ArrayList<>(); @Override protected void onCreate(Bundle saveInstanceState){ 略 imageChage = new Runnable(){ public void run(){ imageCount += 1; if(VIDEO_NAMES.size() != imageCount){ File imgFile = new File(VIDEO_NAMES.get(imageCoiunt)); Bitmap bm = BitmapFactory.decodeFile(imageFile.getAbsolutePath()); ImageView iv = findViewById(R.id.firstImage); iv.setImageBitmap(bm); mHandler.postDelayed(imageChage,2000); }else{ imageCount = -1; mHandler.postDelayed(imageChage,0); } } }; mHandler.postDelayed(imageChage,2000); 略

投稿2020/05/21 06:10

kipipipi

総合スコア60

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問