当前位置:  编程技术>移动开发
本页文章导读:
    ▪java汉语言判断(转)        java中文判断(转) public boolean vd(String str){ char[] chars=str.toCharArray(); boolean isGB2312=false; for(int i=0;i<chars.length;i++){ byte[] bytes=(""+chars[i]).getBytes(); if(bytes.length==.........
    ▪ 怎么解决软键盘弹出引起的各种不适        如何解决软键盘弹出引起的各种不适 在做登录和注册页面的时候,经常会遇到诸如软键盘挡住输入框的情况,android为此提供了一系列的的配置参数供选择,你可以在androidmanufist.xml的对应Activi.........
    ▪ 自定义软键盘中Enter键,及其呼应事件       自定义软键盘中Enter键,及其相应事件 SDK升级到1.5以后,当文本输入框(EditText及其子类)获得焦点后,会弹出系统自带的软键盘 为了实现一些自定义的功能,就稍微研究了下  当layout中有.........

[1]java汉语言判断(转)
    来源: 互联网  发布时间: 2014-02-18
java中文判断(转)
public boolean vd(String str){
  
    char[] chars=str.toCharArray(); 
    boolean isGB2312=false; 
    for(int i=0;i<chars.length;i++){
                byte[] bytes=(""+chars[i]).getBytes(); 
                if(bytes.length==2){ 
                            int[] ints=new int[2]; 
                            ints[0]=bytes[0]& 0xff; 
                            ints[1]=bytes[1]& 0xff; 
                            if(ints[0]>=0x81 && ints[0]<=0xFE && ints[1]>=0x40 && ints[1]<=0xFE){ 
                                        isGB2312=true; 
                                        break; 
                            } 
                } 
    } 
    return isGB2312; 
}


首先要import java.util.regex.Pattern 和 java.util.regex.Matcher
这两个包,接下来是代码

public boolean isNumeric(String str)
{
       Pattern pattern = Pattern.compile(”[0-9]*”);
       Matcher isNum = pattern.matcher(str);
       if( !isNum.matches() ) {
          return false;
       }
       return true;
}

java.lang.Character.isDigit(ch[0])



-----------------另一种-----------------

public static void main(String[] args) {    
        int count = 0;    
         String regEx = "[\\u4e00-\\u9fa5]";    
        //System.out.println(regEx);    
         String str = "中文fdas ";    
        //System.out.println(str);    
         Pattern p = Pattern.compile(regEx);    
         Matcher m = p.matcher(str);    
        while (m.find()) {    
            for (int i = 0; i <= m.groupCount(); i++) {    
                 count = count + 1;    
             }    
         }    
         System.out.println("共有 " + count + "个 ");    
     }   


-------------------------------

判断java String中是否有汉字的方法

java用的是Unicode 编码char 型变量的范围是0-65535 无符号的值,可以表示 65536个字符,基本上地球上的字符可被全部包括了,实际中,我们希望判断一个字符是不是汉字,或者一个字符串里的字符是否有汉字来满足业务上的需求,String类中有个这样的方法可得到其字符长度length() ,看下面例子,
String s1 = "我是中国人";
String s2 = "imchinese";
String s3 = "im中国人";
System.out.println(s1+":"+new String(s1).length());
System.out.println(s2+":"+new String(s2).length()); 
System.out.println(s3+":"+new String(s3).length());


OUTPUT:
我是中国人:5
imchinese:9
im中国人:5
看到了吧,字符串里如果有双字节的字符java就把每个字符都按双字节编码,如果都是单字节的字符就按单字节编码
于是按照以上的规律,结合一位QQ昵称 ?G茶?I珠海 兄的提示由以下解决方法,就是判断字符串的长度和字符字节的长度是否相同来判断是否有双字节的字符

System.out.println((s1.getBytes().length == s1.length())?"s1无汉字":"s1有汉字");
System.out.println((s2.getBytes().length == s2.length())?"s2无汉字":"s2有汉字");
System.out.println((s3.getBytes().length == s3.length())?"s3无汉字":"s3有汉字");


OUTPUT:
s1有汉字
s2无汉字
s3有汉字 //
且慢,这样诚然可以判断出来一个串中是否有双字节编码的字符,但是要精确判断是否有汉字就有些麻烦了,我们知道还有许多其他国家的字符在Unicode中是双字节的.
于是,需要进一步确定汉字的编码范围怎么确定呢,我用了一个本办法那就是现在记事本输出0-65535之间的字符,通过观察发现第一个汉字是'一'最后一个是'??'(现在我也不认识);这下好了判断汉字就容易多了比如我们可以通过比较字符的编码范围,最后给大家一些我试验的结果汉字基本集中在[19968,40869]之间,共有20901个汉字(是不是少了点,算算你能认识多少)

    
[2] 怎么解决软键盘弹出引起的各种不适
    来源: 互联网  发布时间: 2014-02-18
如何解决软键盘弹出引起的各种不适

在做登录和注册页面的时候,经常会遇到诸如软键盘挡住输入框的情况,android为此提供了一系列的的配置参数供选择,你可以在androidmanufist.xml的对应Activity的windowSoftInputMode属性中选择如下4者之一进行配置(紫色字):

 

int SOFT_INPUT_ADJUST_NOTHING

Adjustment option for softInputMode:

set to have a window not adjust for a shown input method.

int SOFT_INPUT_ADJUST_PAN

Adjustment option for softInputMode:

set to have a window pan when an input method is shown, so it doesn't need to deal with resizing but just panned by

the framework to ensure the current input focus is visible.

int SOFT_INPUT_ADJUST_RESIZE

Adjustment option for softInputMode:

set to allow the window to be resized when an input method is shown, so that its contents are not covered by the input method.

int SOFT_INPUT_ADJUST_UNSPECIFIED

Adjustment option for softInputMode:

nothing specified.

 

       <activity android:name=".LoginAc"

 

                  android:label="@string/app_name"
                  android:windowSoftInputMode="stateHidden|adjustResize">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

 

四个参数意思如下:

SOFT_INPUT_ADJUST_NOTHING:         不调整(输入法完全直接覆盖住,未开放此参数)

SOFT_INPUT_ADJUST_PAN:                 把整个Layout顶上去露出获得焦点的EditText,不压缩多余空间,见图1

SOFT_INPUT_ADJUST_RESIZE:            整个Layout重新编排,重新分配多余空间,见图2

SOFT_INPUT_ADJUST_UNSPECIFIED:  系统自己根据内容自行选择上两种方式的一种执行(默认配置)

 

这里的多余空间指的是控件们通过weight分配机制得到的额外空间。

 

图1

 

 

图2

 

 

图3

 

代码实现方式为:

   

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);

 

但是,这样的配置方法一般都很难完全满足需要,有得应用会做得比较好,让顶上去的Layout能够通过scrollbar滚动。这种解决方法网上有各种介绍,本人也是第一时间从网上找解决方法参考,但最终发现都并未把原理说清,而且大多数有错误,或者有多余配置,于是,我从android系统中源码中找参考案例,在Email应用中,找到了我想要的。效果如图4,5。

 

 

图4

 

 

图5

 

 

其对应的Activity是AccountSetupBasics.java,对应的xml文件为account_setup_basics.xml。

来学习下它的xml写法:

 

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:fillViewport="true"
    android:scrollbar >

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:orientation="vertical" >
            <TextView
                android:id="@+id/instructions"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="10dip"
                android:textSize="20sp"
                android:text="@string/accounts_welcome"
                android:textColor="?android:attr/textColorPrimary" />
            <View
                android:layout_width="fill_parent"
                android:layout_height="0dip"
                android:layout_weight="1" />
            <EditText
                android:id="@+id/account_email"
                android:hint="@string/account_setup_basics_email_hint"
                android:inputType="textEmailAddress"
                android:imeOptions="actionNext"
                android:layout_height="wrap_content"
                android:layout_width="fill_parent" />
            <EditText
                android:id="@+id/account_password"
                android:hint="@string/account_setup_basics_password_hint"
                android:inputType="textPassword"
                android:imeOptions="actionDone"
                android:layout_height="wrap_content"
                android:layout_width="fill_parent"
                android:nextFocusDown="@+id/next" />
            <CheckBox
                android:id="@+id/account_default"
                android:layout_height="wrap_content"
                android:layout_width="fill_parent"
                android:text="@string/account_setup_basics_default_label"
                android:visibility="gone" />
            <View
                android:layout_width="fill_parent"
                android:layout_height="0dip"
                android:layout_weight="1" />
        </LinearLayout>

        <RelativeLayout
            android:layout_width="fill_parent"
            android:layout_height="54dip"
            android:background="@android:drawable/bottom_bar" >
            <Button
                android:id="@+id/manual_setup"
                android:text="@string/account_setup_basics_manual_setup_action"
                android:layout_height="wrap_content"
                android:layout_width="wrap_content"
                android:minWidth="@dimen/button_minWidth"
                android:layout_alignParentLeft="true"
                android:layout_centerVertical="true" />
            <Button
                android:id="@+id/next"
                android:text="@string/next_action"
                android:layout_height="wrap_content"
                android:layout_width="wrap_content"
                android:minWidth="@dimen/button_minWidth"
                android:drawableRight="@drawable/button_indicator_next"
                android:layout_alignParentRight="true"
                android:layout_centerVertical="true" />
        </RelativeLayout>
    </LinearLayout>
</ScrollView>

 

 

 

1  它完全把ScrollView作为了一个根Layout,而不是网上好多文章写的在一个Linearlayout里面嵌入一个ScrollView(貌似这种是行不通的)。

然后把我们原来的根Layout搬入ScrollView(ScrollView只能有一个子控件),我查了下androidmanifist.xml和代码,未做任何以上2种方法的配置。

2  它定义了2个0dip的View帮助分配空间(设置其weight吃掉剩余空间,保证输入框处于界面中心位置),可以猜测出这里系统调用的是SOFT_INPUT_ADJUST_RESIZE参数,当所有有实际内容的控件空间总和超出特定范围时,ScrollView开始发挥作用。

 

如此,完美的解决我们遇到的问题。

另外,网上有人说想用SOFT_INPUT_ADJUST_RESIZE ,但又不希望背景图片被压缩,只要按如上方法把Linearlayout的背景图片设置好即可。


    
[3] 自定义软键盘中Enter键,及其呼应事件
    来源: 互联网  发布时间: 2014-02-18
自定义软键盘中Enter键,及其相应事件

SDK升级到1.5以后,当文本输入框(EditText及其子类)获得焦点后,会弹出系统自带的软键盘
为了实现一些自定义的功能,就稍微研究了下 

当layout中有多个EditText,把每个控件的android:singleLine的属性都被设置成true的情况下,软键盘的Enter键上的文字会变成“Next”,按下后下个EditText会自动获得焦点(实现了“Next”的功能);当最后一个控件获得焦点的时候,Enter键上的文字会变成“Done”,按下后软键盘会自动隐藏起来

把EditText的Ime Options属性设置成不同的值,Enter键上可以显示不同的文字或图案
actionNone : 回车键,按下后光标到下一行
actionGo : Go,
actionSearch : 一个放大镜
actionSend : Send
actionNext : Next
actionDone : Done,隐藏软键盘,即使不是最后一个文本输入框
(还有其他一些值可以设定,不过偷懒,没有看:-)) 

设置文本框的OnKeyListener,当keyCode = 66的时候,表明Enter键被按下,就可以编写自己希望的Action了


    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3