Android 글로벌 팝업 창 및 클릭 응답 조작

2807 단어
어떤 장면에서 예를 들어 우리의 응용 프로그램이 백엔드로 돌아올 때 사용자가 다시 응용 프로그램으로 돌아오면 알림으로 상자를 팝업하거나 사용자가 조작할 수 있는 단추가 있어야 한다.기능이 비교적 간단할 수 있다. 순전히 기록을 하고 실현 방식이 다양하다. 다음은 다음과 같다.관련된 페이지는 모두 BaseActivity를 계승하는데, 거의 모든 논리가 이 베이스에 쓰여 있다.
2. 모든 페이지가 지금 보이지 않는다는 것을 알아야 한다.시스템은 스스로 이런 방법을 가지고 있다.클래스를 써서 시스템을 직접 실현하는 방법: Application.ActivityLifecycleCallbacks 1)public class ActivityLifecycleController implements Application.ActivityLifecycleCallbacks {
private static boolean isAppInForeground;
private static int started;
public ActivityLifecycleController() {
    started = 0;
}
@Override
public void onActivityCreated(Activity activity, Bundle savedInstanceState) {

}

@Override
public void onActivityStarted(Activity activity) {     
    ++started;
}

@Override
public void onActivityResumed(Activity activity) {

}

@Override
public void onActivityPaused(Activity activity) {
}

@Override
public void onActivityStopped(Activity activity) {
    --started;
}

@Override
public void onActivitySaveInstanceState(Activity activity, Bundle outState) {

}

@Override
public void onActivityDestroyed(Activity activity) {

}
//     
public static int getStartedCount(){
    return started;
}

}
2) 일반적으로 자체적인 BaseApplication이 있고 시스템의 Application을 계승한다.onCreate 방법에서 앞의 생명주기 제어 클래스를 초기화합니다:registerActivityLifecycleCallbacks (new ActivityLifecycleController ();
3. 준비 작업이 완료되면 사용자가 백그라운드로 돌아가는 작업은 Home 키나 메뉴 키를 통과할 수 있습니다. 이때onStop 방법에서 상기 제어 클래스를 호출하는 방법: int startActivity Count =Activity Lifecycle Controller.getStartedCount(); 수량이 0일 때 모든 페이지가 stop으로 갔습니다. 이 때 응용 프로그램이 백엔드로 되돌아왔음을 의미합니다.온 리소스 방법에서 이 값을 판단하면 탄창이나 토스트를 선택할 수 있다는 것을 기억하기 위해 값을 설정할 수 있습니다.
4. 팝윈도우나 다이어로그를 계승하는 것도 권장하지 않는다.DialogFragment를 사용하는 것을 추천합니다. 더욱 높은 복용성 (결합 감소) 과 편리성 (화면 뒤집기를 잘 처리하는 경우) 을 가지고 있습니다.예를 들어 회전 스크린의 경우 DialogFragment 기반 대화상자는 Fragment Manager에서 자동으로 재구성하지만 Dialog 기반 대화상자는 이러한 능력이 없습니다.여기에 비교적 일반적인 방법//새 public static void news Instance(Fragment Manager fm) {Fragment Transaction = fm.begin Transaction(), Fragment fragment = fm.find Fragment ByTag("TestDialog"), if(null!=fragment) {fragment Transaction.remove(fragment);TestDialog testDialog= new TestDialog(); myDialogFragment.show(fragmentTransaction, “TestDialog”); }
@Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) { getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE); View view=LayoutInflater.from(getActivity()).inflate(R.layout.fragment_dialog_study_record_rule, container,false); return view; } 여기에서 누군가가 창설하는 것은 이런 방법이 아니라 onCreate Dialog 방법일 수도 있지만 평소에 사용하면서 저는 사용하지 않았습니다. 대부분의 경우 창문에 둥근 배경이 있고 이 방법을 사용하면 효과가 없습니다.신이 아신다면 하나, 둘 알려주십시오.

좋은 웹페이지 즐겨찾기