DialogFragment 实现支付弹出功能

区别于 fragment的几个方法


public class PayDetailFragment extends DialogFragment {

      private static final String ARG_PARAM1 = "param1";
     private static final String ARG_PARAM2 = "param2";

    // TODO: Rename and change types of parameters
    private String oderprice;
    private String mParam2;

    private OnFragmentInteractionListener mListener;

    private TextView needpayprice;
    private TextView payprice;
    private RelativeLayout rePayWay;
    private LinearLayout LinPayWay;
    private RelativeLayout rePayDetail;
    private RelativeLayout reBalance;
    private RelativeLayout reBalance2;
    private TextView payway_tt;
    private TextView tvbalance;
    private TextView tvbalance2;
    private Button btnPay;

    private Boolean payResult=false;

    public PayDetailFragment() {
        // Required empty public constructor
    }

    /**
     * Use this factory method to create a new instance of
     * this fragment using the provided parameters.
     *
     * @param param1 Parameter 1.
     * @param param2 Parameter 2.
     * @return A new instance of fragment PayDetailFragment.
     */
    // TODO: Rename and change types and number of parameters
    public static PayDetailFragment newInstance(String param1, String param2) {
        PayDetailFragment fragment = new PayDetailFragment();
        Bundle args = new Bundle();
        args.putString(ARG_PARAM1, param1);
        args.putString(ARG_PARAM2, param2);
        fragment.setArguments(args);
        return fragment;
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (getArguments() != null) {
            oderprice = getArguments().getString(ARG_PARAM1);
            mParam2 = getArguments().getString(ARG_PARAM2);
        }
    }



    @NonNull
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        // 使用不带Theme的构造器, 获得的dialog边框距离屏幕仍有几毫米的缝隙。
        Dialog dialog = new Dialog(getActivity(), R.style.BottomDialog);
        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); // 设置Content前设定
        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);

        initView(dialog );
        initEvent(dialog);
        return dialog;
    }



    private void initView(Dialog dialog ) {
        payprice=  dialog.findViewById(R.id.pay_price);
        payprice.setText(oderprice);
       needpayprice=dialog.findViewById(R.id.needpay_price);
        needpayprice.setText(oderprice);
        rePayWay = dialog.findViewById(R.id.re_pay_way);
        LinPayWay =  dialog.findViewById(R.id.lin_pay_way);//付款方式
        rePayDetail =  dialog.findViewById(R.id.re_pay_detail);//付款详情
        reBalance = (RelativeLayout) dialog.findViewById(R.id.re_balance);//付款方式(余额)
        reBalance2 = (RelativeLayout) dialog.findViewById(R.id.re_balance2);//付款方式(余额)
        payway_tt=dialog.findViewById(R.id.pay_way_tt);
        tvbalance=dialog.findViewById(R.id.tv_balance);
        tvbalance2=dialog.findViewById(R.id.tv_balance2);
        btnPay = (Button) dialog.findViewById(R.id.btn_confirm_pay);



    }
    private void initEvent(final Dialog dialog) {

        final Animation slide_left_to_left = AnimationUtils.loadAnimation(getActivity(), R.anim.slide_left_to_left);
        final Animation slide_right_to_left = AnimationUtils.loadAnimation(getActivity(), R.anim.slide_right_to_left);
        final Animation slide_left_to_right = AnimationUtils.loadAnimation(getActivity(), R.anim.slide_left_to_right);
        final Animation slide_left_to_left_in = AnimationUtils.loadAnimation(getActivity(), R.anim.slide_left_to_left_in);


        rePayWay.setOnClickListener(new View.OnClickListener() {

         @Override
        public void onClick(View view) {
            rePayDetail.startAnimation(slide_left_to_left);
            rePayDetail.setVisibility(View.GONE);
            LinPayWay.startAnimation(slide_right_to_left);
            LinPayWay.setVisibility(View.VISIBLE);

        }
    });

       reBalance.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View view) {
             //支付方式改变
             payway_tt.setText(tvbalance.getText());
             payResult=true;
             rePayDetail.startAnimation(slide_left_to_left_in);
             rePayDetail.setVisibility(View.VISIBLE);
             LinPayWay.startAnimation(slide_left_to_right);
             LinPayWay.setVisibility(View.GONE);
         }
     });
        reBalance2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //支付方式改变
                payway_tt.setText(tvbalance2.getText());
                rePayDetail.startAnimation(slide_left_to_left_in);
                rePayDetail.setVisibility(View.VISIBLE);
                LinPayWay.startAnimation(slide_left_to_right);
                LinPayWay.setVisibility(View.GONE);
            }
        });
        btnPay.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //回传给Activity状态值

                onButtonPressed(payResult.toString());
                dialog.dismiss();
            }
        });
    }





    // TODO: Rename method, update argument and hook method into UI event
    public void onButtonPressed(String uri) {
        if (mListener != null) {
            mListener.onFragmentInteraction(uri);
        }
    }

    @Override
    public void onAttach(Context context) {
        super.onAttach(context);
        if (context instanceof OnFragmentInteractionListener) {
            mListener = (OnFragmentInteractionListener) context;
        } else {
            throw new RuntimeException(context.toString()
                    + " must implement OnFragmentInteractionListener");
        }
    }

    @Override
    public void onDetach() {
        super.onDetach();
        mListener = null;
    }

    /**
     * This interface must be implemented by activities that contain this
     * fragment to allow an interaction in this fragment to be communicated
     * to the activity and potentially other fragments contained in that
     * activity.
     * <p>
     * See the Android Training lesson <a href=
     * "http://developer.android.com/training/basics/fragments/communicating.html"
     * >Communicating with Other Fragments</a> for more information.
     */
    public interface OnFragmentInteractionListener {
        // TODO: Update argument type and name
        void onFragmentInteraction(String uri);
    }





}

dialog的绘制方式

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#ffffff">
    <!--==================================付款详情================================-->
    <RelativeLayout
        android:id="@+id/re_pay_detail"
        android:layout_width="match_parent"
        android:layout_height="fill_parent">

        <ScrollView
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <LinearLayout

                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical">

                <RelativeLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:paddingBottom="15dp"
                    android:paddingLeft="10dp"
                    android:paddingRight="10dp"
                    android:paddingTop="15dp">

                    <ImageView
                        android:layout_width="10dp"
                        android:layout_height="10dp"
                         />

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_centerHorizontal="true"
                        android:text="订单详情"
                        android:textSize="15sp" />

                    <ImageView
                        android:layout_width="10dp"
                        android:layout_height="10dp"
                        android:layout_alignParentRight="true"
                         />
                </RelativeLayout>

                <View
                    android:layout_width="match_parent"
                    android:layout_height="1dp"
                    android:background="@color/line"/>

                <RelativeLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:paddingBottom="15dp"
                    android:paddingLeft="10dp"
                    android:paddingRight="10dp"
                    android:paddingTop="15dp">

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="信用卡还款"
                        android:textColor="@color/text_color_grey" />

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_alignParentRight="true"
                        android:text="农业银行"
                        android:textColor="@color/text_color_grey" />

                </RelativeLayout>

                <View
                    android:layout_width="match_parent"
                    android:layout_height="1dp"
                    android:background="@color/line"/>

                <RelativeLayout
                    android:id="@+id/re_pay_way"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:paddingBottom="15dp"
                    android:paddingLeft="10dp"
                    android:paddingRight="10dp"
                    android:paddingTop="15dp">

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="支付方式"
                        android:textColor="@color/text_color_grey" />

                    <TextView
                        android:id="@+id/pay_way_tt"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_alignParentRight="true"
                        android:drawablePadding="10dp"
                        android:text="招商银行(尾号2345)"
                        android:textColor="@color/text_color_grey" />

                </RelativeLayout>

                <View
                    android:layout_width="match_parent"
                    android:layout_height="1dp"
                    android:background="@color/line"/>

                <RelativeLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:paddingBottom="15dp"
                    android:paddingLeft="10dp"
                    android:paddingRight="10dp"
                    android:paddingTop="15dp">

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="订单金额"
                        android:textColor="@color/text_color_grey" />

                    <TextView
                        android:id="@+id/pay_price"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_alignParentRight="true"
                        android:text="10.00"
                        android:textColor="@color/text_color_grey" />
                </RelativeLayout>

                <View
                    android:layout_width="match_parent"
                    android:layout_height="1dp"
                    android:background="@color/line"/>

                <RelativeLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:paddingBottom="15dp"
                    android:paddingLeft="10dp"
                    android:paddingRight="10dp"
                    android:paddingTop="15dp">

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="需付款" />

                    <TextView
                        android:id="@+id/needpay_price"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_alignParentRight="true"
                        android:text="10.00" />
                </RelativeLayout>

            </LinearLayout>
        </ScrollView>

        <Button
            android:id="@+id/btn_confirm_pay"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_marginBottom="20dp"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
            android:layout_marginTop="20dp"
            android:background="@drawable/btn_click"
            android:padding="10dp"
            android:text="确认付款"
            android:textColor="#ffffff" />

    </RelativeLayout>
    <!--=================================付款方式======================================-->
    <LinearLayout
        android:id="@+id/lin_pay_way"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#ffffff"
        android:orientation="vertical"
        android:layout_toRightOf="@+id/re_pay_detail"
        android:visibility="gone">


        <RelativeLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:background="#ffffff"
            android:padding="10dp">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerInParent="true"
                android:text="选择支付方式" />

            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentRight="true"
                android:layout_margin="10dp"
                />
        </RelativeLayout>

        <View
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:background="@color/line"/>

        <ScrollView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content">

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical">

        <!--        <com.example.hfs.alipayuidemo.ScrollviewListView
                    android:id="@+id/lv_bank"
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:listSelector="#ffffff"/>-->

                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="1dp"
                    android:background="#ffffff"

                    android:gravity="center_vertical"
                    android:paddingBottom="15dp"
                    android:paddingLeft="20dp"
                    android:paddingRight="20dp"
                    android:paddingTop="15dp"
                    android:text="添加银行卡" />

                <View
                    android:layout_width="match_parent"
                    android:layout_height="1dp"
                    android:background="@color/line"/>

                <RelativeLayout
                    android:id="@+id/re_balance"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="1dp"
                    android:background="#ffffff"
                    android:paddingBottom="10dp"
                    android:paddingLeft="20dp"
                    android:paddingTop="10dp">

                    <ImageView
                        android:id="@+id/img_balance"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_centerVertical="true"
                        android:src="@drawable/ic_pay_banlance_able"
                       />

                    <TextView
                        android:id="@+id/tv_balance"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_toRightOf="@+id/img_balance"
                        android:paddingLeft="10dp"
                        android:text="真支付"
                        android:textSize="13sp" />

                </RelativeLayout>

                <RelativeLayout
                    android:id="@+id/re_balance2"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="1dp"
                    android:background="#ffffff"
                    android:paddingBottom="10dp"
                    android:paddingLeft="20dp"
                    android:paddingTop="10dp">

                    <ImageView
                        android:id="@+id/img_balance2"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_centerVertical="true"
                        android:src="@drawable/ic_pay_banlance_able"
                        />

                    <TextView
                        android:id="@+id/tv_balance2"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_alignTop="@+id/img_balance2"
                        android:layout_toRightOf="@+id/img_balance2"
                        android:paddingLeft="10dp"
                        android:text="假支付"
                        android:textSize="13sp" />

                </RelativeLayout>
            </LinearLayout>
        </ScrollView>
    </LinearLayout>
    <!--====================================支付密码=========================================-->
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@+id/re_pay_detail"
        android:visibility="gone"
        android:orientation="vertical">

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:paddingBottom="15dp"
            android:paddingLeft="10dp"
            android:paddingRight="10dp"
            android:paddingTop="15dp">

            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
           />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerHorizontal="true"
                android:text="输入密码" />
        </RelativeLayout>

        <View
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:background="@color/line"/>

        <EditText
            android:layout_width="match_parent"
            android:layout_height="48dp"
            android:background="#ffffff"
            android:layout_marginLeft="40dp"
            android:layout_marginRight="40dp"
            android:layout_marginTop="10dp" />
        <View
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:background="@color/line"/>
        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="right"
            android:padding="10dp"
            android:text="忘记密码"
            android:textColor="@color/colorstatus"
            android:textSize="12sp" />
    </LinearLayout>
</RelativeLayout>


布局的绘制细节

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值