kitty_cat 2023. 3. 8. 00:09

가시성과 중첩

프레임 레이아웃은 뷰를 하나 이상 추가할 경우, 추가된 순서로 차곡차곡 쌓임

가만 먼저 추가한 뷰가 가장 아래쪽에 쌓이고 그다음에 추가한 뷰는 그 위에 쌓여서 가장 나중에 쌓인 뷰만 보이게 됨.

가장 위에 있는 뷰를 보이지 않게 하면 그다음 뷰가 보이게 하는 속성

-> 여러 개의 뷰를 서로 전환할 때 사용

 

뷰를 추가할 때는 디자인 화면서에서 추가할 수도 있고 자바 소스 코드에서 addView 메서드 사용하여 추가

 

가시성 속성을 사용해서 특정 뷰를 보이거나 보이지 않게 하면 화면에 보이는 뷰가 전환되는 효과도 만들 수 있음.

visibility 속성 : visible, invisigle, gone

(자바 소스 코드에서 설정하고 싶ㄷ파면 setVisibility 메서드 사용)

 

package org.techtown.sampleframelayout;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;

public class MainActivity extends AppCompatActivity {

    ImageView imageView;
    ImageView imageView2;

    int imageIndex = 0;

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

        imageView = findViewById(R.id.imageView);
        imageView2 = findViewById(R.id.imageView2);
    }

    public void onButtonClicked(View v) {
        changeImage();
    }

    private void changeImage() {
        if (imageIndex == 0 ) {
            imageView.setVisibility((View.VISIBLE));
            imageView2.setVisibility(View.INVISIBLE);
            imageIndex = 1;
        } else if (imageIndex == 1) {
            imageView.setVisibility(View.INVISIBLE);
            imageView2.setVisibility(View.VISIBLE);
            imageIndex = 0;
        }
    }
}