Android,아래쪽 결제 창 효과 구현

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
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기