Android 사용자 정의 PopupWindow 멋 진 IOS 대화 상자 효과 구현
6615 단어 androidpopupwindowios대화 상자
최근 IOS 시스템 을 사용 하 는 과정 에서 IOS 아래쪽 팝 업 상자 가 매우 아름 답 고 대기 적 이 며 등급 이 높 은 것 을 발견 하 자 안 드 로 이 드 에서 비슷 한 대화 상 자 를 실현 할 수 있 을 까 하 는 생각 이 들 었 다.이것 은 쓸데없는 말 이 아 닙 니까?극소수의 시스템 급 모방 할 수 없 는 것 외 에(저작권)바가지 에 따라 조롱박 을 그 릴 수 없 는 것 이 무엇 입 니까?그래서 이 글 은 안 드 로 이 드 에서 높 은 모방 IOS 대화 상자 효 과 를 실현 하 는 방법 을 소개 할 것 입 니 다.먼저 그림 을 그 려 서 여러분 에 게 눈 을 즐겁게 할 것 입 니 다.
여러분 은 위의 대화 상 자 를 보 았 을 때 간단 한 실현 방향 을 생각 하지 못 하 셨 나 요?내 가 여기 서 제시 한 아 이 디 어 는 우리 가 PopupWindow 를 사용자 정의 한 다음 에 우리 의 레이아웃 을 설정 할 수 있다 는 것 이다.이 레이아웃 은 매우 기교 가 있 습 니 다.바로 대화 상자 중간의 투명 한 차단 구역 은 margin 값 입 니 다.각 격 리 된 item layot 의 배경 은 흰색 원 각 사각형 이 고 그 다음 에 PopupWindow 의 배경 을 투명 하 게 하면 됩 니 다.간단 하지 않 습 니까?자,코드 를 만들어 서 집 으로 가 져 갑시다.
여러분 도 제 지난 글 을 보 실 수 있 습 니 다.
코드 구현
1.레이아웃 작성
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:orientation="horizontal"
android:paddingTop="12dp"
android:paddingBottom="12dp"
android:background="@drawable/corner_white_bg"
android:layout_height="wrap_content">
<Button
android:id="@id/btn_share_weixin"
android:layout_width="0dp"
android:layout_weight="1"
android:drawableTop="@mipmap/ic_share_weixin"
android:drawablePadding="6dp"
android:background="@null"
android:textColor="@android:color/black"
android:textSize="@dimen/text_14_sp"
android:text="@string/weixin"
android:layout_height="wrap_content"/>
<Button
android:id="@id/btn_share_friends"
android:layout_width="0dp"
android:layout_weight="1"
android:drawableTop="@mipmap/ic_share_friends"
android:drawablePadding="6dp"
android:background="@null"
android:textColor="@android:color/black"
android:textSize="@dimen/text_14_sp"
android:text="@string/weixin_friends"
android:layout_height="wrap_content"/>
<Button
android:id="@id/btn_share_qq"
android:layout_width="0dp"
android:layout_weight="1"
android:drawableTop="@mipmap/ic_share_qq"
android:drawablePadding="6dp"
android:background="@null"
android:textColor="@android:color/black"
android:textSize="@dimen/text_14_sp"
android:text="@string/qq"
android:layout_height="wrap_content"/>
<Button
android:id="@id/btn_share_qq_zone"
android:layout_width="0dp"
android:layout_weight="1"
android:drawableTop="@mipmap/ic_share_zones"
android:drawablePadding="6dp"
android:textColor="@android:color/black"
android:textSize="@dimen/text_14_sp"
android:background="@null"
android:text="@string/qq_zones"
android:layout_height="wrap_content"/>
</LinearLayout>
<Button
android:id="@id/btn_cancel"
android:layout_width="match_parent"
android:textColor="@android:color/black"
android:textSize="@dimen/text_14_sp"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:text="@string/cancel"
android:background="@drawable/corner_white_bg"
android:layout_height="wrap_content"/>
</LinearLayout>
여기 서 차단 되 어 있 는 부분 은 두 개 이기 때문에 레이아웃 에 두 개의 view 배경 이 흰색 사각형 입 니 다.
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="10dp"/>
<solid android:color="@android:color/white"/>
</shape>
2.팝 업 창 계승
public class IosPopupWindow extends PopupWindow implements View.OnClickListener {
private Context mContext;
public IosPopupWindow(Activity activity) {
super(activity);
mContext = activity;
LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View contentView = inflater.inflate(R.layout.dialog_share, null);
setContentView(contentView);
int screenWidth = activity.getWindowManager().getDefaultDisplay().getWidth();
// popupwindow
this.setWidth((int) (screenWidth - 2 * dp2px(mContext,12f)));
this.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);
//
setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
//
this.setAnimationStyle(R.style.IosDialog);
//
this.setFocusable(true);
//
this.setOutsideTouchable(true);
initView(contentView);
}
이 코드 의 가장 중요 한 것 은 우리 의 PopupWindow 에 투명 한 배경 Drawable 을 설정 하 는 것 입 니 다.3.창 이 꺼 지면 외부 가 어 두 워 집 니 다.
/**
* popupwindow
*/
private void popOutShadow() {
final Window window = ((Activity) mContext).getWindow();
WindowManager.LayoutParams lp = window.getAttributes();
lp.alpha = 0.5f;//
window.setAttributes(lp);
setOnDismissListener(new OnDismissListener() {
@Override
public void onDismiss() {
WindowManager.LayoutParams lp = window.getAttributes();
lp.alpha = 1f;
window.setAttributes(lp);
}
});
}
Dialog 와 달리 PopupWindow 는 외부 가 어 두 워 지 려 면 붙 어 있 는 window 의 투명 도 를 바 꿔 야 하기 때문에 PopupWindow 에 전 달 된 Context 는 Activity 형식 이 어야 하 며 창 이 사라 질 때 Window 의 투명 도 를 초기 화해 야 합 니 다.마지막 으로 Ios PopupWindow 의 github 를 드 립 니 다.가 질 만 한 가치 가 있 습 니 다Android 사용자 정의 Dialog,시 크 한 주류 로 딩 대화 상자
총결산
위 에서 소개 한 안 드 로 이 드 사용자 정의 팝 업 윈도 우 는 시 크 한 IOS 대화 상자 효 과 를 실현 합 니 다.도움 이 되 셨 으 면 좋 겠 습 니 다.궁금 한 점 이 있 으 시 면 메 시 지 를 남 겨 주세요.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin의 기초 - 2부지난 글에서는 Kotlin이 무엇인지, Kotlin의 특징, Kotlin에서 변수 및 데이터 유형을 선언하는 방법과 같은 Kotlin의 기본 개념에 대해 배웠습니다. 유형 변환은 데이터 변수의 한 유형을 다른 데이터...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.