여러 이미지를 배열로 처리(추가 있음)

11658 단어 AndroidStudio
ImageView에 무작위 이미지 표시
htps : // m / k 스가와라 61 / ms / 7b1 베 c882 아 0272 c626b

참고로하겠습니다.
여러 이미지를 배열로 처리하는 방법을 시도했습니다.

①layout 파일(activity_main.xml)에 ImageView 추가

//Imageview blankImage를 선언 (이대로는 아무것도 표시되지 않는다)

android:id="@+id/blankImage"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_constraintBottom_toBottomOf="parent"/>

②app→res→drawable 파일 아래에 이미지를 배치(copipe)

10장의 고양이 이미지를 drawable에 copipe


③Values ​​파일 아래에 이미지를 배열로 취급하는 array 파일을 작성

app→res→valuse
values ​​파일을 마우스 오른쪽 버튼으로 클릭


→New→Values ​​resource file을 클릭합니다.


→File name을 array로 하고 OK를 클릭



→array.xml의 내용을 다음과 같이 합니다


//caImagesリストを宣言 10個の猫画像データを格納
<array name = "catImages">

    <item>@drawable/konekokakure</item>

    <item>@drawable/nekonirami</item>

    <item>@drawable/nekoyousumi</item>

    <item>@drawable/konekomouhu</item>

    <item>@drawable/nekobaua</item>

    <item>@drawable/nekonozokimi</item>

    <item>@drawable/nekomehurisou</item>

    <item>@drawable/koenkomoutyo</item>

    <item>@drawable/nekoutouto</item>

    <item>@drawable/nekohukigen</item>

</array>

④Java 코드내(i+1)번째의 화상을 표시하는 처리를 추가

ImageView blankImage;
TypedArray typedArray;
Drawable drawable;
int i = 0;

//배열은 [0,1,2 ...]와 첫 번째가 0이므로 i = 0 일 때 첫 번째 이미지, i = 1 일 때 두 번째 이미지
//고양이 이미지의 배열에서 (i + 1) 번째 이미지를 선택하고 catImage에 설정 (표시)하고 숫자를 표시하는 메서드
public void catImageSelectShow() {
    //配列typedArrayから画像を選択 配列の(i + 1)番目
    drawable = typedArray.getDrawable(i);

    //blankImage(何も表示されていない)にdrawable(画像)をセット
    blankImage.setImageDrawable(drawable);

    //i=0の時の画像をNo.1、i=1の時の画像をNo.2と表示するため、(i+1)を入れる
    numberTextView.setText("No." + (i+1));
}

·
·
·

blankImage = findViewById(R.id.blankImage);

//고양이 이미지의 리소스 배열 (10 개의 이미지 배열) 선언
typedArray = getResources().obtainTypedArray(R.array.catImages);

⑤Java의 코드 전체(*코드 수정한 것을 최하부에 추기합니다)라고 캡쳐한 동영상

앱 동작의 모습을 캡처한 동영상↓
htps : // 라고 해서 r. 이 m/i/s 타츠 s/1231957528071639040

package com.example.catswitch;

import androidx.appcompat.app.AppCompatActivity;

import android.content.res.TypedArray;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
ImageView blankImage;
TextView numberTextView;
TypedArray typedArray;
Drawable drawable;
Button nextButton;
Button prevButton;
int i = 0;



//配列は[0,1,2・・・]と1番目が0になるので、i = 0の時 1番目の画像、 i = 1 の時2番目の画像
//猫画像の配列から(i + 1)番目の画像を選択してcatImageにセット(表示)し、numberを表示するメソッド
public  void catImageSelectShow() {

    //配列typedArrayから画像を選択 配列の(i + 1)番目
    drawable = typedArray.getDrawable(i);

    //blankImage(何も表示されていない)にdrawable(画像)をセット
    blankImage.setImageDrawable(drawable);

    //i=0の時の画像をNo.1、i=1の時の画像をNo.2と表示するため、(i+1)を入れる
    numberTextView.setText("No." + (i+1));
}



@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    blankImage = findViewById(R.id.blankImage);
    numberTextView = findViewById(R.id.numberTextView);
    nextButton = findViewById(R.id.nextButton);
    prevButton = findViewById(R.id.prevButtton);

    //猫画像のリソースの配列(10個の画像の配列)
    typedArray = getResources().obtainTypedArray(R.array.catImages);

    //i = 0(初期値) (i + 1)番目の猫画像を選択し表示 No.1と表示
    catImageSelectShow();


    //nextButtonを押したときの挙動を設定  ViewクラスのOnClickListenerメソッドを上書き
    nextButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            //iには0~9が入る
            if(i == 9) {

                //変数iに0を代入
                i = 0;

                //(0 + 1)番目の猫画像を選択し表示 No.1と表示
                catImageSelectShow();

            } else {

                //変数iを1増加させる
                i++;

                //(i + 1)番目の猫画像を選択し表示 No.(i + 1)と表示
                catImageSelectShow();
            }

        }
    });

    //prevボタンを押したときの挙動を設定
    prevButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            //iには0~9が入る
            if(i == 0) {

                //変数iに9を代入
                i = 9;

                //(9 + 1)番目の画像を表示
                catImageSelectShow();

            } else {

                //変数iを1減少させる
                i--;

                //(i + 1)番目の猫画像を選択し表示 No.(i + 1)と表示
                catImageSelectShow();
            }
        }
    });

}

}

activity_main.xml의 전체 코드↓



xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
//Imageview blankImageを宣言(このままでは何も表示されない)
<ImageView
    android:id="@+id/blankImage"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_constraintBottom_toBottomOf="parent" />

<TextView
    android:id="@+id/numberTextView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginBottom="67dp"
    android:textSize="30sp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.5"
    app:layout_constraintStart_toStartOf="parent" />

<Button
    android:id="@+id/prevButtton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="33dp"
    android:layout_marginBottom="67dp"
    android:text="←"
    android:textSize="30sp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintStart_toStartOf="parent" />

<Button
    android:id="@+id/nextButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginEnd="33dp"
    android:layout_marginBottom="67dp"
    android:text="→"
    android:textSize="30sp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent" />

(추기) 자바 코드를 조금 수정했습니다.

@Override
public void onClick(View v) {
            //iには0~9が入る
            if(i == 9) {

                //変数iに0を代入
                i = 0;

                //(0 + 1)番目の猫画像を選択し表示 No.1と表示
                catImageSelectShow();

            } else {

                //変数iを1増加させる
                i++;

                //(i + 1)番目の猫画像を選択し表示 No.(i + 1)と表示
                catImageSelectShow();
            }

        }

나중에 이미지를 추가 할 수 있도록

i == 9 를 i == typedArray.length() - 1) 로 변경.

또한 catImageSelectShow(); 가 if 와 else 모두에 쓰여 있기 때문에
블록 밖으로 나왔습니다.

       if(i == typedArray.length() - 1) {
                //変数iに0を代入
                i = 0;

            } else {

                //変数iを1増加させる
                i++;
            }

            //(i + 1)番目の猫画像を選択し表示 No.(i + 1)と表示
            catImageSelectShow();

소스 코드 전체↓

package com.catsw.catswitch;

import androidx.appcompat.app.AppCompatActivity;

import android.content.res.TypedArray;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
ImageView blankImage;
TextView numberTextView;
TypedArray typedArray;
Drawable drawable;
Button nextButton;
Button prevButton;
int i = 0;


//猫画像の配列から(i + 1)番目の画像を選択してcatImageにセット(表示)し、numberを表示するメソッド
public  void catImageSelectShow() {

    //配列typedArrayから画像を選択 配列の(i + 1)番目
    drawable = typedArray.getDrawable(i);

    //blankImage(何も表示されていない)にdrawable(画像)をセット
    blankImage.setImageDrawable(drawable);

    //i=0の時の画像をNo.1、i=1の時の画像をNo.2と表示するため、(i+1)を入れる
    numberTextView.setText("No." + (i+1));
}



@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    blankImage = findViewById(R.id.blankImage);
    numberTextView = findViewById(R.id.numberTextView);
    nextButton = findViewById(R.id.nextButton);
    prevButton = findViewById(R.id.prevButtton);

    //猫画像のリソースの配列を宣言
    typedArray = getResources().obtainTypedArray(R.array.catImages);

    //i = 0(初期値) (i + 1)番目の猫画像を選択し表示 No.1と表示
    catImageSelectShow();


    //nextButtonを押したときの挙動を設定  ViewクラスのOnClickListenerメソッドを上書き
    nextButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            //iが猫画像の(配列の要素数-1)に等しい時
            if(i == typedArray.length() - 1) {

                //変数iに0を代入
                i = 0;

            } else {

                //変数iを1増加させる
                i++;
            }

            //(i + 1)番目の猫画像を選択し表示 No.(i + 1)と表示
            catImageSelectShow();
        }
    });

    //prevボタンを押したときの挙動を設定
    prevButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            if(i == 0) {

                //変数iに(猫画像の配列の要素数-1)を代入
                i = typedArray.length() - 1;

            } else {

                //変数iを1減少させる
                i--;
            }

            //(i + 1)番目の猫画像を選択し表示 No.(i + 1)と表示
            catImageSelectShow();
        }
    });

}

}

좋은 웹페이지 즐겨찾기