Android,아래쪽 결제 창 효과 구현
실현 의 사고:
1.팝 업 윈도 사용자 정의 뷰 를 계승 하여 팝 업 창의 팝 업 효 과 를 얻는다.
2.리 셋 을 통 해 입력 한 비밀 번 호 를 팝 업 창 에서 메 인 화면 으로 전송 합 니 다.
2.네,이 정도 면 충분 합 니 다.->코드 에 주의 하 세 요.
사용자 정의 View 코드:
public class BottomDialogView extends PopupWindow {
private View dialogView;
private EditText payPassEt;
private Button cancelBtn, confirmBtn;
private ImageView backDialogIv;
public BottomDialogView(Activity context, final BottomDialogOnclickListener bottomDialogOnclickListener) {
super(context);
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
dialogView = inflater.inflate(R.layout.dialog, null);
backDialogIv = (ImageView) dialogView.findViewById(R.id.backDialogIv);
payPassEt = (EditText) dialogView.findViewById(R.id.payPassEt);
cancelBtn = (Button) dialogView.findViewById(R.id.cancelBtn);
confirmBtn = (Button) dialogView.findViewById(R.id.confirmBtn);
backDialogIv.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
dismiss();
}
});
cancelBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
dismiss();
}
});
confirmBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
bottomDialogOnclickListener.onPositiveClick(payPassEt.getText().toString().trim(), BottomDialogView.this);
}
});
this.setContentView(dialogView);
this.setWidth(LayoutParams.MATCH_PARENT);
this.setHeight(LayoutParams.MATCH_PARENT);
this.setFocusable(true);
this.setAnimationStyle(R.style.DialogShowStyle); //
ColorDrawable dw = new ColorDrawable(0xb0000000);
this.setBackgroundDrawable(dw);
dialogView.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
int height = dialogView.findViewById(R.id.pop_layout).getTop();
int y = (int) event.getY();
if (event.getAction() == MotionEvent.ACTION_UP) {
if (y < height) { // OnTouchListener
// dismiss();
}
}
return true;
}
});
}
}
분석:사실 간단 합 니 다.레이아웃 을 불 러 와 서 사용자 정의 View 에 레이아웃 을 불 러 올 수 없습니다.bottomDialogOnclickListener 는 사용자 정의 리 셋 인터페이스 로 주 인터페이스 에 값 을 전달 할 수 없습니다.주 인터페이스 코드:
public class ShowBottomDialogAct extends AppCompatActivity {
private Button showBtn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_show_bottom_dialog);
showBtn = (Button) findViewById(R.id.showBtn);
showBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
showDialog();
}
});
}
private void showDialog() {
DialogUtil.showBottomDialog(ShowBottomDialogAct.this, R.id.activity_show_bottom_dialog, new BottomDialogOnclickListener() {
@Override
public void onPositiveClick(String contentStr, BottomDialogView dialogView) {
dialogView.dismiss();
}
});
}
}
분석:메 인 인터페이스의 코드 가 매우 간단 하 다 는 것 을 알 수 있다.주로 하나의 도움말 류 를 사용자 정의 하여 팝 업 창 을 표시 하 는 것 이다.>팝 업 창 은 여러 인터페이스 에서 사용 할 수 있 기 때문에 이런 문법 은 개인 적 으로 비교적 좋아한다.또한 리 셋 을 통 해 팝 업 창 대상 을 전송 하여 사용 할 때 네트워크 가 요청 한 구체 적 인 상황 에 따라 팝 업 창의 표시 와 취 소 를 제어 할 수 있 도록 합 니 다.도움말 클래스 의 코드:
public static void showBottomDialog(Activity activity , int dialogLayoutId , BottomDialogOnclickListener bottomDialogOnclickListener){
BottomDialogView bottomDialogView = new BottomDialogView(activity, bottomDialogOnclickListener);
bottomDialogView.showAtLocation(activity.findViewById(dialogLayoutId), Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0, 0); // parent
InputMethodManager imm = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);//
imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);
}
분석:두 점―>1.레이아웃 파일 을 부하 합 니 다.2.소프트 키보드 의 표시 와 닫 기 제어;또 하나의 중요 한 점 은 많은 시간 이 걸 려 서 야 발견 했다.팝 업 창 이 튕 겨 나 올 때 소프트 키 보드 는 보통 입력 상자 의 일 부 를 덮어 쓰 는데 이것 은 매우 보기 싫 은 것 이다.demo 에서 이러한 상황 이 발생 하지 않 은 이 유 는 특수 한 처 리 를 통 해 전체 팝 업 창 구 조 를 ScrollView 로 아웃 소 싱 하여 소프트 키보드 팝 업 이 입력 상자 의 초점 을 찾 을 때 전체 구 조 를 위로 올 립 니 다.단,이것 도 부족 합 니 다.ScrollView 에 속성 을 설정 해 야 합 니 다.
android:fillViewport="true"
마지막 으로 GitHub 주소>>https://github.com/ganshenml/BottomDialogApp
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.