自定义随机键盘

来源:互联网 发布:java 悲观锁 编辑:程序博客网 时间:2024/06/08 05:49

RandomKeyBoard

 

 

 


package com.wangxinjinrong.xianfengzhifu.view;

import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.FrameLayout;

import com.wangxinjinrong.xianfengzhifu.xflk.R;

public class RandomKeyBoard extends FrameLayout implements OnClickListener {

 public RandomKeyBoard(Context context, AttributeSet attrs) {
  super(context, attrs);

  init();
 }

 public RandomKeyBoard(Context context) {
  super(context);
  init();
 }

 private int[] keyIds = new int[] { R.id.key_0, R.id.key_1, R.id.key_2,
   R.id.key_3, R.id.key_4, R.id.key_5, R.id.key_6, R.id.key_7,
   R.id.key_8, R.id.key_9};

 private Button btnCancel;
 private Button btnOk;
 
 private Button []  buttons = new Button[10];
 
 private int nums[] = new int[]{0,1,2,3,4,5,6,7,8,9};
 
 private void init() {
  View keyBroad = View.inflate(getContext(), R.layout.view_key_broad,
    null);

  btnOk = (Button) keyBroad.findViewById(R.id.key_ok);
  btnCancel = (Button) keyBroad.findViewById(R.id.key_cancel);
  btnOk.setOnClickListener(new OnClickListener() {
   
   @Override
   public void onClick(View v) {
    // 点击确定,隐藏,随机键盘
    RandomKeyBoard.this.setVisibility(View.GONE);
    
   }
  });
  
  btnCancel.setOnClickListener(this);
  
  randomNums(nums);
  
  for (int i = 0; i < buttons.length; i++) {
   buttons[i] = (Button) keyBroad.findViewById(keyIds[i]);
   buttons[i].setOnClickListener(this);
   buttons[i].setText(""+nums[i]);
  }
  
  this.addView(keyBroad);
 }
 
 /**
  * 随机键盘
  */ 
 public void randomkey(){
  randomNums(nums);
  for (int i = 0; i < buttons.length; i++) {
   buttons[i].setText(""+nums[i]);
  }
 }
 
 /**
  * 将数组打乱
  * @param nums2
  */
 private void randomNums(int[] nums2) {
  
  for (int i = 0; i < nums2.length; i++) {
   int random = (int) (Math.random()*10);
   System.out.println("random:"+random);
   
   int t = nums2[i];
   nums2[i]=nums2[random];
   nums2[random]=t;
   
  }
  System.out.println(nums2);
  
 }

 public KeyListener getKeyListener() {
  return keyListener;
 }

 public void setKeyListener(KeyListener keyListener) {
  this.keyListener = keyListener;
 }

 private KeyListener keyListener;
 
 public  interface KeyListener{
  
  void onPressKey(int keyId,String keyName);
 }

 
 @Override
 public void onClick(View v) {
  Button b = (Button) v;
  if(keyListener!=null){
   keyListener.onPressKey(v.getId(),b.getText().toString());
  }
  
 }
 

}
代码块需要调用的代码

lk_password = (EditText) findViewById(R.id.lk_password);

  // 禁用系统键盘
//  lk_password.setInputType(0);
//  lk_password.setShowSoftInputOnFocus(false);
  
  try {
   Method mm = EditText.class.getMethod("setShowSoftInputOnFocus", boolean.class);
   mm.invoke(lk_password, false);
  } catch (Exception e) {
   e.printStackTrace();
  }
  
  lk_password.setOnTouchListener(new OnTouchListener() {
   
   @Override
   public boolean onTouch(View v, MotionEvent event) {

    Log.i("Messagerecharge", "Messagerecharge::onClick");
    // 显示键盘
    my_key_precharge.randomkey();
    my_key_precharge.setVisibility(View.VISIBLE);

    handler.postDelayed(new Runnable() {
     @Override
     public void run() {
      scroll_view.fullScroll(ScrollView.FOCUS_DOWN);
      
      lk_password.requestFocus();
     }
    },100);
   
    return true;
   }
  });

 

0 0
原创粉丝点击