Android實現(xiàn)支付寶支付密碼輸入界面
本文實例為大家分享了Android實現(xiàn)支付寶支付密碼輸入界面的具體代碼,供大家參考,具體內(nèi)容如下
效果圖:
主要代碼:
import java.util.ArrayList; ? import android.annotation.SuppressLint; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; ? import com.example.payui.KeyboardEnum.ActionEnum; import com.lidroid.xutils.ViewUtils; import com.lidroid.xutils.view.annotation.ViewInject; import com.lidroid.xutils.view.annotation.event.OnClick; import com.lidroid.xutils.view.annotation.event.OnLongClick; /** ?* Dialog 顯示視圖 ?* @author LanYan ?* ?*/ @SuppressLint("InflateParams") public class PayPasswordView{ ? ?? ?@ViewInject(R.id.pay_keyboard_del) ?? ?private ImageView del; ?? ?@ViewInject(R.id.pay_keyboard_zero) ?? ?private ImageView zero; ?? ?@ViewInject(R.id.pay_keyboard_one) ?? ?private ImageView one; ?? ?@ViewInject(R.id.pay_keyboard_two) ?? ?private ImageView two; ?? ?@ViewInject(R.id.pay_keyboard_three) ?? ?private ImageView three; ?? ?@ViewInject(R.id.pay_keyboard_four) ?? ?private ImageView four; ?? ?@ViewInject(R.id.pay_keyboard_five) ?? ?private ImageView five; ?? ?@ViewInject(R.id.pay_keyboard_sex) ?? ?private ImageView sex; ?? ?@ViewInject(R.id.pay_keyboard_seven) ?? ?private ImageView seven; ?? ?@ViewInject(R.id.pay_keyboard_eight) ?? ?private ImageView eight; ?? ?@ViewInject(R.id.pay_keyboard_nine) ?? ?private ImageView nine; ?? ?@ViewInject(R.id.pay_cancel) ?? ?private TextView cancel; ?? ?@ViewInject(R.id.pay_sure) ?? ?private TextView sure; ?? ?@ViewInject(R.id.pay_box1) ?? ?private TextView box1; ?? ?@ViewInject(R.id.pay_box2) ?? ?private TextView box2; ?? ?@ViewInject(R.id.pay_box3) ?? ?private TextView box3; ?? ?@ViewInject(R.id.pay_box4) ?? ?private TextView box4; ?? ?@ViewInject(R.id.pay_box5) ?? ?private TextView box5; ?? ?@ViewInject(R.id.pay_box6) ?? ?private TextView box6; ?? ?@ViewInject(R.id.pay_title) ?? ?private TextView title; ?? ?@ViewInject(R.id.pay_content) ?? ?private TextView content; ?? ? ?? ?private ArrayList<String> mList=new ArrayList<String>(); ?? ?private View mView; ?? ?private OnPayListener listener; ?? ?private Context mContext; ?? ?public PayPasswordView(){ ?? ??? ? ?? ?} ?? ?public static PayPasswordView getInstance(){ ?? ??? ?return ?new PayPasswordView(); ?? ?} ?? ? ?? ?public View getDecorView(String monney,Context mContext,OnPayListener listener){ ?? ??? ?this.listener=listener; ?? ??? ?this.mContext=mContext; ?? ??? ?mView=LayoutInflater.from(mContext).inflate(R.layout.item_paypassword, null); ?? ??? ?ViewUtils.inject(this,mView); ?? ??? ?content.setText("消費金額:"+monney+"元"); ?? ??? ?return mView; ?? ?} ?? ? ?? ?@OnClick({R.id.pay_keyboard_del,R.id.pay_keyboard_zero, ?? ??? ?R.id.pay_keyboard_one,R.id.pay_keyboard_two, ?? ??? ?R.id.pay_keyboard_three,R.id.pay_keyboard_four, ?? ??? ?R.id.pay_keyboard_five,R.id.pay_keyboard_sex, ?? ??? ?R.id.pay_keyboard_seven,R.id.pay_keyboard_eight, ?? ??? ?R.id.pay_keyboard_nine,R.id.pay_cancel, ?? ??? ?R.id.pay_sure}) ?? ?private void onClick(View v){ ?? ??? ?if(v==zero){ ?? ??? ??? ?parseActionType(KeyboardEnum.zero); ?? ??? ?}else if(v==one){ ?? ??? ??? ?parseActionType(KeyboardEnum.one); ?? ??? ?}else if(v==two){ ?? ??? ??? ?parseActionType(KeyboardEnum.two); ?? ??? ?}else if(v==three){ ?? ??? ??? ?parseActionType(KeyboardEnum.three); ?? ??? ?}else if(v==four){ ?? ??? ??? ?parseActionType(KeyboardEnum.four); ?? ??? ?}else if(v==five){ ?? ??? ??? ?parseActionType(KeyboardEnum.five); ?? ??? ?}else if(v==sex){ ?? ??? ??? ?parseActionType(KeyboardEnum.sex); ?? ??? ?}else if(v==seven){ ?? ??? ??? ?parseActionType(KeyboardEnum.seven); ?? ??? ?}else if(v==eight){ ?? ??? ??? ?parseActionType(KeyboardEnum.eight); ?? ??? ?}else if(v==nine){ ?? ??? ??? ?parseActionType(KeyboardEnum.nine); ?? ??? ?}else if(v==cancel){ ?? ??? ??? ?parseActionType(KeyboardEnum.cancel); ?? ??? ?}else if(v==sure){ ?? ??? ??? ?parseActionType(KeyboardEnum.sure); ?? ??? ?}else if(v==del){ ?? ??? ??? ?parseActionType(KeyboardEnum.del); ?? ??? ?} ?? ?} ?? ? ?? ?@OnLongClick(R.id.pay_keyboard_del) ?? ?public boolean onLongClick(View v) { ?? ??? ?// TODO Auto-generated method stub ?? ??? ?parseActionType(KeyboardEnum.longdel); ?? ??? ?return false; ?? ?} ?? ? ?? ?private void parseActionType(KeyboardEnum type) { ?? ??? ?// TODO Auto-generated method stub ?? ??? ?if(type.getType()==ActionEnum.add){ ?? ??? ??? ?if(mList.size()<6){ ?? ??? ??? ??? ?mList.add(type.getValue()); ?? ??? ??? ??? ?updateUi(); ?? ??? ??? ?} ?? ??? ?}else if(type.getType()==ActionEnum.delete){ ?? ??? ??? ?if(mList.size()>0){ ?? ??? ??? ??? ?mList.remove(mList.get(mList.size()-1)); ?? ??? ??? ??? ?updateUi(); ?? ??? ??? ?} ?? ??? ?}else if(type.getType()==ActionEnum.cancel){ ?? ??? ??? ?listener.onCancelPay(); ?? ??? ?}else if(type.getType()==ActionEnum.sure){ ?? ??? ??? ?if(mList.size()<6){ ?? ??? ??? ??? ?Toast.makeText(mContext, "支付密碼必須6位", Toast.LENGTH_SHORT).show(); ?? ??? ??? ?}else{ ?? ??? ??? ??? ?String payValue=""; ?? ??? ??? ??? ?for (int i = 0; i < mList.size(); i++) { ?? ??? ??? ??? ??? ?payValue+=mList.get(i); ?? ??? ??? ??? ?} ?? ??? ??? ??? ?listener.onSurePay(payValue); ?? ??? ??? ?} ?? ??? ?}else if(type.getType()==ActionEnum.longClick){ ?? ??? ??? ?mList.clear(); ?? ??? ??? ?updateUi(); ?? ??? ?} ?? ??? ? ?? ?} ?? ?private void updateUi() { ?? ??? ?// TODO Auto-generated method stub ?? ??? ?if(mList.size()==0){ ?? ??? ??? ?box1.setText(""); ?? ??? ??? ?box2.setText(""); ?? ??? ??? ?box3.setText(""); ?? ??? ??? ?box4.setText(""); ?? ??? ??? ?box5.setText(""); ?? ??? ??? ?box6.setText(""); ?? ??? ?}else if(mList.size()==1){ ?? ??? ??? ?box1.setText(mList.get(0)); ?? ??? ??? ?box2.setText(""); ?? ??? ??? ?box3.setText(""); ?? ??? ??? ?box4.setText(""); ?? ??? ??? ?box5.setText(""); ?? ??? ??? ?box6.setText(""); ?? ??? ?}else if(mList.size()==2){ ?? ??? ??? ?box1.setText(mList.get(0)); ?? ??? ??? ?box2.setText(mList.get(1)); ?? ??? ??? ?box3.setText(""); ?? ??? ??? ?box4.setText(""); ?? ??? ??? ?box5.setText(""); ?? ??? ??? ?box6.setText(""); ?? ??? ?}else if(mList.size()==3){ ?? ??? ??? ?box1.setText(mList.get(0)); ?? ??? ??? ?box2.setText(mList.get(1)); ?? ??? ??? ?box3.setText(mList.get(2)); ?? ??? ??? ?box4.setText(""); ?? ??? ??? ?box5.setText(""); ?? ??? ??? ?box6.setText(""); ?? ??? ?}else if(mList.size()==4){ ?? ??? ??? ?box1.setText(mList.get(0)); ?? ??? ??? ?box2.setText(mList.get(1)); ?? ??? ??? ?box3.setText(mList.get(2)); ?? ??? ??? ?box4.setText(mList.get(3)); ?? ??? ??? ?box5.setText(""); ?? ??? ??? ?box6.setText(""); ?? ??? ?}else if(mList.size()==5){ ?? ??? ??? ?box1.setText(mList.get(0)); ?? ??? ??? ?box2.setText(mList.get(1)); ?? ??? ??? ?box3.setText(mList.get(2)); ?? ??? ??? ?box4.setText(mList.get(3)); ?? ??? ??? ?box5.setText(mList.get(4)); ?? ??? ??? ?box6.setText(""); ?? ??? ?}else if(mList.size()==6){ ?? ??? ??? ?box1.setText(mList.get(0)); ?? ??? ??? ?box2.setText(mList.get(1)); ?? ??? ??? ?box3.setText(mList.get(2)); ?? ??? ??? ?box4.setText(mList.get(3)); ?? ??? ??? ?box5.setText(mList.get(4)); ?? ??? ??? ?box6.setText(mList.get(5)); ?? ??? ?} ?? ?} ?? ? ?? ?public interface OnPayListener{ ?? ??? ?void onCancelPay(); ?? ??? ?void onSurePay(String password); ?? ?} ?? ? }
Enum:
public enum KeyboardEnum { ?? ?one(ActionEnum.add,"1"), ?? ?two(ActionEnum.add,"2"), ?? ?three(ActionEnum.add,"3"), ?? ?four(ActionEnum.add,"4"), ?? ?five(ActionEnum.add,"5"), ?? ?sex(ActionEnum.add,"6"), ?? ?seven(ActionEnum.add,"7"), ?? ?eight(ActionEnum.add,"8"), ?? ?nine(ActionEnum.add,"9"), ?? ?zero(ActionEnum.add,"0"), ?? ?del(ActionEnum.delete,"del"), ?? ?longdel(ActionEnum.longClick,"longclick"), ?? ?cancel(ActionEnum.cancel,"cancel"), ?? ?sure(ActionEnum.sure,"sure"); ?? ?public enum ActionEnum{ ?? ??? ?add,delete,longClick,cancel,sure ?? ?} ?? ?private ActionEnum type; ?? ?private String value; ?? ?private KeyboardEnum(ActionEnum type,String value){ ?? ??? ?this.type=type; ?? ??? ?this.value=value; ?? ?} ?? ?public ActionEnum getType() { ?? ??? ?return type; ?? ?} ?? ?public void setType(ActionEnum type) { ?? ??? ?this.type = type; ?? ?} ?? ?public String getValue() { ?? ??? ?return value; ?? ?} ?? ?public void setValue(String value) { ?? ??? ?this.value = value; ?? ?} ? }
測試類:
public class MainActivity extends Activity { ? ?? ?private DialogWidget mDialogWidget; ?? ?private TextView payTextView; ? ?? ?@Override ?? ?protected void onCreate(Bundle savedInstanceState) { ?? ??? ?super.onCreate(savedInstanceState); ?? ??? ?setContentView(R.layout.activity_main); ?? ??? ?payTextView=(TextView)findViewById(R.id.payEditText); ?? ??? ?payTextView.setOnClickListener(new OnClickListener() { ?? ??? ??? ? ? ?? ??? ??? ?@Override ?? ??? ??? ?public void onClick(View v) { ?? ??? ??? ??? ?// TODO Auto-generated method stub ?? ??? ??? ??? ?mDialogWidget=new DialogWidget(MainActivity.this, getDecorViewDialog()); ?? ??? ??? ??? ?mDialogWidget.show(); ?? ??? ??? ?} ?? ??? ?}); ?? ?} ?? ? ?? ?protected View getDecorViewDialog() { ?? ??? ?// TODO Auto-generated method stub ?? ??? ?return PayPasswordView.getInstance().getDecorView("45.99",this,new OnPayListener() { ?? ??? ??? ? ?? ??? ??? ?@Override ?? ??? ??? ?public void onSurePay(String password) { ?? ??? ??? ??? ?// TODO Auto-generated method stub ?? ??? ??? ??? ?mDialogWidget.dismiss(); ?? ??? ??? ??? ?mDialogWidget=null; ?? ??? ??? ??? ?payTextView.setText(password); ?? ??? ??? ??? ?Toast.makeText(getApplicationContext(), "交易成功", Toast.LENGTH_SHORT).show(); ?? ??? ??? ?} ?? ??? ??? ? ?? ??? ??? ?@Override ?? ??? ??? ?public void onCancelPay() { ?? ??? ??? ??? ?// TODO Auto-generated method stub ?? ??? ??? ??? ?mDialogWidget.dismiss(); ?? ??? ??? ??? ?mDialogWidget=null; ?? ??? ??? ??? ?Toast.makeText(getApplicationContext(), "交易已取消", Toast.LENGTH_SHORT).show(); ?? ??? ??? ??? ? ?? ??? ??? ?} ?? ??? ?}); ?? ?} }
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Android?OpenCV基礎(chǔ)API清晰度亮度識別檢測
這篇文章主要為大家介紹了Android?OpenCV基礎(chǔ)API清晰度亮度識別檢測,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01android中使用react-native設(shè)置應(yīng)用啟動頁過程詳解
這篇文章主要介紹了android中使用react-native設(shè)置應(yīng)用啟動頁過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07Android fragment實現(xiàn)按鈕點擊事件的示例講解
下面小編就為大家分享一篇Android fragment實現(xiàn)按鈕點擊事件的示例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-01-01Android實現(xiàn)捕獲TextView超鏈接的方法
這篇文章主要介紹了Android實現(xiàn)捕獲TextView超鏈接的方法,涉及Android查找TextView中超鏈接的相關(guān)實現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-10-10Android中GridView和ArrayAdapter用法實例分析
這篇文章主要介紹了Android中GridView和ArrayAdapter用法,結(jié)合實例形式分析了Android中GridView結(jié)合ArrayAdapter實現(xiàn)表格化排版的相關(guān)技巧,需要的朋友可以參考下2016-02-02Android TextView顯示Html類解析的網(wǎng)頁和圖片及自定義標(biāo)簽用法示例
這篇文章主要介紹了Android TextView顯示Html類解析的網(wǎng)頁和圖片及自定義標(biāo)簽用法,實例分析了Android中TextView控件的使用技巧,需要的朋友可以參考下2016-07-07Android中網(wǎng)絡(luò)框架簡單封裝的實例方法
在本篇文章里小編給大家整理的是關(guān)于Android中網(wǎng)絡(luò)框架簡單封裝的實例方法,需要的朋友們可以學(xué)習(xí)下。2020-03-03