前言

我们再用支付宝支付的时候,会从底部弹上来一个对话框,让我们选择支付方式等等,今天我们就来慢慢实现这个功能

效果图

实现

主界面很简单,就是一个按钮,点击后跳到支付详情的Fragment中

package com.example.hfs.alipayuidemo;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.view.View;

import android.widget.Button;

public class MainActivity extends AppCompatActivity {

private Button mButton;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

initView();

}

private void initView() {

mButton= (Button) this.findViewById(R.id.btn_pay);

mButton.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

PayDetailFragment payDetailFragment=new PayDetailFragment();

payDetailFragment.show(getSupportFragmentManager(),"payDetailFragment");

}

});

}

}

复制代码

接着是支付详情的Fragment代码

复制代码复制代码

package com.example.hfs.alipayuidemo;

import android.app.Dialog;

import android.os.Bundle;

import android.support.annotation.NonNull;

import android.support.v4.app.DialogFragment;

import android.view.Gravity;

import android.view.View;

import android.view.Window;

import android.view.WindowManager;

import android.view.animation.Animation;

import android.view.animation.AnimationUtils;

import android.widget.Button;

import android.widget.EditText;

import android.widget.LinearLayout;

import android.widget.ListView;

import android.widget.RelativeLayout;

/**

* 底部弹窗Fragment

*/

public class PayDetailFragment extends DialogFragment {

private RelativeLayout rePayWay, rePayDetail, reBalance;

private LinearLayout LinPayWay,linPass;

private ListView lv;

private Button btnPay;

private EditText gridPasswordView;

@NonNull

@Override

public Dialog onCreateDialog(Bundle savedInstanceState) {

Dialog dialog = new Dialog(getActivity(), R.style.BottomDialog);

dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);

dialog.setContentView(R.layout.fragment_pay_detail);

dialog.setCanceledOnTouchOutside(true);

final Window window = dialog.getWindow();

window.setWindowAnimations(R.style.AnimBottom);

final WindowManager.LayoutParams lp = window.getAttributes();

lp.gravity = Gravity.BOTTOM;

lp.width = WindowManager.LayoutParams.MATCH_PARENT;

lp.height = getActivity().getWindowManager().getDefaultDisplay().getHeight() * 3 / 5;

window.setAttributes(lp);

rePayWay = (RelativeLayout) dialog.findViewById(R.id.re_pay_way);

rePayDetail = (RelativeLayout) dialog.findViewById(R.id.re_pay_detail);

LinPayWay = (LinearLayout) dialog.findViewById(R.id.lin_pay_way);

lv = (ListView) dialog.findViewById(R.id.lv_bank);

reBalance = (RelativeLayout) dialog.findViewById(R.id.re_balance);

btnPay = (Button) dialog.findViewById(R.id.btn_confirm_pay);

gridPasswordView = (EditText) dialog.findViewById(R.id.pass_view);

linPass = (LinearLayout)dialog.findViewById(R.id.lin_pass);

rePayWay.setOnClickListener(listener);

reBalance.setOnClickListener(listener);

btnPay.setOnClickListener(listener);

return dialog;

}

View.OnClickListener listener = new View.OnClickListener() {

@Override

public void onClick(View view) {

Animation slide_left_to_left = AnimationUtils.loadAnimation(getActivity(), R.anim.slide_left_to_left);

Animation slide_right_to_left = AnimationUtils.loadAnimation(getActivity(), R.anim.slide_right_to_left);

Animation slide_left_to_right = AnimationUtils.loadAnimation(getActivity(), R.anim.slide_left_to_right);

Animation slide_left_to_left_in = AnimationUtils.loadAnimation(getActivity(), R.anim.slide_left_to_left_in);

switch (view.getId()) {

case R.id.re_pay_way:

rePayDetail.startAnimation(slide_left_to_left);

rePayDetail.setVisibility(View.GONE);

LinPayWay.startAnimation(slide_right_to_left);

LinPayWay.setVisibility(View.VISIBLE);

break;

case R.id.re_balance:

rePayDetail.startAnimation(slide_left_to_left_in);

rePayDetail.setVisibility(View.VISIBLE);

LinPayWay.startAnimation(slide_left_to_right);

LinPayWay.setVisibility(View.GONE);

break;

case R.id.btn_confirm_pay:

rePayDetail.startAnimation(slide_left_to_left);

rePayDetail.setVisibility(View.GONE);

linPass.startAnimation(slide_right_to_left);

linPass.setVisibility(View.VISIBLE);

break;

default:

break;

}

}

};

}

复制代码

还有一个ScrollView嵌套ListView的问题,主要是重写ListView的计算高度

package com.example.hfs.alipayuidemo;

import android.content.Context;

import android.util.AttributeSet;

import android.widget.ListView;

/**

* ScrollView中嵌套ListView,重写ListView计算高度

*/

public class ScrollviewListView extends ListView {

public ScrollviewListView(Context context) {

super(context);

}

public ScrollviewListView(Context context, AttributeSet attrs) {

super(context, attrs);

}

public ScrollviewListView(Context context, AttributeSet attrs, int defStyleAttr) {

super(context, attrs, defStyleAttr);

}

protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {

int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,

MeasureSpec.AT_MOST);

super.onMeasure(widthMeasureSpec, expandSpec);

}

}

复制代码

好了,其实还是挺好理解的,附上GitHub项目地址:

github.com/Greathfs/Al…

android仿支付宝弹窗,实现支付宝支付从底部弹窗效果相关推荐

  1. Android仿掌上英雄联盟首页,实现折叠效果

    不单单是掌上英雄联盟,像微博发现页也用了这样的布局,当滑动到一定距离的时候,自动隐藏轮播图,或者标题栏下面的布局.并且使tablayout置顶. 与之相似的还有简书的个人页面也是这样的布局. 图片处理 ...

  2. android仿百度外卖波浪_头像随波浪漂浮效果—仿Android百度外卖

    前几天看到有iOS仿百度外卖的个人页,所以就随手撸了个Android.效果图如下: demo.gif 源码 改造轮子 轮子就不重复造了,github上已经有实现波浪的效果WaveView,WaveVi ...

  3. 音乐歌单Android,仿网易云音乐歌单界面 Header滑动效果

    这是我的第一篇博客,做Android 开发2年多以来,曾经也有过写一些技术博客的想法,但因为有时候因为懒,有时候工作忙加班多而力不从心,所以迟迟没有开始写自己的博客.最近正好工作不忙,想写一些博客,记 ...

  4. Android 仿京东淘宝 商品详情页 商品图片效果

    最近重构商品,产品要求,按照淘宝京东来.... 成品如图这个效果 思路就是监听外边ScrollView的滑动监听,然后给上边图片设置margin,二话不说上代码 简单的界面布局 <?xml ve ...

  5. android qq音乐 activity,android 仿QQ音乐建议反馈上方的提示动画效果,渐隐

    第一种,在activity里直接代码写,但是有些手机无法实现动画效果,如酷派 float curTranslationY = notice_lab.getTranslationY(); float t ...

  6. Android仿滴滴首页上拉,仿照滴滴打车底部滑动条

    [实例简介] 仿照滴滴打车底部滑动条,代码详情 [实例截图] [核心代码] 仿滴滴打车滑动条 └── 仿滴滴打车滑动条 ├── AndroidManifest.xml ├── bin │   ├── ...

  7. Android仿网易云音乐播放页面 背景虚化碟片效果

    1.效果图 仿网易云音乐播放页面,主要有4个关键点: 背景虚化.获取音乐的专辑封面,将此图片作为背景图,并进行模糊虚化处理 碟片合成.获取音乐的专辑封面,和黑色碟片图片进行合成 碟片旋转.音乐播放时, ...

  8. android仿2016年春节微信朋友圈红包照片效果

    项目地址:https://github.com/leibnik/BribeImageView

  9. android 星星流逝动画,Android仿开心消消乐大树星星无限循环效果

    啥都不说先上效果图,这个是我项目里的效果: 下面的是我抽取出来的 demo 适配啥的我基本上都做好了没做其他的 ok 下面 说一下思路把 首先 说一下原理 我是使用bitmap 创建两张图 一开始的时 ...

最新文章

  1. Kubernetes的十大使用技巧
  2. 计算机三级网络技术题库第15套,计算机等级考试理论试题第二十五套
  3. B树、B+树其实很简单,看不懂你找我
  4. centos 部署mysql5.7_centos7部署MySQL 5.7
  5. GDCM:gdcm::StreamImageReader的测试程序
  6. 解决Nginx+Tomcat下客户端https请求跳转成http的问题
  7. [WPF系列]Button 自定义
  8. go分析和kegg分析_干货预警:3分钟搞定GO/KEGG功能富集分析(2)
  9. 去除jQuery mobile默认样式
  10. Android 3D 编程:索引
  11. 《我也能做CTO之程序员职业规划》之二:做CTO的苹果定律
  12. python大漠插件多开_[求助,]用python调用大漠插件,注册好后调用出错.完全不会了...
  13. REHL 5.4 下编译安装LNMP(上)
  14. DOTFUN XML Silverlight中文留言簿Beta V1.0 即将上线!
  15. 高交会美女图片!!!
  16. 电脑如何控制点击android手机,安卓手机怎么控制电脑?红米手机远程控制操作电脑方法...
  17. java程序员书单--成长之路--职业发展,你读过几本
  18. 大学计算机基础教程第1章计算机概述总结
  19. python标准图形库——turtle
  20. 【云驻共创】华为云AI之用Python定制我的《本草纲目女孩》

热门文章

  1. eyoucms如何搬家?易优cms搬家教程
  2. 女子租房有钱交房租 男中介竟然不收她钱_无界财富
  3. windows的cmd与bat批处理脚本(batch script)
  4. 数据库学习-三种异常
  5. 华为ENSP之出口网关设备故障vrrp快速切换
  6. 游戏类型常见英文缩写和释义
  7. 项目运维工作的心得总结
  8. index ffs、index fs原理考究-1109
  9. 自己动手搭建苹果推送Push服务器
  10. 方法论:后台产品经理的前世今生(一)