本文来自网易云社区

作者:孙有军

  1.   <LinearLayout
  2.         android:id="@+id/input_num_line_3"
  3.         android:layout_width="fill_parent"
  4.         android:layout_height="wrap_content"
  5.         android:layout_above="@+id/input_num_line_2"
  6.         android:baselineAligned="false"
  7.         android:orientation="horizontal">
  8.  
  9.         <RelativeLayout
  10.             android:layout_width="0dp"
  11.             android:layout_height="80dp"
  12.             android:layout_weight="1">
  13.  
  14.             <TextView
  15.                 android:id="@+id/input_key_number_4"
  16.                 android:layout_width="60dp"
  17.                 android:layout_height="60dp"
  18.                 android:layout_centerInParent="true"
  19.                 android:background="@drawable/keyboard_item_selector"
  20.                 android:focusable="true"
  21.                 android:gravity="center"
  22.                 android:text="4"
  23.                 android:textColor="#ffffff"
  24.                 android:textSize="30sp"/>
  25.         </RelativeLayout>
  26.  
  27.         <RelativeLayout
  28.             android:layout_width="0dp"
  29.             android:layout_height="80dp"
  30.             android:layout_weight="1">
  31.  
  32.             <TextView
  33.                 android:id="@+id/input_key_number_5"
  34.                 android:layout_width="60dp"
  35.                 android:layout_height="60dp"
  36.                 android:layout_centerInParent="true"
  37.                 android:background="@drawable/keyboard_item_selector"
  38.                 android:focusable="true"
  39.                 android:gravity="center"
  40.                 android:text="5"
  41.                 android:textColor="#ffffff"
  42.                 android:textSize="30sp"/>
  43.         </RelativeLayout>
  44.  
  45.         <RelativeLayout
  46.             android:layout_width="0dp"
  47.             android:layout_height="80dp"
  48.             android:layout_weight="1">
  49.  
  50.             <TextView
  51.                 android:id="@+id/input_key_number_6"
  52.                 android:layout_width="60dp"
  53.                 android:layout_height="60dp"
  54.                 android:layout_centerInParent="true"
  55.                 android:background="@drawable/keyboard_item_selector"
  56.                 android:focusable="true"
  57.                 android:gravity="center"
  58.                 android:text="6"
  59.                 android:textColor="#ffffff"
  60.                 android:textSize="30sp"/>
  61.         </RelativeLayout>
  62.     </LinearLayout>
  63.  
  64.     <LinearLayout
  65.         android:id="@+id/input_num_line_4"
  66.         android:layout_width="fill_parent"
  67.         android:layout_height="wrap_content"
  68.         android:layout_above="@+id/input_num_line_3"
  69.         android:baselineAligned="false"
  70.         android:orientation="horizontal">
  71.  
  72.         <RelativeLayout
  73.             android:layout_width="0dp"
  74.             android:layout_height="80dp"
  75.             android:layout_weight="1">
  76.  
  77.             <TextView
  78.                 android:id="@+id/input_key_number_1"
  79.                 android:layout_width="60dp"
  80.                 android:layout_height="60dp"
  81.                 android:layout_centerInParent="true"
  82.                 android:background="@drawable/keyboard_item_selector"
  83.                 android:focusable="true"
  84.                 android:gravity="center"
  85.                 android:text="1"
  86.                 android:textColor="#ffffff"
  87.                 android:textSize="30sp"/>
  88.         </RelativeLayout>
  89.  
  90.         <RelativeLayout
  91.             android:layout_width="0dp"
  92.             android:layout_height="80dp"
  93.             android:layout_weight="1">
  94.  
  95.             <TextView
  96.                 android:id="@+id/input_key_number_2"
  97.                 android:layout_width="60dp"
  98.                 android:layout_height="60dp"
  99.                 android:layout_centerInParent="true"
  100.                 android:background="@drawable/keyboard_item_selector"
  101.                 android:focusable="true"
  102.                 android:gravity="center"
  103.                 android:text="2"
  104.                 android:textColor="#ffffff"
  105.                 android:textSize="30sp"/>
  106.         </RelativeLayout>
  107.  
  108.         <RelativeLayout
  109.             android:layout_width="0dp"
  110.             android:layout_height="80dp"
  111.             android:layout_weight="1">
  112.  
  113.             <TextView
  114.                 android:id="@+id/input_key_number_3"
  115.                 android:layout_width="60dp"
  116.                 android:layout_height="60dp"
  117.                 android:layout_centerInParent="true"
  118.                 android:background="@drawable/keyboard_item_selector"
  119.                 android:focusable="true"
  120.                 android:gravity="center"
  121.                 android:text="3"
  122.                 android:textColor="#ffffff"
  123.                 android:textSize="30sp"/>
  124.         </RelativeLayout>
  125.     </LinearLayout>
  126.  
  127.     <TextView
  128.         android:id="@+id/show_phone"
  129.         android:layout_width="wrap_content"
  130.         android:layout_height="wrap_content"
  131.         android:layout_above="@+id/input_num_line_4"
  132.         android:layout_centerInParent="true"
  133.         android:padding="@dimen/gap_20_dp"
  134.         android:textColor="#ffffff"
  135.         android:textSize="33sp"/>
  136. </RelativeLayout>

对应的界面代码如下:

  1. public class DialPanFragment extends Fragment implements View.OnClickListener {
  2.  
  3.     private TextView showPhone;
  4.  
  5.     private ImageView dialBnt;
  6.  
  7.     public DialPanFragment() {
  8.         // Required empty public constructor
  9.     }
  10.  
  11.     @Override
  12.     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
  13.         return inflater.inflate(R.layout.fragment_dial_pan, container, false);
  14.     }
  15.  
  16.     @Override
  17.     public void onActivityCreated(Bundle savedInstanceState) {
  18.         super.onActivityCreated(savedInstanceState);
  19.         findViews();
  20.     }
  21.  
  22.     private void findViews() {
  23.         showPhone = (TextView) getView().findViewById(R.id.show_phone);
  24.         dialBnt = (ImageView) getView().findViewById(R.id.dial_icon);
  25.         dialBnt.setOnClickListener(this);
  26.         dialBnt.setTag(-2);
  27.         dialBnt.setEnabled(false);
  28.         View view0 = getView().findViewById(R.id.input_key_number_0);
  29.         view0.setTag(0);
  30.         view0.setOnClickListener(this);
  31.         View view1 = getView().findViewById(R.id.input_key_number_1);
  32.         view1.setTag(1);
  33.         view1.setOnClickListener(this);
  34.         view1.setNextFocusUpId(R.id.dial_tab);
  35.         View view2 = getView().findViewById(R.id.input_key_number_2);
  36.         view2.setTag(2);
  37.         view2.setOnClickListener(this);
  38.         view2.setNextFocusUpId(R.id.dial_tab);
  39.         View view3 = getView().findViewById(R.id.input_key_number_3);
  40.         view3.setTag(3);
  41.         view3.setOnClickListener(this);
  42.         view3.setNextFocusUpId(R.id.dial_tab);
  43.         View view4 = getView().findViewById(R.id.input_key_number_4);
  44.         view4.setTag(4);
  45.         view4.setOnClickListener(this);
  46.         View view5 = getView().findViewById(R.id.input_key_number_5);
  47.         view5.setTag(5);
  48.         view5.setOnClickListener(this);
  49.         View view6 = getView().findViewById(R.id.input_key_number_6);
  50.         view6.setTag(6);
  51.         view6.setOnClickListener(this);
  52.         View view7 = getView().findViewById(R.id.input_key_number_7);
  53.         view7.setTag(7);
  54.         view7.setOnClickListener(this);
  55.         View view8 = getView().findViewById(R.id.input_key_number_8);
  56.         view8.setTag(8);
  57.         view8.setOnClickListener(this);
  58.         View view9 = getView().findViewById(R.id.input_key_number_9);
  59.         view9.setTag(9);
  60.         view9.setOnClickListener(this);
  61.         View viewDel = getView().findViewById(R.id.input_key_number_del);
  62.         viewDel.setTag(-1);
  63.         viewDel.setOnClickListener(this);
  64.     }
  65.  
  66.     @Override
  67.     public void onClick(View v) {
  68.         int tag = (int) v.getTag();
  69.         if (tag == -2) {
  70.             dial();
  71.         } else if (tag == -1) {// DEL
  72.             delNumber();
  73.         } else {
  74.             inputNumber(tag);
  75.         }
  76.     }
  77.  
  78.     private void delNumber() {
  79.         String text = showPhone.getText().toString();
  80.         if (text != null && text.length() > 0) {
  81.             text = text.substring(0, text.length() - 1);
  82.             showPhone.setText(text);
  83.         }
  84.         dialBtnState(text);
  85.     }
  86.  
  87.     private void inputNumber(int tag) {
  88.         String text = showPhone.getText().toString();
  89.         if (text == null) {
  90.             text = new String(String.valueOf(tag));
  91.         } else {
  92.             text = text + tag;
  93.         }
  94.         dialBtnState(text);
  95.         showPhone.setText(text);
  96.     }
  97.  
  98.     private void dial() {
  99.         String text = showPhone.getText().toString();
  100.         int len = TextUtils.isEmpty(text) ? 0 : text.length();
  101.         if (len != 11) {
  102.             ToastUtil.showToast("你输入的账号不合法!");
  103.             showPhone.setText("");
  104.         } else {
  105.             String uid = ContactProvider.getUidByPhone(text);
  106.             if (TextUtils.isEmpty(uid)) {
  107.                 ToastUtil.showToast("该账号不存在!");
  108.             } else {
  109.                 // TODO
  110.             }
  111.         }
  112.     }
  113.  
  114.     private void dialBtnState(String text) {
  115.         dialBnt.setEnabled(!TextUtils.isEmpty(text));
  116.     }
  117. }

网易云免费体验馆,0成本体验20+款云产品!

更多网易研发、产品、运营经验分享请访问网易云社区

相关文章:
【推荐】 网易云易盾CTO朱浩齐:我们是如何用AI赋能内容安全?
【推荐】 如何实现360度的手游安全防护?网易云易盾专家分享最新实践
【推荐】 从细节处谈Android冷启动优化

Android TV 开发(3)的更多相关文章

  1. Android TV开发总结(六)构建一个TV app的直播节目实例

    请尊重分享成果,转载请注明出处:http://blog.csdn.net/hejjunlin/article/details/52966319 近年来,Android TV的迅速发展,传统的有线电视受 ...

  2. Android TV开发总结(五)TV上屏幕适配总结

    前言:前面几篇总结一些TV上的小Sample,开源到GitHub:https://github.com/hejunlin2013/TVSample, 点击链接,可以持续关注.今天总结下TV上屏幕适配. ...

  3. Android TV开发总结(三)构建一个TV app的焦点控制及遇到的坑

    转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/52835829 前言:上篇中,&l ...

  4. 聊聊真实的 Android TV 开发技术栈

    智能电视越来越普及了,华为说四月发布智能电视跳票了,一加也说今后要布局智能电视,在智能电视方向,小米已经算是先驱了.但是还有不少开发把智能电视简单的理解成手机屏幕的放大,其实这两者并不一样. 一.序 ...

  5. Android TV开发总结(七)构建一个TV app中的剧集列表控件

    原文:Android TV开发总结(七)构建一个TV app中的剧集列表控件 版权声明:我已委托"维权骑士"(rightknights.com)为我的文章进行维权行动.转载务必转载 ...

  6. Android TV开发中所有的遥控器按键监听及注意事项,新增home键监听

    原文:Android TV开发中所有的遥控器按键监听及注意事项,新增home键监听 简单记录下android 盒子开发遥控器的监听 ,希望能帮到新入门的朋友们 不多说,直接贴代码 public cla ...

  7. Android TV开发总结(四)通过RecycleView构建一个TV app列表页(仿腾讯视频TV版)

    转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/52854131 前言:昨晚看锤子手 ...

  8. Android TV开发总结(二)构建一个TV Metro界面(仿泰捷视频TV版)

    前言:上篇是介绍构建TV app前要知道的一些事儿,开发Android TV和手机本质上没有太大的区别,屏大,焦点处理,按键处理,是有别于有手机和Pad的实质区别.今天来介绍TV中Metro UI风格 ...

  9. Android TV 开发 (1)

    本文来自网易云社区 作者:孙有军 前言 这里主要记录几个TV问题的解决方案,如果对这个不感兴趣的其实就不用往下看了. 这几天有一个需求就是要求出一个TV版本的app,之前没有具体的了解Tv版的app有 ...

  10. Android TV开发总结(一)构建一个TV app前要知道的事儿

    转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/52792562 前言:近年来,智能 ...

随机推荐

  1. Android(java)学习笔记43:Map集合的遍历之键找值

    1. Map集合的遍历之键找值  package cn.itcast_01; import java.util.HashMap; import java.util.Map; import java.u ...

  2. 多目标规划——fgoalattain

    多目标规划 多个目标函数,之间可以用他们的重要程度分析,来一次进行这个序贯算法,当然也可以无限逼近的方案——​ clc,clear; % 约束 a = [- - - - ]; b = [- - ]; ...

  3. CF526D Om Nom and Necklace

    嘟嘟嘟 我们可以把AB看成S,则要找的串可以写成SSSSA或者SSSSS.假设S出现了Q次,那么A出现了Q % k次,则B出现了 Q / k - Q % k次. 当ABABA是SSS的形式时,B可以为 ...

  4. 【转】异步的AsyncHttpClient使用详解

    http://blog.csdn.net/angjunqiang/article/details/55259170 背景 前面的一篇文章[同步的HttpClient使用详解]中,提到了服务端通进行网络 ...

  5. 【Openjudge 9277 Logs Stacking堆木头】 题解

    题目链接:http://noi.openjudge.cn/ch0206/9277/ ... #include <algorithm> #include <iostream> # ...

  6. Extjs 4 动态显示折线图 按秒显示

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...

  7. Oracle 数据导出注意事项

    1.数据导出exp.expbd和imp.impbd 区别: exp,imp:既可以在客户端执行也可以在服务端执行,效率慢于expbd.impbd expbd.impbd:只能够在服务端执行,impbd ...

  8. 02-第一个iOS程序-开发步骤

    打开Xcode 选择项目模板 Single View Application是最适合初学者的模板 设置项目属性 运行程序 不管怎样,先运行第一个iOS程序看看效果先(用快捷键Command + R 也 ...

  9. React中的全选反选问题

    全选反选问题 1.在state里维护一个数组,例如showArr:[] 2.绑定点击事件的时候将当前这个当选按钮的index加进来 <span className='arrow' onClick ...

  10. Object.keys方法

    我们有时需要知道对象的所有属性,原生js给我们提供了一个很好的方法:Object.keys(),该方法返回一个数组 传入对象,返回属性名 var obj = {'a':'123','b':'345'} ...