본문 바로가기
안드로이드 자바

[Java][Android] StackView 사용해보기

by teamnova 2023. 8. 11.

안녕하세요!

오늘은 안드로이드에서 이미지를 정렬해서 보여줄 수 있는 View인 StackView를 사용해보는 시간을 가지도록 하겠습니다.

 

먼저 아래 이미지들을 다운로드 후 res -> drawble 폴더 안에 넣어주세요.

 

dog1.jpg
0.10MB
dog2.jpg
0.10MB
dog3.jpg
0.08MB
dog4.jpg
0.07MB

먼저 xml파일입니다.

 

activity_stack.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >

    <StackView
        android:layout_width="match_parent"
        android:layout_height="400dp"
        android:id="@+id/stack_view"
        android:layout_centerHorizontal="true"
        />
</RelativeLayout>

 

다음으로 아이템 xml파일입니다.

 

stack_item

 

<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    app:cardCornerRadius="10dp">

    <ImageView
        android:id="@+id/image_view"
        android:layout_width="match_parent"
        android:layout_height="300dp"
        android:layout_gravity="center"
        android:scaleType="centerCrop"
        android:src="@drawable/dog1" />
</androidx.cardview.widget.CardView>

 

다음으로 JAVA 파일입니다.

 

StackActivity.java

import android.os.Bundle;
import android.widget.StackView;

import androidx.appcompat.app.AppCompatActivity;

import java.util.ArrayList;
import java.util.List;

public class StackViewActivity extends AppCompatActivity {

    StackView stackView;

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

        stackView = findViewById(R.id.stack_view);

        StackItemAdapter itemAdapter = new StackItemAdapter(createImage(), StackViewActivity.this
                , R.layout.stack_item);

        stackView.setAdapter(itemAdapter);
    }


    private List<Integer> createImage(){

        List<Integer> images = new ArrayList<>();
        images.add(R.drawable.dog1);
        images.add(R.drawable.dog2);
        images.add(R.drawable.dog3);
        images.add(R.drawable.dog4);

        return images;
    }
}

 

다음으로 어댑터 JAVA 파일입니다.

 

StackItemAdapter.java

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

import java.util.List;

public class StackItemAdapter extends ArrayAdapter {

    List<Integer> images;
    Context context;
    int itemLayout;

    public StackItemAdapter(List<Integer> images, Context context, int resource){

        super(context, resource);
        this.images = images;
        this.itemLayout = resource;
    }

    @Override
    public int getCount() {
        return images.size();
    }

    @Nullable
    @Override
    public Object getItem(int position) {
        return images.get(position);
    }

    @NonNull
    @Override
    public View getView(int position, @Nullable View convertView, @NonNull ViewGroup viewGroup) {

        if(convertView == null){
            convertView = LayoutInflater.from(viewGroup.getContext()).inflate(itemLayout, viewGroup,
                    false);
        }

        Integer image = images.get(position);

        ImageView imageView = convertView.findViewById(R.id.image_view);

        imageView.setImageResource(image);

        return convertView;
    }
}

 

실행화면입니다.

 

보시다시피 스택 형태로 이미지를 정렬 후 슬라이드를 통해 이미지를 확인할 수 있습니다.

오늘 준비한 내용은 여기까지 입니다.

궁금한 점은 언제든지 댓글로 남겨주세요.

감사합니다 !