안드로이드 dialog, custom dialog 다이얼로그





결과

초기 화면

다이얼로그

커스텀 다이얼로그






Main Layout 코드

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/holo_orange_light"
    android:gravity="center"
    android:orientation="vertical">

    <Button
        android:id="@+id/button3"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="30dp"
        android:background="@drawable/text_style"
        android:onClick="dialog"
        android:text="다이얼로그"
        android:textSize="24sp" />

    <Button
        android:id="@+id/button4"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/text_style"
        android:onClick="custom_dialog"
        android:text="커스텀 다이얼로그"
        android:textSize="24sp" />
</LinearLayout>






Custom Dialog Layout


파일 생성

ㄴ 커스텀 dialog의 보여줄 layout을 만들어주기 위하여 파일을 하나 생성한다.




만든 다이얼로그 레이아웃


 



Custom Dialog Layout 코드

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="#00FFFFFF"
    android:orientation="vertical">

    <TextView
        android:id="@+id/textView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/text_style"
        android:gravity="center"
        android:text="- 확 인 -"
        android:textSize="30sp"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@android:color/holo_blue_light"
        android:gravity="center"
        android:paddingTop="15dp"
        android:paddingBottom="15dp"
        android:text="결제하시겠습니까?"
        android:textSize="30sp" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal">

        <Button
            android:id="@+id/ok_btn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:background="@drawable/btn_empty"
            android:text="확 인"
            android:textSize="18sp" />

        <Button
            android:id="@+id/cancle_btn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:background="@drawable/btn_empty"
            android:text="취 소"
            android:textSize="18sp" />
    </LinearLayout>
</LinearLayout>







Main Java 코드

package com.example.testapp;

import androidx.appcompat.app.AppCompatActivity;

import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

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

    public void dialog(View v) {
        AlertDialog.Builder builder = new AlertDialog.Builder(v.getContext());
        builder.setTitle("알림창");
        builder.setMessage("전달할 메세지");
        builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Toast.makeText(getApplicationContext(), "OK 버튼을 눌렀습니다.", Toast.LENGTH_LONG).show();
            }
        });
        builder.setNegativeButton("Cancle", null);
        builder.show();
    }

    public void custom_dialog(View v) {
        View dialogView = getLayoutInflater().inflate(R.layout.custom_dl, null);

        AlertDialog.Builder builder = new AlertDialog.Builder(v.getContext());
        builder.setView(dialogView);

        final AlertDialog alertDialog = builder.create();
        alertDialog.show();

        Button ok_btn = dialogView.findViewById(R.id.ok_btn);
        ok_btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(getApplicationContext(), "OK 버튼을 눌렀습니다.", Toast.LENGTH_LONG).show();
                alertDialog.dismiss();
            }
        });

        Button cancle_btn = dialogView.findViewById(R.id.cancle_btn);
        cancle_btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                alertDialog.dismiss();
            }
        });
    }

}



- 일반적으로 다이얼로그를 만들어 줄 때는 AlertDialog.Builder 객체를 생성하여 사용한다.


- setTitle(), setMessage()의 메소드로 제목, 내용을 설정한다.


- setPositiveButton() 메소드를 사용하여서 텍스트 지정과 동작을 구현할 수 있다.


- 마찬가지로 setNegativeButton() 메소드를 이용하여 취소 기능을 만들 수도 있다.


- 마지막으로 show()해주어 만든 다이얼로그를 보여주어야 한다.




- 커스텀 다이얼로그를 만들어 줄 때는

View dialogView = getLayoutInflater().inflate(R.layout.custom_dl, null);

로 만든 레이아웃을 지정한후 이를 builder의 setView()메소드로 설정한다.


- 버튼 등 접근할 때도 dialogView를 통하여 접근한 후 기능을 구현하면 된다.


- 다이얼로그를 종료할 때는 dismiss() 메소드를 사용한다.






안드로이드 Button style 버튼 꾸미기





결과

결과





Layout 코드

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/holo_orange_light"
    android:orientation="vertical">


    <Button
        android:id="@+id/button"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/btn_empty"
        android:text="배경 투명"
        android:textColor="@android:color/background_light"
        android:textSize="24sp"
        android:textStyle="bold" />

    <Button
        android:id="@+id/button2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/btn_style"
        android:text="버튼 스타일"
        android:textColor="@android:color/background_light"
        android:textSize="24sp" />

    <TextView
        android:id="@+id/textView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/text_style"
        android:gravity="center"
        android:text="텍스트 뷰"
        android:textColor="#FFA159"
        android:textSize="24sp"
        android:textStyle="bold" />

    <EditText
        android:id="@+id/editText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/btn_style"
        android:gravity="center"
        android:text="텍스트 뷰"
        android:textSize="24sp"
        android:textStyle="bold" />
</LinearLayout>








파일 생성

- drawable -> resource file을 생성한다.



- 스타일을 쉽게 만들기 위하여 아래 사이트를 이용한다.

https://angrytools.com/android/button/




스타일 제작


- 원하는 스타일을 만든 후 해당 부분을 복사하여 파일에 복사해준 후 사용한다.






투명 Style 코드

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
    <corners
        android:radius="10dp"
        />
    <solid
        android:color="#00FFFFFF"
        />
    <size
        android:width="270dp"
        android:height="60dp"
        />
    <stroke
        android:width="3dp"
        android:color="#898989"
        />
</shape>

ㄴ 백그라운드를 투명하게 하기 위해서는 solid 부분을 지워주면 된다. 해당 예제는 투명도를 조절하는 방법을 보이기 위하여 작성하였다.


- corners : 사각형 각 모서리부분을 둥글게 만든다. 값이 클수록 각이 없어진다.


- solid : 배경 Color를 지정한다. 여기서는 투명하게 하기 위해서 Color를 "#00FFFFFF" 로 주었다. 


- size : 사이즈를 지정한다. height를 바꾸어주면 높이가 바뀌는것을 확인할 수 있다.


- stroke : 테두리 선을 지정한다. width로 길이를 color로 색을 지정한다.








Style 코드

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
    <corners
        android:radius="8dp"
        />
    <solid
        android:color="#CCFFDD"
        />
    <padding
        android:left="0dp"
        android:top="0dp"
        android:right="0dp"
        android:bottom="0dp"
        />
    <size
        android:width="270dp"
        android:height="60dp"
        />
    <stroke
        android:width="3dp"
        android:color="#2FEDE7"
        />
</shape>


- padding : padding 값을 지정해 줄수 도 있다.








안드로이드 SharedPreferences 옵션이나 간단한 데이터 저장하기





결과

초기 화면

데이터 입력, 종료 후 재시작





Layout 코드


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

    <EditText
        android:id="@+id/editText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="10dp"
        android:hint="ID"
        android:textSize="30sp" />

    <EditText
        android:id="@+id/editText2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="10dp"
        android:hint="Pass"
        android:textSize="30sp" />

    <CheckBox
        android:id="@+id/checkBox"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="CheckBox"
        android:textSize="30sp"/>
</LinearLayout>




Java 코드

package com.example.testapp;

import androidx.appcompat.app.AppCompatActivity;

import android.content.SharedPreferences;
import android.os.Bundle;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
    EditText editText, editText2;
    CheckBox checkBox;

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

        editText = findViewById(R.id.editText);
        editText2 = findViewById(R.id.editText2);
        checkBox = findViewById(R.id.checkBox);

        SharedPreferences sp = getSharedPreferences("temp", MODE_PRIVATE);

        String s = sp.getString("id", "");
        String s2 = sp.getString("pwd", "");
        Boolean b = sp.getBoolean("cb", false);

        editText.setText(s);
        editText2.setText(s2);
        checkBox.setChecked(b);
    }

    @Override
    protected void onStop() {
        super.onStop();
        SharedPreferences prefer = getSharedPreferences("temp", MODE_PRIVATE);
        SharedPreferences.Editor editor = prefer.edit();
        editor.putString("id", editText.getText().toString());
        editor.putString("pwd", editText2.getText().toString());
        editor.putBoolean("cb", checkBox.isChecked());

        editor.apply();
    }

}





데이터 저장하기

- onStop()부분에서 구현해줌으로써 종료하거나 할때 데이터를 저장할 수 있도록 한다.


- getSharedPerferences( 이름, 모드) 로 SharedPerferences 객체를 가져온다.

이름은 저장할 데이터 분류의 따라 지정해주며 모드는


MODE_PRIVATE : 해당 application에서만 사용 가능

MODE_WORLD_READABLE : 다른 application에서 읽기 가능

MODE_WORLD_WRITEABLE : 다른 application에서 쓰기 가능


들이 있으며 보안상의 문제도 있으니 왠만해서는 MODE_PRIVATE를 사용한다.


- 데이터를 저장할 때는 editor 객체의 putXXX(키, 값) 메소드를 사용하여서 <키, 값> 형태로 저장한다.


- 삭제해줄 때에는 remove(키)를 사용하면 가능하다.


- 값을 저장해주었으면 마지막으로 apply()commit()을 해준다.





데이터 가져오기

- 저장된 데이터를 다시 가져올 때도 우선 getSharedPerferences( 이름, 모드) 로 SharedPerferences 객체를 가져온다.


- 가져온 객체의 getXXX(키) 메소드를 사용하여서 <키, 값> 형태로 저장하였던 값을 가져올 수 있다.







안드로이드 뷰페이저, 탭 레이아웃 구현 - 탭 연동하기

 

 

 

 

2020/02/12 - [Android] - 안드로이드 뷰페이저, 탭 레이아웃 구현 (1) - 좌우로 밀어서 페이지 전환

불러오는 중입니다...

해당 글은 이전 글과 이어진다.

 

 

 

 

 

결과

 

 

 

 

 

 

 

구현

 

1. MainActivity

- 23 ~ 32라인이 추가되었다.

 > 24 ~ 25 라인 : 탭과 뷰 페이저를 연동시키는 과정

 > 27 ~ 32 라인 : 이미지들을 ArrayList에 저장한 후 탭에 넣어준다. 이미지를 넣지 않을꺼면 생략하여도 된다.

 

 

※ 이미지는 직접 파일을 구하여 이름의 맞게 넣어주어야 한다. 아래 사이트에 가면 사용할 여러 이미지를 받을 수 있다.

 

https://material.io/resources/icons/?style=baseline

 

Resources

Build beautiful, usable products faster. Material Design is an adaptable system—backed by open-source code—that helps teams build high quality digital experiences.

material.io

 

 

 

 

 

 

 

* MainActivity

package com.example.myapplication;

import android.os.Bundle;

import androidx.appcompat.app.AppCompatActivity;
import androidx.viewpager.widget.ViewPager;

import com.google.android.material.tabs.TabLayout;

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {

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

        ViewPager vp = findViewById(R.id.viewpager);
        VPAdapter adapter = new VPAdapter(getSupportFragmentManager());
        vp.setAdapter(adapter);

        // 연동
        TabLayout tab = findViewById(R.id.tab);
        tab.setupWithViewPager(vp);

        ArrayList<Integer> images = new ArrayList<>();
        images.add(R.drawable.cal);
        images.add(R.drawable.sea);
        images.add(R.drawable.set);

        for(int i=0; i<3; i++) tab.getTabAt(i).setIcon(images.get(i));
    }
}

 

 

 

 

 

 

 

 

 

2. Adapter

- 탭과 연동을 해주면 탭의 텍스트가 표시가 안되게 된다. 그래서 이를 표시해주기 위하여 Adapter파일로 간다.

 

- 'Ctrl + O' 를 눌러 getPageTitle을 타이핑하여 찾은 후 추가해 준다.

 

- 탭 아이템들의 표시할 텍스트를 ArrayList를 선언하여 저장해준 후 getPageTitle에서 position에 따라 표시하도록 한다.

 

 

 

 

 

 

 

 

3. Tab Layout

- app:tabIndicatorColor 를 사용하여서 탭의 indicator 색을 변경해 줄 수 있다.

 

- app:tabSelectedTextColor 를 사용하여서 선택된 탭의 텍스트 색을 변경해 줄 수 있다.

 

- 더욱 복잡한 효과를 적용하고 싶다면 직접 파일로 만들어 적용해 주어야 한다.

 

( ※ app: 속성을 찾지 못할 때는 'app:' 까지 입력하면 추가할 것인지 물으면 'Alt + Enter' 를 해주면 된다. )

 

 

 

 

 

 

 

4. 실행 결과

- 이전 글에서와 달리 탭을 눌러도 그에 따라 페이지가 변하며 페이지를 변경하여도 그에따라 탭도 변경된다.

 

 

탭의 텍스트만 넣고 싶다면 위에서 이미지를 넣는 부분을, 이미지만을 넣고 싶다면 텍스트를 넣는 부분을 빼주면 된다.

 

 

 

 

안드로이드 뷰페이저 + 탭  구현하기

 

 

 

 

결과

실행 화면

 

 

 

 

뷰 페이저(ViewPager)

 

좌우로 화면을 밀어 페이지를 전환할 수 있는 뷰

 

 

 

 

탭(Tab Layout)

 

뷰 페이저와 연동하여 뷰 페이저의 페이지들의 메뉴처럼 사용할 수 있다.

 

 

 

 

 

 

 

구현

 

1. 레이아웃 구현

- TabLayout 을 추가해주면 다음과 같은 창이 뜬다면 OK를 누른다. ( 필요로 하는 라이브러리를 추가하겠다고 묻는거다)

 

 

 

 

 

 

- 라이브러리를 추가하고 sync를 하느라 잠시 기다려야 한다. Module: app의 가보면 가장 하단의 material이 추가되었다.

 

 

 

 

 

 

- 이제 다음과 같이 레이아웃을 구성해 준다.

 

 

 

 

 

* 레이아웃 코드

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <com.google.android.material.tabs.TabLayout
        android:id="@+id/tab"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <com.google.android.material.tabs.TabItem
            android:id="@+id/tab_Item1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Tab1" />

        <com.google.android.material.tabs.TabItem
            android:id="@+id/tab_Item2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Tab2" />

        <com.google.android.material.tabs.TabItem
            android:id="@+id/tab_Item3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Tab3" />
    </com.google.android.material.tabs.TabLayout>

    <androidx.viewpager.widget.ViewPager
        android:id="@+id/viewpager"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</LinearLayout>

 

 

 

 

 

 

 

2. 페이지로 사용할 Fragment 생성

- 뷰 페이저의 보여줄 페이지를 작성하기 위하여 Fragment를 만들어 준다.

(반드시 Fragment일 필요는 없지만 Fragment를 사용하여 쉽게 구현이 가능하다.)

 

 

 

 

 

- 해당 예시에서는 3개의 페이지만을 이용하므로 위 과정을 반복하여서 Fragment1부터 3까지 만든다.

 

 

 

 

 

- 각 페이지가 전환된 것을 구분하기 편하게 하기 위하여 3개의 Fragment 레이아웃에서 각각 다른 background-Color를 입혀준다.

 

 

 

 

 

 

 

3. ViewPager 의 Adapter 생성

- Java Class 파일을 하나 생성한 후 FragmentPagerAdapter를 상속받도록 한다. 상속받는 것 까지 하였으면 위 이미지처럼 빨간 라인이 보인다.

 

- 커서를 클래스 안에 두고 'Ctrl + i' 를 누르면 위 이미지 처럼 창이 뜨며 2가지를 추가해준다.

 

- 이후 'Alt + Insert' -> Constructor(생성자)를 선택하여 추가해주면 빨간 라인이 사라지며 기본적인 구조가 완성된다.

 

 

 

 

 

 

- ArrayList를 Fragment형으로 정의하여 선언 후 이전에 생성하였던 Fragment 1~3까지 add를 이용하여 추가해 준다.

(※ Fragment 이름을 위와 다르게 하였다면 이름을 맞추어주어야 한다.)

 

 

 

 

* Adapter 코드

package com.example.myapplication;

import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentPagerAdapter;

import java.util.ArrayList;

public class VPAdapter extends FragmentPagerAdapter {
    private ArrayList<Fragment> items;
    public VPAdapter(FragmentManager fm) {
        super(fm);
        items = new ArrayList<Fragment>();
        items.add(new Fragment1());
        items.add(new Fragment2());
        items.add(new Fragment3());
    }

    @Override
    public Fragment getItem(int position) {
        return items.get(position);
    }

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

 

 

 

 

 

 

 

4. MainActivity

- ViewPager와 구현하였던 Adapter를 생성해 준 후 연결해 준다.

 

 

 

 

 

 

 

5. 실행 결과

- 실행을 한 후 페이지를 끌어 옆으로 넘기면 페이지가 전환되는 것을 확인할 수 있다. 하지만 tab과 페이지는 따로 동작한다.

 

 

 

 

위 문제를 해결하기 위해서는 탭과 페이지를 연동해주어야 하며 이는 다음글에서 다룬다.

또한, 추가적으로 탭 레이아웃의 이미지를 넣어 볼 것이다.

 

 

 

 

2020/02/13 - [Android] - 안드로이드 뷰페이저, 탭 레이아웃 구현 (2)

불러오는 중입니다...

 

 

 

 

 

 

 

adb를 이용한 스마트폰 원격 연결 방법

 

 

 

1.  [Window + r] -> cmd 실행 -> adb 엔터

이렇게 입력을 하면 없는 명령어라고 나온다.

 

 

 

2. 우선 안드로이드 스튜디오를 설치할 때 같이 설치된 adb를 찾아야 한다.

보통은 C:\Users\사용자명\AppData\Local\Android\Sdk\platform-tools 해당 위치에 있다.

 

AppData는 숨김 파일이라는 점을 주의해야 한다.

 

 

 

3. adb.exe 파일을 찾았다면 이 위치를 환경 변수의 저장해 준다.

 

제어판\시스템 및 보안\시스템 -> 고급 시스템 설정 -> 고급 탭 -> 환경 변수 ->

변수 목록의 Path 선택 -> 편집 클릭 -> 위 2번의 경로를 추가해 준다.

 

 

 

4. 다시 cmd를 실행하고 adb를 입력하면 1번과 달리 adb(Android Debug Bridge)가 실행된다.

 

 

 

5. 이제 연결할 스마트폰을 USB로 연결해 준다.

 

 

 

6. 아래 문을 입력해 준다.

 

> adb tcpip [포트번호]

 

포트 번호는 본인이 마음대로 지정해주는 것이며, 이미 사용중인 다른 포트와 겹치면 안된다. 모르겠다면 5000~9999 사이의 적당한 값을 입력해준다.

위처럼 뜬다면 성공한 것이다.

 

해당과정은 포트를 지정해주는 것이므로 이후 재연결 시 다시 시도할 필요가 없다.

 

 

 

 

 

7. 포트 지정까지 끝났다면 이제 

> adb connect [스마트폰의 연결된 와이파이 ip주소]:[위에서 지정한 포트번호]

 

※ 스마트폰의 연결된 Wifi를 클릭해보면 해당 Wifi의 IP주소를 알 수 있다.

※ 원격 연결을 하기 위해서는 스마트폰과 해당 컴퓨터가 같은 네트워크의 연결되어있어야 한다.

 

성공하였으면 원격 연결이 되었다. 

 

이제 USB를 제거하고 안드로이드 스튜디오에서 원격으로 애플리케이션을 다운받아서 테스트 해볼 수 있다.

 

 

 

 

8. 연결을 해제 해 줄 때는

 

> adb disconnect

 

입력해 준다.

 

 

 

 

 

+) 연결해 줄 때마다 위 과정을 일일이 처리하기는 귀찮다.

 

그래서 해당 과정을 .bat파일로 만들면 간단히 해당 구문을 실행할 수 있다.

 

 

메모장 -> 7번에서 입력하였던 adb connect [스마트폰의 연결된 와이파이 ip주소]:[위에서 지정한 포트번호] 입력 후 저장 -> 파일 형식은 모든 파일을 선택한 후 파일명의 .bat을 붙인다.

 

-> 마찬가지로 연결을 해제해주는 8번도 .bat파일로 만들어 주면 파일을 실행함으로써 간단하게 연결해주고 해제해 줄 수 있다.

 

 

 

 

 

 

안드로이드 회전 고정/설정     

 

 

액티비티는 회전 시 재시작하므로 데이터를 복원해주는 코드를 구현 해야한다.

 

하지만 이를 구현하지 않기 위해서는 화면을 고정되도록 하면 된다.

 

또한 레이아웃 상 화면 방향을 고정하고자 할 때 화면을 고정하면 된다.

 

 

 

 

 

예시)매니페스트 파일

 

[매니페스트 파일] -> [ 해당 activity 속성 ] ->

 

가로 고정

android:screenOrientation="landscape"

 

 

세로 고정

android:screenOrientation="portrait"

 

을 추가해주어야 한다.

 

 

※ 단, 액티비티의 속성이므로 액티비티마다 설정을 해주어야 한다. 위 이미지를 보면 MainActivity는 가로로 고정 되었지만 Main2Activity는 설정을 해주지 않아 화면이 회전 되는 것을 볼 수 있다.

 

이는 특정 액티비티에서만 화면 방향을 고정 할 수 있게 한다는 장점이 있지만, 액티비티마다 속성을주어야 한다는 단점이 있다.

 

 

안드로이드 다중 창 설정하기     

 

 

다중 창(multi windows) 기능이란 안드로이드 7.0 누가부터 추가 된 기능이다. 

 

기본값으로 사용이 가능하도록 되어있으므로 애플리케이션의 설정을 건드리지 않는다면 다중 창을 지원한다.

 

하지만 다중 창을 사용할 때는 액티비티가 재시작되므로 화면 회전같은 경우와 마찬가지로 데이터를 유지시키도록 처리해야한다.

 

화면 회전과 마찬가지로 데이터 처리부분을 구현 안 할것이면 다중 창 모드를 지원하지 않도록 하면 된다.

 

 

 

 

예시)매니페스트 파일

 

[매니페스트 파일] -> [ application 속성] ->

android:resizeableActivity = "false"

를 추가 해 준다.

 

 

기본 값은 true로써 다중 창 모드를 지원하도록 되어있다.

 

 

+ Recent posts