default 값으로 되어 있는 화면 전환 애니메이션은 너무 구리다ㅋ

엄청 삐까리한건 아마도 API나 오픈 소스를 통해서 찾아봐야할 것 같은데,

가장 깔끔한 페이드인, 페이드아웃 애니메이션을 적용해보려고 한다.

 

1. res 에 anim 라는 폴더를 추가하고, fadein.xml 과 fadeout.xml 파일을 생성한다.

anim 폴더

 

나는 다음과 같은 방법으로 파일을 추가했다.

그리고 파일 명과 함께 확장자를 적어주면 된다.

 

(파일생성과 파일명 적는 방법을 적어놓은 이유는 나같은 완전 초보자는 파일 생성도 힘들기 때문에 적어두었다......)

따라서, 더 좋은? 혹은 간편한 방법을 안다면 사용해도 무방합니다.

 

 

2. 각 파일에 다음과 같은 코드를 구현한다.

<!-- fadein.xml -->

<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="500"
    android:fromAlpha="0.0"
    android:toAlpha="1.0" />
<!-- fadeout.xml -->

<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="500"
    android:fromAlpha="1.0"
    android:toAlpha="0.0" />

각 파일에 다음고 같이 코딩하면 됩니다. 복붙 궈궈..

duration, fromAlpha, toAlpha 속성을 다음과 같이 지정해주면 됩니다.

각 안드로이드 속성을 확인하면 어떤 의미인지 대충 감이 오지요?-?

 

 

3.  화면 전환 intent 코드에 삽입한다. (intent 코드를 적용하는 java 파일에서 작업합니다.)

Button.setOnClickListener(new View.OnClickListener() {
	@Override
	public void onClick(View v) {
		Intent intent = new Intent(getApplicationContext(), 이동할 페이지의 자바 파일명.class);
		startActivity(intent);
		overridePendingTransition(R.animation.fadein, R.animation.fadeout);
	}
 });

 

다음과 같이 overrigePendingTransition 메서드를 추가해줬습니다.

 

추가적으로, 아무런 애니메이션을 주고 싶지 않다면 다음 코드를 사용하시면 됩니다.

overridePendingTransition(0, 0);

 

 

그럼 최종적으로 아름답게 스르륵- 스르륵- 넘어가는 앱이 될 것 입니다. ㅎ

 

 

예를 들어서 이런 화면이 있다고 하자.

이 화면은 하나의 .xml에 3개의 A,B,C 버튼 액티비티가 있는 예시 그림이다.

 Main.xml 과 각각의 A.xml   B.xml   C.xml 이 있다고 가정한다. 

호기롭게 intent를 사용하여, xml 내부의 버튼을 이용하여

Main - A - Main - B - Main - C -Main 

으로 이동했다.

마지막에 만족스러운 마음으로 하드웨어 버튼으로 어플을 종료하려는 순간

Main - C - Main - B - Main - A -Main 

와 비슷한 순서대로 내가 들어갔다가 나왔던 화면들이 쌓여있어서 하드웨어 버튼을 8번을 눌러야 종료가 되었다.

 

헉... 이럴땐 어떻게 해야하는가?

이건 Manifest 에서 각 .xml의 속성에 다음 포스팅을 참조하여 추가하면 된다.

https://m.blog.naver.com/PostView.nhn?blogId=manhdh&logNo=120162763951&proxyReferer=https:%2F%2Fwww.google.com%2F

 

Activity 의 LaunchMode

LaunchMode 란?엑티비티 실행시 쌓이는 엑티비티 스택에 대한 운영 방식을 설정하는 모드이다.하나의 엑...

blog.naver.com

https://blog.naver.com/huewu/110087045138?proxyReferer=

 

안드로이드 알아두면 요긴한 FLAG_ACTIVITY 네 가지

<안드로이드는 굉장히 유용한 FLAG_ACTIVITY 들을 제공합니다.> 일반적인 경우, 안드로...

blog.naver.com

 

 

 

앱을 개발하다보면 페이지를 이동할 때가 많은데,

안하다보면 또 까먹는다... 그렇게 많이 사용했음에도 불구하고...

아마도 너무 습관처럼 사용해서 까먹게 되는 것 같다.

 

페이지의 이동에서는 Intent 메소드를 사용하면 된다.

package com.example.uprotest03;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.WindowManager;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {

    Button title_settings;

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

        // 버튼 액티비티 선언
        title_settings = findViewById(R.id.title_settings);

        // 설정
        title_settings.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intentSetting = new Intent(getApplicationContext(), Settings.class);
                startActivity(intentSetting);
            }
        });

    }
}

 

이런식으로 보통 클릭 이벤트에 섞어서 많이 쓰는 편이다.

만약 클릭 이벤트에 사용하지 않고, MainActivity에서 바로 Intent를 사용해버리면

앱을 시작하자마자 설정해준 화면으로 넘어가버린다ㅋㅋ

 

 

처음으로 emulater로 build하면 다음과 같은 화면을 볼 수 있다.

 

뭔가 되게 보기 싫게 생겼다...

맨 위에 "test1" 이라고 적힌 곳이 타이틀바 이다.

나는 어플을 만들때 타이틀바가 필요없으므로 지워야한다.

 

방법은 간단하게 2가지 정도가 있다.

 

 

 

 

 

 

 

 

1. style.xml 에서 windowNoTiltle 속성 추가하기.

<!-- res\values\style.xml 에 들어가서 windowNoTitle 속성을 true로 추가한다. -->

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Base.Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="windowNoTitle">true</item>
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>

</resources>

 

이건 정말 여러번 써봤는데, 이 style 속성 하나 때문에 오류가 난 적이 한 둘이 아니었다.

에뮬레이터 실행시 어플이 바로 종료되거나 하는 문제가 발생할때가 있다... (원인모름)

가끔 안먹을때도 있던데...

 

 

2. Manifest.xml 에서 NoActionBar 속성 추가하기. (타이틀바+액션바 둘 다 사라진다.)

<!-- Manifext.xml 파일에 android:theme="@style/Theme.AppCompat.NoActionBar" 속성을 추가한다.-->

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.AppCompat.NoActionBar">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

 

 

+) 실행결과

 

2번째 방법으로 해보면, 이런 결과가 나온다.

full screen이 된다.

 

2020 Edition...

너무너무 불편하고, 또 오랜만에 안드로이드 스튜디오를 접하는 사람으로써 너무 당황스러웠다.

build는 왜 안되는건지.. 그저 답답할 뿐ㅠ.. 그래서 이전 버전의 안드로이드 스튜디오를 찾아서 설치했다.

 

 

1) 아래의 URL로 접속한다.

https://developer.android.com/studio/archive

 

Android Studio download archives  |  Android 개발자  |  Android Developers

This page provides a download archive of Android Studio releases.

developer.android.com

 

2) I AGREE TO THE TERMS 를 클릭한다.

 

3) 이런 LIST 가 나올텐데, 이건 이전 버전의 Android Studio들

 

그 중에서 지금의 최신 2020 Edition이 아니라, 바로 이전버전을 찾았기 때문에

Android Studio 3.5.1 항목을 다운로드 받았다.

(여러가지 다운받아서 실행해봤는데, 3.6.0 이상 버전은 전부 2020 Edition 인 것 같았다.)

 

노란색으로 표시된 부분을 클릭하면 .exe 파일이 다운받아진다.

 

이런 문제가 발생한다.....

 

그럼, 제어판에 들어가서

시계 및 국가 > 국가 또는 지역 > 날짜 시간 또는 숫자 형식 변경 > 관리자옵션 > 시스템 로캘 변경 

 

 

설정을 변경한다.

 

단, 이 설정을 사용 시....

excel 에서 매크로 기록이 불가하다...

다른 방법이 없을까..ㅎ 일단은 사용해본다...

 

나는 항상 Equals만 써서 별 생각 없었는데

Mpaper(https://mpaper-blog.tistory.com/)가 IS가 계속 안먹는다고 포럼에 글을 올려보자고 했다.

 

https://forum.uipath.com/t/what-is-the-difference-between-the-two-is-and-equlas/212529

 

What is the difference between the two, "Is" and "Equlas"?

Hi guys! 😄 I have a questions… UiPath has two method “is” and “equals”. But, I don’t know the difference between the two… Example for, var1 = “apple” and there are two codes. condition1 -> var1.equals(“apple”) => Can be run condition2 -> var1 is “apple” =>

forum.uipath.com

 

정리해보자면,

Is

Is 연산자는 두 개체 참조가 동일한 개체를 참조하는지 여부를 확인한다.

그러나 값 비교를 수행하지는 않는다. 비교하는 두 값이 정확히 동일한 개체 인스턴스를 참조하는 경우 True, 그렇지 않으면 False를 수행한다.

Equals

답변해준건 String.Equals 라서 String의 값을 비교할 수 있다고 하는데,

어떤 데이터 타입일지라도 그 값을 가지고서 같은지 비교할 수 있는 것 같다.

즉, 타입과 상관없이 값의 비교를 할 수 있다는 것

 

 

Is 는 참조하는 객체의 메모리 개념이었고

Equals는 값을 비교하는 개념이었다

(결국 is는 참조 객체를 가르키는 주소 값이기 때문에 값 비교가 되지 않는다..)

 


1. Equals에 관련된 .Net 자료

https://docs.microsoft.com/ko-kr/dotnet/api/system.object.equals?view=netframework-4.8

 

Object.Equals 메서드 (System)

 

두 개체 인스턴스가 같은지 확인합니다.Determines whether two object instances are equal.

docs.microsoft.com

2. Is와 관련된 .Net 자료

https://docs.microsoft.com/ko-kr/dotnet/visual-basic/language-reference/operators/is-operator

 

Is 연산자 - Visual Basic

Is 연산자(Visual Basic)Is Operator (Visual Basic) 이 문서의 내용 --> 두 개체 참조 변수를 비교 합니다.Compares two object reference variables. 구문Syntax result = object1 Is object2 요소Parts result 필수입니다.Required. Boolean 값입니다.Any Boolean value. object1 필수입니다.Required. 모든 Object 이름

docs.microsoft.com

 

 

- tenant : Folder의 하위 개념. 큰 조직에서 프로젝트를 사용하게 되면 각 부서나 조직에서 job, process, log, machine, robot등을 속하게 해서 사용하는 것. 자신의 tenant에서만 볼 수 있는 것. 보안적인 측면에서 다른 tenant를 볼 수 없도록 만든 것. 부서간의 오케스트레이터를 효과적으로 관리하기 위한 것.

- SLA : 서비스를 제공하는데 있어서 어느정도 선안에서는 들어와야한다. 이 기준을 두고서 서비스를 제공할 수 있는 수준이 됨. 그래서 고객과 SLA 의 퀄리티 수준에서 합의한다. 하는 그 선을 SLA 라고하는 것. 정해진 시간 안에는 돌아야한다던지, 아무리 늦어도 어떤 시간 안에는 해야한다고 기준을 두고 정의하는 것을 SLA 라고 함.
- UIPath에서 항목에 대한 SLA를 제공하는 것. SLA를 위반하게 되면 오케스트레이터의 Alert에서 확인해 볼 수 있음.

- 오케스트레이터의 큐에서 Detail View를 하면 SLA를 적용할 수 있음.

 

 

 

+ Recent posts