Android实现底部支付d窗效果

Android实现底部支付d窗效果,第1张

概述Android底部支付d窗实现的效果:实现的思路:1.通过继承PopupWindow自定义View来达到d窗的d出效果;

AndroID底部支付d窗实现的效果:

实现的思路:

1.通过继承PopupWindow自定义view来达到d窗的d出效果;

2.通过回调将输入的密码由d窗传入到主界面中;

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); //设置d出窗体动画效果  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监听判断获取触屏位置如果在选择框外面则销毁d出框 //   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();   }  });  }  } 

分析:可以看到,主界面的代码异常简单,主要是通过自定义一个帮助类来进行d窗的显示――>因为d窗很可能在多个界面使用,所以这种写法个人还是比较喜欢的。另外通过回调将d窗对象给传输出来,以便在使用的时候根据网络请求的具体情况来控制d窗的显示与取消。

帮助类的代码:

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); //设置窗口显示在parent布局的位置并显示  inputMethodManager imm = (inputMethodManager) activity.getSystemService(Context.input_METHOD_SERVICE);//自动打开软键盘  imm.toggleSoftinput(0,inputMethodManager.HIDE_NOT_ALWAYS);   } 

分析:两点――>1.负载布局文件;2.控制软键盘显示与关闭;

另外一个很重要的点,花了不少时间才去发现:d窗d起的时候,软键盘一般是会覆盖一部分输入框的,这是非常不好看的。之所以demo中没有出现这种情况,是通过了特殊的处理――>将整个d窗布局外包一层ScrollVIEw,这样方便软键盘d起找到输入框焦点时会将整个布局往上顶。但,这还不够,一定要在ScrollVIEw中设置一个属性:

androID:fillVIEwport="true" 

最后,GitHub地址>>https://github.com/ganshenml/BottomDialogApp

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。

总结

以上是内存溢出为你收集整理的Android实现底部支付d窗效果全部内容,希望文章能够帮你解决Android实现底部支付d窗效果所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1147098.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存