当前位置: 首页 > 编程笔记 >

Android实现底部支付弹窗效果

魏煜祺
2023-03-14
本文向大家介绍Android实现底部支付弹窗效果,包括了Android实现底部支付弹窗效果的使用技巧和注意事项,需要的朋友参考一下

Android底部支付弹窗实现的效果:

实现的思路:

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

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。

 类似资料:
  • 本文向大家介绍Android仿支付宝支付从底部弹窗效果,包括了Android仿支付宝支付从底部弹窗效果的使用技巧和注意事项,需要的朋友参考一下 我们再用支付宝支付的时候,会从底部弹上来一个对话框,让我们选择支付方式等等,今天我们就来慢慢实现这个功能 效果图 实现 主界面很简单,就是一个按钮,点击后跳到支付详情的Fragment中 接着是支付详情的Fragment代码 还有一个ScrollView嵌

  • 本文向大家介绍Android实现底部弹窗效果,包括了Android实现底部弹窗效果的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Android实现底部弹窗效果的具体代码,供大家参考,具体内容如下 源代码地址:https://github.com/luoye123/Box 东西很简单,我就直接亮代码了: 1、activity_main.xml 2、MainActivity.java

  • 本文向大家介绍jQuery实现底部浮动窗口效果,包括了jQuery实现底部浮动窗口效果的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了jQuery实现底部浮动窗口效果。分享给大家供大家参考,具体如下: 运行效果如下图: 更多关于jQuery相关内容感兴趣的读者可查看本站专题:《jQuery扩展技巧总结》、《jQuery常用插件及用法总结》、《jQuery拖拽特效与技巧总结》、《jQuery

  • 本文向大家介绍java Swing实现弹窗效果,包括了java Swing实现弹窗效果的使用技巧和注意事项,需要的朋友参考一下 使用Swing实现的一个简单弹窗功能,基本容器的使用办法,代码如下: 执行结果如下: 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 本文向大家介绍简单实现jQuery弹窗效果,包括了简单实现jQuery弹窗效果的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了jQuery弹窗效果展示的具体代码,供大家参考,具体内容如下 用到的点: jQuery创建:$('<div>'); 弹窗的位置: 当滚动条滚动时候,弹窗的位置变化: 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 本文向大家介绍Android实现支付宝AR扫描动画效果,包括了Android实现支付宝AR扫描动画效果的使用技巧和注意事项,需要的朋友参考一下 支付宝AR扫描效果动画实现,具体内容如下 之前一个网友说想要一个支付宝扫描动画的效果demo,所以又花了点时间做了下这个东西,先看效果图 说一下实现的思路,如图中最外围的蓝色的是用两个相距180°的圆弧实现的,再往里又是两个红色的圆弧再往里面是一个红色的圆