활동에 대한 첫 번째 살펴보기


이 섹션 소개:

이전 섹션에서 우리는 활동의 몇 가지 기본 개념, 활동이란 무엇인지, 활동의 수명 주기, 활동을 시작하는 방법 등에 대해 배웠습니다. 이 섹션에서는 활동에 대해 계속해서 배웁니다. 앱은 일반적으로 여러 활동 간의 데이터 전송 문제와 관련된 여러 활동으로 구성되므로 이전에도 이야기했으므로 이 섹션에서는 계속해서 활동의 사용법을 배웁니다! 추가적으로 인텐트에서 컬렉션, 객체, 배열, 비트맵을 전달하는 방법에 대해서도 설명하겠습니다. 여기서는 기본적인 데이터 전달 방법만 소개하겠습니다!


활동 간 데이터 전송:

1.png

코드 샘플:

렌더링:

2.gif

코드 다운로드: ActivityTest1.zip


2. 후자는 이전 것으로 다시 전달됩니다)

3.png

코드 예:

렌더링:

4.gif

코드 다운로드: ActivityTest2.zip


3. 현재 어떤 활동이 있는지 확인

5.png


4. 언제든지 모든 활동 닫기

6.png

때로는 많은 활동이 열려 있을 수 있으며 갑자기 특정 페이지에서 닫힐 수 있는 그러한 요구가 있을 수 있습니다. 모든 활동을 마치고 프로그램을 종료합니다! 음, 모든 활동을 종료하는 방법은 다음과 같습니다. 모든 활동을 저장하려면 목록 컬렉션을 사용하세요!

구체적인 코드는 다음과 같습니다.

public class ActivityCollector {
public static LinkedList();
public static void addActivity(Activity Activity)
{
ities.add(activity)
}
public static void RemoveActivity( 활동 활동) {
활동.remove (활동); T if (! Activity.isfinishing ())
{
Activity.finish ();
                                             ~ 모두 종료하려면 다음 코드와 함께 사용할 수 있습니다.


구현 코드:



/**
* 애플리케이션 종료
*/
public void AppExit(Context context) {
try {
ActivityCollector. FinishAll ();
          ActivityManager   ActivityMgr   =   (ActivityManager)                                                                    . );

} catch(예외 무시) {} ​​

}


6. 두 번 클릭하여 프로그램을 종료하는 두 가지 방법:

1) 종료 여부를 식별하는 변수 정의

// 종료 여부를 식별하는 변수 정의
private static boolean isExit = false;
Handler mHandler = new Handler() {
@Override
public void handlerMessage(Message msg) {
super.handleMessage(msg);
isExit = false;
}
};

public boolean onKeyDown(int keyCode, KeyEvent 이벤트) {
if ( keyCode == KeyEvent.KEYCODE_BACK) {
if (!isExit) {
isExit = true;
Toast.makeText(getApplicationContext(), "프로그램을 종료하려면 다시 누르세요.",
Toast.LENGTH_SHORT).show() ;
// 핸들러를 사용하여 변경된 상태 정보 전송을 지연
mHandler.sendEmptyMessageDelayed(0, 2000);
} else {
exit(this);
}
return false;
}
return super.onKeyDown(keyCode, event) ;}

2) 클릭 시간 저장:

//클릭 시간 저장
private long exitTime = 0;
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK ) {
if (( System.currentTimeMillis() -exitTime) > 2000) {
Toast.makeText(getApplicationContext(), "프로그램을 종료하려면 다시 누르십시오.",
Toast.LENGTH_SHORT).show();
exitTime = System.currentTimeMillis();
} else {
exit();
return false;
}
return super.onKeyDown(keyCode, event);
}

7. 활동에 대한 컷씬 설정

소위 컷씬은 페이드 인 및 아웃, 확대 및 축소, 왼쪽 및 오른쪽 밀기 등과 같은 다른 활동으로 전환할 때 일부 전환 애니메이션을 추가하는 것입니다! 물론 여기서는 애니메이션을 자세히 설명하지 않습니다. 여기서는 애니메이션을 로드하는 방법만 설명합니다. 일반적으로 사용되는 전환 애니메이션을 제공합니다. 관련 애니메이션 파일을 res/anim 디렉터리에 추가한 후 다음 방법 중 하나를 선택하세요. Activity의 전환 애니메이션을 실현할 수 있습니다!

1) 방법 1:

7.png

2) 방법 2:

스타일을 통해 구성합니다. 이는 전역적입니다. 즉, 모든 활동이 이 애니메이션을 로드합니다.

구현 코드는 다음과 같습니다.

① style.xml에서 스타일 사용자 정의:

<!-- 기본 활동 점프 애니메이션 -->
<style name="default_animation" mce_bogus= "1" parent="@android:style/Animation.Activity">
<item name="android:activityOpenEnterAnimation">@anim/default_anim_in</item>
<item name="android:activityOpenExitAnimation"> ;@anim/anim_stay</item>
  <item name="android:activityCloseEnterAnimation">@anim/anim_stay</item>
  <item name="android:activityCloseExitAnimation">@anim/default_anim_out</item> ;
</style>

설명:

4개의 항목은 각각 다음을 나타냅니다.

  • 활동 A가 활동 B로 점프할 때 활동 B가 애니메이션에 들어갑니다.
  • 활동 A가 활동 B로 점프할 때 활동 A가 애니메이션을 종료합니다.
  • 활동 B가 활동 A로 돌아올 때 활동 A의 애니메이션 입력
  • 활동 B가 활동 A로 돌아올 때 활동 B의 애니메이션 종료

②그런 다음 AppTheme을 수정합니다.

<style name="AppTheme" mce_bogus= "1" parent="@android:style/Theme.Light">
                                                                                                                                  ">true</item>
</style>

3마지막으로 애플리케이션 설정 아래:

<application
android:icon="@drawable/logo"
android:label="@string/app_name"
android:theme="@style/AppTheme" > ;

알겠습니다. 애니메이션 효과는 단 한 번의 클릭으로 설정됩니다~

3) 기타

알겠습니다. 위의 두 가지 방법 외에도 TransitionManager를 사용하여 구현할 수도 있지만 필수 버전은 API 19입니다. 또는 그 이상, addOnPreDrawListener 변환 애니메이션도 있는데, 사용하기가 조금 번거롭고 초보자에게는 적합하지 않을 수 있습니다. 여기서는 자세히 설명하지 않겠습니다. 마지막으로 일반적으로 사용되는 애니메이션 효과 패키지를 제공합니다. 필요한 특수 효과를 선택하여 프로젝트에 추가하세요. 일반적으로 사용되는 활동 전환 animation.zip


8. 번들 데이터 전송의 제한

번들을 사용하여 데이터를 전송할 때 이 값보다 큰 경우 번들 크기가 0.5MB로 제한된다는 점에 유의하세요. TransactionTooLargeException 예외가 보고됩니다! ! !


9 명령줄을 사용하여 모든 현재 활동의 명령을 확인하세요.

SDK에 대한 환경 변수를 구성한 경우 다음 명령을 사용하세요. adb shell dumpsys Activity


10. 활동 전체 화면 방법 설정:

1) ActionBar 코드 숨기기

Activity의 onCreate 메서드에서 getActionBar.hide()를 호출합니다.

2) requestWindowFeature

requestWindowFeature(Window.FEATURE_NO_TITLE)를 통해 설정합니다. 이 코드는 setContentView() 전에 호출되어야 합니다. 그렇지 않으면 오류가 보고됩니다! ! !

참고: requestWindowFeature(Window.FEATURE_NO_TITLE);를 super.onCreate(savedInstanceState) 앞에 두어 오류를 보고하지 않고 ActionBar를 숨기세요.

3) AndroidManifest의 theme

을 통해 전체 화면이 필요한 Activity의 라벨에 theme = @android:style/Theme.NoTitleBar.FullScreen을 설정합니다. 이 방법에 대한 공식 소개:


즉, 활동이 포커스를 얻거나 잃으면 이 메서드가 다시 호출됩니다! Activity가 로드되었는지 모니터링하고 싶다면 이 방법을 사용할 수 있습니다~ 이에 대해 자세히 알아보려면 다음 문서를 참조하세요. onWindowFocusChanged 트리거 소개

12. 대화상자 스타일 활동 정의

경우에 따라 활동을 대화상자 스타일로 설정해야 할 수도 있습니다. 일반적으로 전체 화면을 차지하고 있으며, 대화 상자가 화면의 일부를 차지합니다! 구현하기도 쉽습니다!

활동 테마 직접 설정:

android:theme="@android:style/Theme.Dialog"

그렇습니다. 물론 제목과 작은 아이콘도 설정할 수 있습니다!


//왼쪽 상단에 작은 아이콘 설정
requestWindowFeature(Window.FEATURE_LEFT_ICON);
setContentView(R.layout.main);
getWindow().setFeatureDrawableResource(Window.FEATURE_LEFT_ICON, android.R.drawable. ic_lion_icon);
//텍스트 설정:
setTitle(R.string.actdialog_title); //XML 코드로 설정: android:label="@string/activity_dialog"

이 섹션 요약:

좋아요. 이 섹션에서 다시 알아보세요. 실제 Activity 개발에서 발생하는 몇 가지 일반적인 문제를 살펴보겠습니다. 이것이 실제 개발에 있어 모든 사람에게 도움이 될 것이라고 믿습니다. 다음 섹션에서는 Activty의 스택 개념과 4가지 로딩 모드에 대해 배워보겠습니다! 기대해주세요~감사합니다~