拨号键盘

/**
 * 数字键盘
 */
public class NumKeyboardView extends RelativeLayout {

    private Context context;
    private GridView gridView;
    private List<KeyBoard> valueList;

    public NumKeyboardView(Context context) {
        this(context, null);
    }

    public NumKeyboardView(Context context, AttributeSet attrs) {
        super(context, attrs);
        this.context = context;
        initView();
    }

    private void initView() {
        View view = View.inflate(context, R.layout.layout_num_keyboard, null);
        valueList = new ArrayList<>();
        gridView = (GridView) view.findViewById(R.id.gv_keybord);
        initValueList();
        addView(view);
    }

    /**
     * 初始化数字键盘
     */
    private void initValueList() {
        //默认 按钮 1 没有字母,所以需要占位
        String[] letter = {"", "ABC", "DEF", "GHI", "JKL", "MNO", "PQRS", "TUV", "WXYZ"};
        for (int i = 0; i < 12; i++) {
            KeyBoard keyBoard = new KeyBoard();
            if (i < 9) {
                int num = 1 + i;
                keyBoard.setKeyNum(String.valueOf(num));
                keyBoard.setKeyLetter(letter[i]);
            } else if (i == 9) {
                keyBoard.setKeyNum("*");
                keyBoard.setKeyLetter("");
            } else if (i == 10) {
                keyBoard.setKeyNum(String.valueOf(0));
                keyBoard.setKeyLetter("");
            } else if (i == 11) {
                keyBoard.setKeyNum("#");
                keyBoard.setKeyLetter("");
            }
            valueList.add(keyBoard);
        }

        KeyBoardAdapter keyBoardAdapter = new KeyBoardAdapter(context, valueList);
        gridView.setAdapter(keyBoardAdapter);
    }

    public GridView getGridView() {
        return gridView;
    }

    public List<KeyBoard> getValueList() {
        return valueList;
    }

    class KeyBoardAdapter extends BaseAdapter {
        private Context mContext;
        private List<KeyBoard> valueList;

        public KeyBoardAdapter(Context mContext, List<KeyBoard> valueList) {
            this.mContext = mContext;
            this.valueList = valueList;
        }

        @Override
        public int getCount() {
            return valueList.size();
        }

        @Override
        public KeyBoard getItem(int position) {
            return valueList.get(position);
        }

        @Override
        public long getItemId(int position) {
            return position;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            ViewHolder viewHolder;
            if (convertView == null) {
                convertView = View.inflate(mContext, R.layout.grid_item_virtual_keyboard, null);
                viewHolder = new ViewHolder();
                viewHolder.btnKey = (TextView) convertView.findViewById(R.id.btn_keys);
                viewHolder.btnLetter = (TextView) convertView.findViewById(R.id.btn_letter);
                convertView.setTag(viewHolder);
            } else {
                viewHolder = (ViewHolder) convertView.getTag();
            }

            KeyBoard keyBoard = valueList.get(position);
            viewHolder.btnKey.setVisibility(View.VISIBLE);
            viewHolder.btnKey.setText(keyBoard.getKeyNum());
            viewHolder.btnLetter.setText(keyBoard.getKeyLetter());
            return convertView;
        }

        /**
         * 存放控件
         */
        public final class ViewHolder {
            TextView btnKey;
            TextView btnLetter;
        }
    }
}
public class KeyBoard implements IProguard {
    private String keyNum;//键盘数字
    private String keyLetter;//键盘字母

    public String getKeyNum() {
        return keyNum;
    }

    public void setKeyNum(String keyNum) {
        this.keyNum = keyNum;
    }

    public String getKeyLetter() {
        return keyLetter;
    }

    public void setKeyLetter(String keyLetter) {
        this.keyLetter = keyLetter;
    }
}

 

<?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="wrap_content">

    <!-- 输入键盘 -->
    <GridView
        android:id="@+id/gv_keybord"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:numColumns="3" />

</RelativeLayout>

 

<?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">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="60dp"
        android:layout_centerInParent="true"
        android:background="@drawable/call_selector_gird_item">

        <TextView
            android:id="@+id/btn_keys"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:gravity="center"
            android:includeFontPadding="false"
            android:text="1"
            android:textColor="#424242"
            android:textSize="26dp"
            android:textStyle="bold" />

        <TextView
            android:id="@+id/btn_letter"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBaseline="@+id/btn_keys"
            android:layout_marginLeft="4dp"
            android:layout_toRightOf="@+id/btn_keys"
            android:text="ABC"
            android:textColor="#93999d"
            android:textSize="12dp" />
    </RelativeLayout>
</RelativeLayout>

 

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_enabled="false">
        <shape>
            <solid android:color="#ffffff" />
        </shape>
    </item>
    <item android:state_enabled="true" android:state_pressed="false">
        <shape>
            <solid android:color="#ffffff" />
        </shape>
    </item>
    <item android:state_enabled="true" android:state_pressed="true">
        <shape>
            <solid android:color="#C0C4C7" />
        </shape>
    </item>
</selector>

c741ecf6e2b2478bbca2b7c4e79ab27843a.jpg

转载于:https://my.oschina.net/u/2358780/blog/1828173

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值