优化产品使用体验记录一

Q:软键盘会覆盖屏幕上下面的一片区域,有时候我们使用某个控件(比如EditText)完了,应该自动将此软键盘收起来

A:参考解决方案:http://blog.sina.com.cn/s/blog_87479ba60101akfh.html,我自己使用这一部分就OK了

InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
                    //得到InputMethodManager的实例
                    if (imm.isActive()) {
                        //如果开启
                        imm.toggleSoftInput(InputMethodManager.SHOW_IMPLICIT, InputMethodManager.HIDE_NOT_ALWAYS);
                        //关闭软键盘,开启方法相同,这个方法是切换开启与关闭状态的
                    }

Q:有时候控件输入完成后,我们希望失去焦点,但同时别的控件也不要获取到焦点

A:参考解决方案:http://www.tuicool.com/articles/UvyQVj,我自己的部分:XML部分

        <RelativeLayout
            android:id="@+id/phone_input_layout"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_alignParentLeft="true"
            <!--“增加部分-->
            android:focusable="true"
            android:focusableInTouchMode="true"
           <!--增加部分”-->
             >

            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerVertical="true"
                android:background="@drawable/login_phone_new" />

            <EditText
                <!--要失去焦点的控件 -->
                android:id="@+id/regi_input_phone_num"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_marginLeft="28.5dp"
                android:hint="请输入你的手机号码"
                android:inputType="number"
                android:textColor="#333333"
                android:textColorHint="#999999"
                android:textSize="15sp"
                android:background="@null"/>

        </RelativeLayout>
                    

程序:

//                    ETInputPhoneNum.setFocusableInTouchMode(true);
                    ETInputPhoneNum.clearFocus();

Q:获取验证码短信息的内容,并将其中的5位纯数字验证码读出来写入到控件(EditText)中

A:参考:http://blog.csdn.net/bufanni12/article/details/29804105?utm_source=tuicoolhttp://www.cppblog.com/AutomateProgram/archive/2010/07/21/120930.html

     /*
    * 监听短信数据库
    */
    class SmsContent extends ContentObserver {
        private Cursor cursor = null;
        private String subString = null;

        public SmsContent(Handler handler){
            super(handler);
            // TODO Auto-generated constructor stub
        }

        @SuppressWarnings("deprecation")
        @Override
        public void onChange(boolean selfChange) {
            super.onChange(selfChange);
            // 下面注释掉的是用来获取某一个确定电话号码的短信息,现在这个是获取所有的短信息
            cursor = managedQuery(Uri.parse("content://sms/inbox"),
                    new String[] { "_id", "address", "read", "body" },
                    /*" address=? and read=?"*/null,
                    /*new String[] { "10690023192088", "0" }*/null, "_id desc");
            if (cursor != null && cursor.getCount() > 0){
                ContentValues values = new ContentValues();
                values.put("read", "1");
                cursor.moveToNext();
                int smsbodyColumn = cursor.getColumnIndex("body");
                String smsBody = cursor.getString(smsbodyColumn);
                if (smsBody.toString().length() > 10) {
                    subString = smsBody.substring(0, 6);// 获取一段子字符串,用来比较
//                Log.e("test22", subString);
                    int ret = subString.compareTo("【某某科技】");
                    if (ret == 0) {
                        ETInputCertiCode.setText(getDynamicPassword(smsBody));
                        ETInputCertiCode.clearFocus();
                    }
                }
            }

            // 在用managedQuery的时候,不能主动调用close()方法, 否则在Android 4.0+的系统上, 会发生崩溃
            if (Build.VERSION.SDK_INT < 14) {
                cursor.close();
            }
        }

        /**
         * 从字符串中截取连续5位数字组合 ([0-9]{" + 5 + "})截取六位数字 进行前后断言不能出现数字 用于从短信中获取动态密码
         *
         * @param str
         *            短信内容
         * @return 截取得到的5位动态密码
         */
        public String getDynamicPassword(String str) {
            // 6是验证码的位数一般为六位
            Pattern continuousNumberPattern = Pattern.compile("(?<![0-9])([0-9]{"
                    + 5 + "})(?![0-9])");
            Matcher m = continuousNumberPattern.matcher(str);
            String dynamicPassword = "";
            while (m.find()) {
                System.out.print(m.group());
                dynamicPassword = m.group();
            }

            return dynamicPassword;
        }
    }

在对应的Activity或者Fragment中:

<!-- 权限 -->
    <!-- 发送短信-->
    <uses-permission android:name="android.permission.SEND_SMS" />
    <!-- 阅读消息 -->
    <uses-permission android:name="android.permission.READ_SMS" />
    <!-- 写入消息 -->
    <uses-permission android:name="android.permission.WRITE_SMS" />
    <!-- 接收消息 -->
    <uses-permission android:name="android.permission.RECEIVE_SMS" />
private SmsContent content;

@Override
protected void onCreate(Bundle savedInstanceState) {
        ... ...
        content = new SmsContent(new Handler());
        //注册短信变化监听
        this.getContentResolver().registerContentObserver(Uri.parse("content://sms/"), true, content);
        ... ...
}
@Override
    protected void onDestroy() {
        super.onDestroy();
        this.getContentResolver().unregisterContentObserver(content);
    }

另一种广播的方式:http://www.aichengxu.com/view/13311

时间: 2024-10-05 03:27:53

优化产品使用体验记录一的相关文章

优化产品使用体验记录二

Q:Android上面比较好的摇一摇 A:来源于开源社区,在比较多的Android品牌手机上测试效果好 private float lastX; private float lastY; private float lastZ; private long lastUpdateTime; private static final int SPEED_SHRESHOLD = 45;// 这个值越大需要越大的力气来摇晃手机 private static final int UPTATE_INTERVA

千万级下载量产品深度体验&mdash;手机音乐客户端

VINCENT MK http://www.cnblogs.com/mkvin/ QQ:350510376 引言 手机音乐客户端是每个手机用户几乎都高频率使用的一个产品,从功能机时代到智能机时代都一直如此.听音乐似乎是人们的天性,伴随音乐的响起,在各种复杂的生理因素的作用下,音乐可以带给人幸福和满足感. 一款好的音乐客户端产品,必须要满足用户查找歌曲.听歌曲这两个基本的诉求. 目前的音乐客户端都一定会有本地和在线听音乐的功能,当然在线音乐功能需要产品提供海量的曲库和优秀的音频来源,这是吸引用户使

业务运维实战:腾讯是怎么优化APP用户体验的?

引言 当前,用户体验已成为一种新的产品价值.当技术实现不再是产品核心竞争力时,产品的竞争就是用户体验的竞争.而用户弹指间感知到的性能体验对于用户体验尤为重要. 移动互联网产品因为用户的手机型号繁多.手机操作系统版本不一致.app版本难统一等问题,很难在开发或测试环节就完全解决掉移动app的性能问题,这使得移动app产品在运维过程中,不得不面对用户体验不优.性能不佳的问题. 如何让开发可以高效定位性能问题? 让开发,测试,运维清晰的把控各个产品的性能状况? 我们结合了当前业界商用的APM技术,实现

网站优化讲的是搜索引擎优化和用户体验优化

俗话说的好,九层高台,起于累土.建设网站也是一样,我们要想建设一个优秀的网站,要想让自己的网站发挥出最大的功效,要想让自己企业的投资回报率最大化,就要注重日常网站运营过程中的维护和优化.一般来说,网站优化讲的是搜索引擎优化和用户体验优化. 网站优化 搜索引擎优化 搜索引擎优化顾名思义讲的就是企业网站在搜索引擎中的排名优化,这一方面,也是现在许多企业在进行网站宣 传推广时最关注的部分之一.网站在搜索引擎中的排名,在一定程度上能够决定网站的流量.因此,搜索引擎的 重要性不言而喻. 而今天我要重点说的

ASP.NET页面优化性能提升方法记录

今天与大家分享:一种优化页面执行速度的方法.采用这个方法,可以使用页面的执行速度获得[8倍]的提升效果. 为了让您对优化的效果有个直观的了解,我准备了下面的测试结果截图: 测试环境:1. Windows Server 2003 SP22. Viaual Studio 2008,使用自带的WebDev.WebServer.EXE运行网站程序.3. (ThinkPad SL510):Core2 T6670 2.2GHz, 4G内存 二个红框中的数字反映了优化前后的执行时间.数字表明:优化前后,执行时

千万级下载量产品深度体验-前言

随着移动互联网的快速发展,千万级甚至亿级下载量的产品也出现了很多,这些产品无疑都是各个领域中的精英.之所以能够让如此多的用户安装使用产品,一方面是产品本身的优秀,包括功能上的创新或是出众的用户体验,另一外面也展现了这些企业优秀的推广能力.在如今的互联网时代,得用户者得天下的趋势开始上演的愈加强烈.很多产品已经不光是在功能上吸引用户,更是希望将产品打造成一件艺术品,从而产生粉丝效应,长时间的保证用户的黏度. 正所谓知彼知己百战不殆,想要设计一款优秀的产品,必须熟知行业中同类产品的优势和劣势,才能取

Noesis Optimus 10.15 Win32_64 &amp; Linux32_64 2CD著名集成优化产品

Noesis Optimus 10.15 Win32_64 & Linux32_64 2CD著名集成优化产品 OPTIMUS是比利时Noesis Solutions公司的著名集成优化产品. Noesis Solutions公司作为专业的CAE流程集成和设计优化的公司具有10年 以上的CAE和优化的工程经验和深厚的技术积累,使其不仅成为软件产品的供应商,也为用户解决其多学科集成和优化设计问题提供宝贵的专 业知识和经验.公司多年来对新方法.新技术持之以恒的投入和开发,使得OPTIMUS多年来始终在同

使用Zipalign工具优化Android APK应用记录

生成的Android应用APK文件最好进行优化,因为APK包的本质是一个zip压缩文档,经过优化能使包内未压缩的数据有序的排列,从而减少应用程序运行时的内存消耗.我们可以使用Zipalign工具进行APK优化. 据Android官方网站的说明,Zipalign是一款重要的优化APK应用程序的工具. 多数软件开发商在正式推出其Android应用程序,都使用Zipalign工具优化APK包.但是,仍然有一些应用程序需要我们自己动手进行Zipalign优化,例如一些个人开发的软件.一些破解版的软件.

持续优化云原生体验,阿里云在Serverless容器与多云上的探索

摘要: 深度解读阿里云的Serverless Kubernetes, 介绍对Open Service Broker API标准的支持. 近日,阿里云宣布推出Serverless Kubernetes服务此举意在降低容器技术的使用门槛.简化容器平台运维.并同时发布阿里云服务对Open Service Broker API标准支持,通过一致.简单.可扩展的接口,将各种类型开发服务便捷统一化地交付到Cloud Foundry.Kubernetes等云原生应用平台:轻松实现多云环境下应用开发,让用户更多