\t填写手机号输入密码(6-14位)

Android小代码-技巧积累

系统 1813 0

string.xml中添加空格

假设TextView引用了string.xml中的常量,若要在字符串开头添加空格或制表符,或者在字符串中间显示多个空格符,直接键盘敲入空格是不会在控件中起作用,需要使用: " &#160 ;" 或者 " \t "等特殊字符:

  1. < string name = "test1" > \t填写&#160;&#160;&#160;&#160;手机号 </ string >
  2. < string name = "test2" > 输入密码(6-14位) </ string > <!--开头空格无效-->
  3. < string name = "test3" > 已阅读并同意xx协议 </ string > <!--中间部分只显示一个空格-->

eclipse会提示test2中的"6-14"最好做修改 : Replace "-" with an "en dash" character (–, &&;#8211;) ?

处理方法是将" - "替换为 "&#8211; "即可;

P.S.: 带html用法 ;

带边框的TextView

可以自定义控件或设置背景(9patch或shape图片)来实现:
1.创建textview_border.xml的shape文件:
  1. <? xml version = "1.0" encoding = "utf-8" ?>
  2. < shape xmlns:android = "http://schemas.android.com/apk/res/android"
  3. android:shape = "rectangle" >
  4. < solid android:color = "@android:color/white" />
  5. < corners android:radius = "5dip" />
  6. < stroke android:width = "1dip" android:color = "#CBCBCB" />
  7. </ shape >
设置TextView控件的背景:
  1. android:background = "@drawable/regist_login_textview_border"
效果如下:

TextView添加删除线

  1. mTextView.getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG);

密码输入框内容的显示和隐藏

EditText属性:android:inputType="textPassword"
通过增加一个CheckBox来改变是否明文显示输入内容:
  1. if (isChecked){
  2. //显示密码框内容
  3. mEditPwd.setInputType(InputType.TYPE_CLASS_TEXT|EditorInfo.TYPE_TEXT_VARIATION_NORMAL);
  4. //mEditPwd.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
  5. } else {
  6. //隐藏密码框内容
  7. mEditPwd.setInputType(InputType.TYPE_CLASS_TEXT|InputType.TYPE_TEXT_VARIATION_PASSWORD);
  8. //mEditPwd.setTransformationMethod(PasswordTransformationMethod.getInstance());
  9. }
  10. mEditPwd.setSelection(mEditPwd.getText().toString().length()); //设置光标位置在文本框末尾
以上两种方式都可以;
备注:"InputType.TYPE_CLASS_TEXT "表示都要添加,否则光标不显示;


让Activity全屏

  1. 在AndroidManif.xml对应的Activity节点中配置theme属性,如下:
    1. android:theme = "@android:style/Theme.Light.NoTitleBar.Fullscreen"
  2. 在Activity的onCreate()方法中设置:
    1. @Override
    2. protected void onCreate(BundlesavedInstanceState){
    3. super .onCreate(savedInstanceState);
    4. //隐藏标题栏,必须写在setContentView()之前
    5. requestWindowFeature(Window.FEATURE_NO_TITLE);
    6. //隐去状态栏(电池等图标)
    7. getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
    8. WindowManager.LayoutParams.FLAG_FULLSCREEN);
    9. setContentView(R.layout.activity_main);
    10. }
    若只是通过代码来隐藏标题栏,则可以看到标题栏的消失动画(官方模拟器4.3测试),连同状态栏一起隐藏的话则无此问题;


禁止横竖屏切换

在manifest.xml中对activity进行设置:
  1. android:screenOrientation = "portrait"
landscape -- 横向,portrait -- 纵向
引申:android:configChanges=”keyboardHidden|orientation” onConfigurationChanged(Configuration newConfig)
 

获得程序版本号

  1. try {
  2. PackageManagerpkgMgr=getPackageManager();
  3. PackageInfoinfo=pkgMgr.getPackageInfo( this .getPackageName(), 0 );
  4. StringversionName=info.versionName;
  5. } catch (NameNotFoundExceptione){
  6. e.printStackTrace();
  7. }
 
 

获取网络状态

  1. import android.content.Context;
  2. import android.net.ConnectivityManager;
  3. import android.net.NetworkInfo;
  4. public final class ConnectivityUtils{
  5. private static ConnectivityManagerconnMgr= null ;
  6. private static NetworkInfoinfo= null ;
  7. private static int type=- 1 ; //-1表示无网络ConnectivityManager.TYPE_NONE
  8. public static boolean isConnectivityAvailable(Contextcontext){
  9. connMgr=(ConnectivityManager)context
  10. .getSystemService(Context.CONNECTIVITY_SERVICE);
  11. info=connMgr.getActiveNetworkInfo();
  12. if (info== null ){
  13. return false ;
  14. }
  15. type=info.getType();
  16. return info.isAvailable();
  17. }
  18. public static boolean isWifiAvailable(Contextcontext){
  19. if (!isConnectivityAvailable(context)){
  20. return false ;
  21. }
  22. return type==ConnectivityManager.TYPE_WIFI;
  23. }
  24. public static boolean isMobileAvailable(Contextcontext){
  25. if (!isConnectivityAvailable(context)){
  26. return false ;
  27. }
  28. return type==ConnectivityManager.TYPE_MOBILE;
  29. }
  30. }
通常在app中可能多出调用,这里直接做成了工具类,所以使用了final/static;
另外,需要添加访问网络状态的权限:
  1. < uses-permission android:name = "android.permission.ACCESS_NETWORK_STATE" />

发送简单短信

对于简单的文本短信,可以通过SmsManager来进行发送:
  1. < uses-permission android:name = "android.permission.SEND_SMS" />
  1. //发送短信
  2. SmsManagersms=SmsManager.getDefault();
  3. //sms.sendTextMessage("收信人号码","发件人号码,null表示当前设备可用号码","发送内容",null,null);
  4. sms.sendTextMessage(destinationAddress, null ,message, null , null );
不过,若是短信太长,就会出错,粗略测试了一下,我的电信卡单条短信160~180个字时就会发生异常,因此需要对短信进行切割,分段发送:
  1. if (message.length()> 70 ){
  2. List<String>texts=sms.divideMessage(message);
  3. for (Stringtext:texts){
  4. sms.sendTextMessage(destinationAddress, null ,text, null , null );
  5. }
  6. } else {
  7. sms.sendTextMessage(destinationAddress, null ,message, null , null );
  8. }
备注:这种方式是后台发送;
介绍另一种发短信方法:
  1. public void sendSMS(Contextcontext,Stringcontent){
  2. Uriuri=Uri.parse( "smsto:153920*****" );
  3. Intentintent= new Intent(Intent.ACTION_SENDTO,uri);
  4. intent.putExtra(intent.EXTRA_TEXT,content);
  5. context.startActivity(intent);
  6. }
不过这种方式需要手动单击发送;


分享简单文本信息

  1. public void shareText(Contextcontext,Stringcontent){
  2. Intentintent= new Intent(Intent.ACTION_SEND);
  3. intent.setType( "text/plain" );
  4. intent.putExtra(Intent.EXTRA_TEXT,content);
  5. context.startActivity(Intent.createChooser(intent,content));
  6. }
系统会创建一个选择器,列出符合intent要求的app,从中选择再发送即可达到分享的目的,该方法也可以用来发送短信,只不过收件人需要手动填写;
关于Intent的action还有很多内容,可参考 此文 ;
 

Activity毛玻璃半透明效果

  1. 在styles.xml中设置自定义style:
    1. <stylename= "HalfTranslucent" parent= "@android:style/Theme.Translucent" >
    2. <itemname= "android:windowBackground" > @color /half_tra</item>
    3. <itemname= "android:windowNoTitle" > true </item>
    4. <itemname= "android:windowAnimationStyle" > @android :style/Animation.Translucent</item>
    5. </style>
  2. 在string.xml或color.xml中添加色彩:
    1. <colorname= "half_tra" ># 90000000 </color>
  3. 在manifest.xml中设置Activity主题:
    1. <activity
    2. android:name= ".SecondActivity"
    3. android:theme= "@style/HalfTranslucent"
    4. android:label= "@string/title_activity_second" >
    5. </activity>
    我测试的效果貌似没网上那么好看,另外,测试过程中还碰到的问题:
    a. 反编译他人的apk文件会出现类似如下情况的语句,多了个星号,删掉即可
    1. "@*android:style/Theme.Translucent"
    b.运行时报错:
    1. java.lang.IllegalStateException:YouneedtouseaTheme.AppCompattheme(ordescendant)with this activity.
    我的adt插件版本23,新建工程时会有appcompat_v7库存在,在创建activity时默认继承的是actionbarActivity,改成Activity类即可;

引用http://blog.csdn.net/zxz_tsgx/article/details/38343333

Android小代码-技巧积累


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论