トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS

複数の画像の切り替え の履歴(No.2)


このページは,古いバージョンのAndroidStudioに沿った説明で,また,ところどころ未更新になっています.
新しいバージョンで動作するか未確認なので,参考にする場合はそれを踏まえておいてください.

 

複数の画像の切り替え

新しいプロジェクトの準備

画面上のボタンを押して,表示される画像を次々切り替えられるようにします.

 

新しくProjectを作り直します.
数字の入力のところでやったのと同じように,Projectを作成します.Androidのバージョンやactivityの種類も全く同じです.

レイアウト内容

今回もLinearLayoutを使用します.
まず,activity_main.xmlを開きます.左上にある「Hello World!」は使わないので消しておきます.

 

次に,画面左側の Paletteの中に「Layouts」の個所があるので,その中から「LinearLayout」を選択して画面上に配置します. IDは「LinearLayout」と入れておいてください.

 
 

LinearLayout内に,以下の3つのパーツを配置します.

  • Button
    • ID: button1
  • ImageSwicher
    • ID: showImage
  • textView
    • ID: textView
 

図1が配置後の様子です.

 
図1
 

画像の登録

次に,表示する画像を何枚か用意します.
ここでは,photo1.jpg, photo2.jpg, photo3.jpg, photo4.jpg, photo5.jpgの5枚とします.
画像を app->res->drawableの上にコピーして,プロジェクトに登録します.その上で,プログラム内にも画像のIDを記述します.

 
public class MainActivity extends AppCompatActivity {
 

の直後に,以下の文を追加します.

 
   ImageSwitcher mImageSwitcher;
   int[] mImageResources = { R.drawable.photo1, R.drawable.photo2,
           R.drawable.photo3, R.drawable.photo4,
           R.drawable.photo5};
 

なお,画像ファイルの名前については,先頭に大文字や数字を使えません.

 
  • 使用できない名前の例
    • Photo1.jpg (始めの文字が大文字)
    • 1stPhoto.jpg (始めの文字が数字)
 

画像の切り替え

画像を切り替えるための動作を記述します.
以下の内容を,「画像の登録」の個所に書いた内容の直後に追記してください.呼び出されるごとに,指定画像の番号を変えるという内容です.

 
   // スライド番号の初期化
   int mSlide = 0;
   // スライド番号を移動させる内容
   private void movePosition(int move) {
       mSlide = mSlide + move;

       // スライド番号が,画像の枚数を超えれば0に戻す
       if (mSlide >= mImageResources.length) {
           mSlide = 0;
       }
       else if (mSlide < 0) {
           mSlide = mImageResources.length -1;
       }

       // スライド番号が,画像の枚数を超えれば0に戻す
       mImageSwitcher.setImageResource(mImageResources[mSlide]);
   }
 

次に,画像を表示する部分について,下記のように記述します.この内容は
「protected void onCreate(Bundle savedInstanceState) { 」の中に記述してください.

 
       mImageSwitcher = (ImageSwitcher) findViewById(R.id.showImage);
       mImageSwitcher.setFactory(new ViewSwitcher.ViewFactory() {
           @Override
           public View makeView() {
               ImageView imageView = new ImageView(getApplicationContext());
               return imageView;
           }
       });
 

一番最後に「セミコロン ; 」があることに注意してください.

ボタンの動作の記述

上の「mImageSwitcher」の追記の直後に,ボタンが押されたときの動作を記述します.

 
       Button tapButton = (Button) findViewById(R.id.button1);
       tapButton.setOnClickListener(new View.OnClickListener() {
          @Override
          public void onClick(View v) {
              movePosition(1);
              TextView textView1 = (TextView)findViewById(R.id.textView);
              textView1.setText("次の写真です");
          }
       });
 

この記述は,ボタンが押されるごとに,「movePosition」を呼び出して画像の番号を1ずつ増やす,という内容になっています.

 

これで設定は終了です.
実行すると,ボタンを押すごとに,登録した画像が切り替わって表示されます.

 

           ↓

           ↓