使用Progress
控件很方便,但是如果有居中需求的话,某些场景会增加一层布局嵌套
而且每个布局都要书写,很麻烦
而使用ProgressDialog
书写起来很方便,但是某些场景不能很直接的提供正确的上下文.(容器不是activity
或 fragment
时)
各位大哥在实际开发中如何实现进度条的需求的?
//我尝试这样操作的情况,下 在app第一次进入的时候,我点击按钮向容器上添加progressbar的时候,这个progressbar是不会旋转的,卡在界面上
//而关闭这个activity后(app中还有activity存在),再次进入activity 继续添加,这时候progressbar就会旋转了,这是为什么呢?
ProgressBar progressBar = new ProgressBar(this);
ViewGroup decorView = (ViewGroup) getWindow().getDecorView();
FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT, Gravity.CENTER);
progressBar.setLayoutParams(layoutParams);
decorView.addView(progressBar);
이에 대해서는 건설적인 제안을 드릴 수 없습니다. 때로는 문제를 해결하기 위해 ProgressBar에 대한 xml 인터페이스를 작성하고 이를 사용할 때 이를 확장한 다음 원하는 경우 이를 BaseActivity 로직은 다른 레이어에 캡슐화되므로 기본적으로 몇 가지 간단한 요구 사항을 충족할 수 있습니다.
더 복잡하게 하려면 진행률 표시줄이 사용자 작업과 상호작용하도록 하세요. 예를 들어 편집 인터페이스에 이미지 업로드를 위한 입구가 있는 경우 사용자가 업로드를 기다리는 동안 진행률 위젯에 대한 제출 키를 변경할 수 있습니다. 이미지를 선택한 후 사용자의 작업을 방해할 뿐만 아니라 진행 상황을 효과적으로 안내합니다.
ProgressDialog의 경우 너무 차단적이라고 생각합니다. 다음 단계로 진행하기 전에 특정 파일을 로드해야 하는 경우와 같이 논리적 순서가 강한 일부 시나리오를 제외하면 일반적으로 권장되지 않습니다.
Application
을 예로 들어보겠습니다.대화상자 팝업의 프록시로 액티비티 작성
startActivity(인텐트)
실제로 질문에 나오는 "컨텍스트가 제대로 제공되지 않습니다"가 어떤 시나리오인지에 더 관심이 있습니다. 질문자는
progressbar
이 맥락을 알 수 있었지만progressdialog
는 알 수 없었던 어떤 시나리오에 직면했습니까?액티비티 또는 프래그먼트 컨테이너가 아닌 경우 컨테이너는 생성 시 액티비티 또는 프래그먼트에 있어야 합니다.
그렇지 않은 경우 해당 상위 컨테이너 또는 상위 컨테이너는 액티비티 또는 프래그먼트에 있어야 합니다. .
이 경우 생성자를 통해 컨텍스트를 레벨별로 전달할 수 있겠죠?