配色: 字号:
Android仿支付宝支付从底部弹窗效果
2016-12-13 | 阅:  转:  |  分享 
  
Android仿支付宝支付从底部弹窗效果



这篇文章主要为大家详细介绍了Android仿支付宝选择支付方式,实现支付宝付款方式,感兴趣的小伙伴们可以参考一下



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



效果图



实现



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



packagecom.example.hfs.alipayuidemo;importandroid.support.v7.app.AppCompatActivity;importandroid.os.Bundle;importandroid.view.View;importandroid.widget.Button;publicclassMainActivityextendsAppCompatActivity{privateButtonmButton;@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initView();}privatevoidinitView(){mButton=(Button)this.findViewById(R.id.btn_pay);mButton.setOnClickListener(newView.OnClickListener(){@OverridepublicvoidonClick(Viewview){PayDetailFragmentpayDetailFragment=newPayDetailFragment();payDetailFragment.show(getSupportFragmentManager(),"payDetailFragment");}});}}



接着是支付详情的Fragment代码







packagecom.example.hfs.alipayuidemo;importandroid.app.Dialog;importandroid.os.Bundle;importandroid.support.annotation.NonNull;importandroid.support.v4.app.DialogFragment;importandroid.view.Gravity;importandroid.view.View;importandroid.view.Window;importandroid.view.WindowManager;importandroid.view.animation.Animation;importandroid.view.animation.AnimationUtils;importandroid.widget.Button;importandroid.widget.EditText;importandroid.widget.LinearLayout;importandroid.widget.ListView;importandroid.widget.RelativeLayout;/底部弹窗Fragment/publicclassPayDetailFragmentextendsDialogFragment{privateRelativeLayoutrePayWay,rePayDetail,reBalance;privateLinearLayoutLinPayWay,linPass;privateListViewlv;privateButtonbtnPay;privateEditTextgridPasswordView;@NonNull@OverridepublicDialogonCreateDialog(BundlesavedInstanceState){//使用不带Theme的构造器,获得的dialog边框距离屏幕仍有几毫米的缝隙。Dialogdialog=newDialog(getActivity(),R.style.BottomDialog);dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);//设置Content前设定dialog.setContentView(R.layout.fragment_pay_detail);dialog.setCanceledOnTouchOutside(true);//外部点击取消//设置宽度为屏宽,靠近屏幕底部。finalWindowwindow=dialog.getWindow();window.setWindowAnimations(R.style.AnimBottom);finalWindowManager.LayoutParamslp=window.getAttributes();lp.gravity=Gravity.BOTTOM;//紧贴底部lp.width=WindowManager.LayoutParams.MATCH_PARENT;//宽度持平lp.height=getActivity().www.hunanwang.netWindowManager().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);returndialog;}View.OnClickListenerlistener=newView.OnClickListener(){@OverridepublicvoidonClick(Viewview){Animationslide_left_to_left=AnimationUtils.loadAnimation(getActivity(),R.anim.slide_left_to_left);Animationslide_right_to_left=AnimationUtils.www.visa158.comloadAnimation(getActivity(),R.anim.slide_right_to_left);Animationslide_left_to_right=AnimationUtils.loadAnimation(getActivity(),R.anim.slide_left_to_right);Animationslide_left_to_left_in=AnimationUtils.loadAnimation(getActivity(),R.anim.slide_left_to_left_in);switch(view.getId()){caseR.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;caseR.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;caseR.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的计算高度



packagecom.example.hfs.alipayuidemo;importandroid.content.Context;importandroid.util.AttributeSet;importandroid.widget.ListView;/ScrollView中嵌套ListView,重写ListView计算高度/publicclassScrollviewListViewextendsListView{publicScrollviewListView(Contextcontext){super(context);}publicScrollviewListView(Contextcontext,AttributeSetattrs){super(context,attrs);}publicScrollviewListView(Contextcontext,AttributeSetattrs,intdefStyleAttr){super(context,attrs,defStyleAttr);}protectedvoidonMeasure(intwidthMeasureSpec,intheightMeasureSpec){intexpandSpec=MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE>>2,MeasureSpec.AT_MOST);super.onMeasure(widthMeasureSpec,expandSpec);}}





















献花(0)
+1
(本文系白狐一梦首藏)