[건재] 다이어로그의 고랭용법
public void setContentView(int layoutResID) {
mWindow.setContentView(layoutResID);
}
Dialog의 원본 코드를 보십시오. setContentView ().이것은 문제를 간단하게 만들었다. 이제 우리는Dialog를 사용자 정의하여 레이아웃 파일에 전송한 다음에 이Dialog를 전체 화면의 시뮬레이션으로Activity로 설정하면 된다
package hi.xiaoyu.hi_xiaoyu_dialog.ui;
import hi.xiaoyu.hi_xiaoyu_dialog.R;
import hi.xiaoyu.hi_xiaoyu_dialog.adapter.CommonPageAdapter;
import java.util.ArrayList;
import java.util.List;
import android.app.Dialog;
import android.content.Context;
import android.graphics.Rect;
import android.support.v4.view.ViewPager;
import android.util.DisplayMetrics;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.widget.ImageView;
public class ImgScanHelper extends Dialog implements android.view.View.OnClickListener {
private List<String> mListImgUrls;
private Integer[] mImgIds;
private Context mContext;
private ViewPager mViewPager;
private int mClickItem;
public ImgScanHelper(Context context, Integer[] imgIds, int clickItem) {
//
super(context, R.style.CustomDialog_fill);
this.mContext = context;
this.mImgIds = imgIds;
this.mClickItem = clickItem;
initView();
}
public ImgScanHelper(Context context, List<String> imgUrlss, int clickItem) {
//
super(context, R.style.CustomDialog_fill);
this.mContext = context;
this.mListImgUrls = imgUrlss;
this.mClickItem = clickItem;
initView();
}
private void initView() {
mViewPager = new ViewPager(mContext);
LayoutParams params = new LayoutParams(LayoutParams.MATCH_PARENT,
LayoutParams.MATCH_PARENT);
mViewPager.setLayoutParams(params);
mViewPager.setBackgroundColor(0xFF000000);
setContentView(mViewPager);
setParams();
initViewPager();
}
private void setParams() {
LayoutParams lay = this.getWindow().getAttributes();
DisplayMetrics dm = new DisplayMetrics();
this.getWindow().getWindowManager().getDefaultDisplay().getMetrics(dm);
Rect rect = new Rect();
View view = getWindow().getDecorView();
view.getWindowVisibleDisplayFrame(rect);
lay.height = dm.heightPixels - rect.top;
lay.width = dm.widthPixels;
}
private void initViewPager() {
if (mImgIds != null && mImgIds.length > 0) {
List<View> listImgs = new ArrayList<View>();
for (int i = 0; i < mImgIds.length; i++) {
ImageView iv = new ImageView(mContext);
LayoutParams params = new LayoutParams(
LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
iv.setLayoutParams(params);
listImgs.add(iv);
iv.setOnClickListener(this);
iv.setImageResource(mImgIds[i]);
//
// BitmapHelper.getInstance(mContext).display(iv,
// mListImgUrls.get(i));
}
if (listImgs.size() > 0) {
CommonPageAdapter pageAdapter = new CommonPageAdapter(listImgs);
mViewPager.setAdapter(pageAdapter);
mViewPager.setCurrentItem(mClickItem);
}
}
}
@Override
public void onClick(View v) {
this.dismiss();
}
@Override
public void dismiss() {
super.dismiss();
}
}
<style name="CustomDialog_fill" parent="@android:Theme.Dialog">
<item name="android:windowFrame">@null</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowNoTitle">true</item>
<item name="android:backgroundDimEnabled">false</item>
<item name="android:windowBackground">@color/white</item>
</style>
한 줄의 코드가 큰 그림의 미리보기를 실현하였다
new ImgScanHelper(MainActivity.this, mImgsIds, position).show();
여기서 우리는 다이얼로그를 하나의 Activity로 시뮬레이션하여 큰 그림 보기의 기능 수요를 실현했다.사실 우리가 비교적 간단한 수요 페이지를 만나거나 하나의 기능을 빌려주는 페이지로 분리해야 할 때 우리는Dialog 아날로그Activity의 방식으로 실현하면 코드를 더욱 간단명료하게 할 수 있다.그리고 복용성이 매우 높다. 예를 들어 위의 그림 미리보기 기능은 어디에나 쉽게 이식할 수 있다.요약:Dialog 아날로그Activity는 일부 경량급 기능 모듈에 적용된다. 예를 들어 도움말 기능, 이미지 보기, 이미지 미리보기 등 생명주기의 조작을 고려할 필요가 없다. 만약에 Activity가 이상하게 소각될 때 데이터 저장 조작을 해야 한다면 Activity나Fragment를 쓰는 데 시간을 많이 써야 한다.Activity와 Fragment에 비해 Dialog는 설정 파일에 등록할 필요가 없고 Fragment만큼 번거로운 생명주기가 없다. 만약에 당신의 UI 인터페이스가 생명주기에 따른 문제를 고려할 필요가 없다면 Dialog는Activity와 똑같은 기능을 거의 실현할 수 있다.Activity와 통신할 필요가 있다면 간단합니다. Dialog에 Activity의 인용이 있기 때문에 인터페이스 리셋, 알림 방송 등을 통해 통신할 수 있습니다.마찬가지로 당신도BaseDialog를 추출하여 코드를 추출하면 당신의 개발 효율을 크게 높일 수 있습니다.이제부터Dialog를 사랑하길 바래요!o(∩_∩)o
소스 주소
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
안드로이드 학습 - Intent👀 intent란? intent 는 Activity 의 메시지 객체입니다. 다른 앱 구성 요소로부터 작업을 요청하는 데 사용할 수 있습니다. 다른 액티비티로 이동 다른 액티비티로 데이터 전달 👀 Activity 실행...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.