`

Android小代码-技巧积累

 
阅读更多

string.xml中添加空格

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

  1. <stringname="test1">\t填写&#160;&#160;&#160;&#160;手机号</string>
  2. <stringname="test2">输入密码(6-14位)</string><!--开头空格无效-->
  3. <stringname="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. <?xmlversion="1.0"encoding="utf-8"?>
  2. <shapexmlns:android="http://schemas.android.com/apk/res/android"
  3. android:shape="rectangle">
  4. <solidandroid:color="@android:color/white"/>
  5. <cornersandroid:radius="5dip"/>
  6. <strokeandroid: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. protectedvoidonCreate(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. importandroid.content.Context;
  2. importandroid.net.ConnectivityManager;
  3. importandroid.net.NetworkInfo;
  4. publicfinalclassConnectivityUtils{
  5. privatestaticConnectivityManagerconnMgr=null;
  6. privatestaticNetworkInfoinfo=null;
  7. privatestaticinttype=-1;//-1表示无网络ConnectivityManager.TYPE_NONE
  8. publicstaticbooleanisConnectivityAvailable(Contextcontext){
  9. connMgr=(ConnectivityManager)context
  10. .getSystemService(Context.CONNECTIVITY_SERVICE);
  11. info=connMgr.getActiveNetworkInfo();
  12. if(info==null){
  13. returnfalse;
  14. }
  15. type=info.getType();
  16. returninfo.isAvailable();
  17. }
  18. publicstaticbooleanisWifiAvailable(Contextcontext){
  19. if(!isConnectivityAvailable(context)){
  20. returnfalse;
  21. }
  22. returntype==ConnectivityManager.TYPE_WIFI;
  23. }
  24. publicstaticbooleanisMobileAvailable(Contextcontext){
  25. if(!isConnectivityAvailable(context)){
  26. returnfalse;
  27. }
  28. returntype==ConnectivityManager.TYPE_MOBILE;
  29. }
  30. }
通常在app中可能多出调用,这里直接做成了工具类,所以使用了final/static;
另外,需要添加访问网络状态的权限:
  1. <uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"/>

发送简单短信

对于简单的文本短信,可以通过SmsManager来进行发送:
  1. <uses-permissionandroid: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. publicvoidsendSMS(Contextcontext,Stringcontent){
  2. Uriuri=Uri.parse("smsto:153920*****");
  3. Intentintent=newIntent(Intent.ACTION_SENDTO,uri);
  4. intent.putExtra(intent.EXTRA_TEXT,content);
  5. context.startActivity(intent);
  6. }
不过这种方式需要手动单击发送;


分享简单文本信息

  1. publicvoidshareText(Contextcontext,Stringcontent){
  2. Intentintent=newIntent(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)withthisactivity.
    我的adt插件版本23,新建工程时会有appcompat_v7库存在,在创建activity时默认继承的是actionbarActivity,改成Activity类即可;

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

分享到:
评论

相关推荐

    Android代码-android-note

    "Android代码-android-note"这个压缩包文件很可能包含了开发者在实践这些技术时积累的笔记和示例代码。让我们深入探讨一下其中可能涵盖的知识点。 首先,Android开发的基础是Java或Kotlin语言。Java是早期Android...

    Android代码-安卓干货圈

    【Android代码-安卓干货圈】是一个专注于Android开发领域的资源库,包含了各种实用的代码示例、工具类、库以及开发者们在实践中积累的技巧和经验。这个资源集合旨在帮助Android开发者提升技能,解决实际问题,同时也...

    50 Android Hack2-Hack3

    这些技巧都是Android开发者在实践中不断积累的经验,能够帮助我们写出更加高效、优雅的代码。 总之,"50 Android Hack2-Hack3"涵盖了Android开发中的关键知识点,特别是与布局和视图组相关的优化策略。通过深入学习...

    Android代码-[安卓开源]仿百度桌面转盘小工具项目.zip

    7. **调试技巧**: 使用Android Studio的调试工具,如Logcat输出日志,或使用调试器Step Over/Into/Out,来查找和修复代码问题。 8. **性能优化**: 为保证流畅运行,可能需要关注内存使用、渲染性能和CPU占用,避免...

    Android代码-快捷查询源码.zip

    通过深入研究"快捷查询源码.zip"中的源代码,开发者不仅可以学习到特定查询功能的实现,还能积累Android开发的通用技巧和最佳实践,提升自己的编程能力。同时,阅读和理解源码也是提升问题解决能力的有效途径,有助...

    安卓Android源码——安卓Android经典开发---豆瓣网移动客户端+讲解+源代码.zip

    《安卓Android源码——安卓Android经典开发---豆瓣网移动客户端+讲解+源代码》这个压缩包文件是一个关于安卓应用开发的资源集合,其中包含了豆瓣网移动客户端的源代码以及相关的开发讲解,对于学习和理解安卓应用...

    Android游戏 迷宫小球 源代码

    在Android平台上开发游戏是许多开发者热衷的领域,尤其是对于初学者来说,通过分析和学习已有的游戏源代码,可以快速掌握移动游戏开发的基础知识和技巧。"迷宫小球"(BallGame)是一款简单却富有挑战性的游戏,它...

    android开发--详解eclipse debug && eclipse快捷键

    - **管理断点**:建议在每次调试结束时清除所有断点,以避免积累过多的断点影响性能。可以通过“Breakpoints”视图来管理和删除断点。 - **监控变量**:对于频繁变化的变量,应定期清理“Watch”视图,以保持Eclipse...

    Android开发书籍 - JNI详解

    ### Android开发书籍 - JNI详解 #### 一、前言与翻译初衷 本书旨在记录JNI(Java Native Interface)编程的经验,并以此为基础,探索更深层次的虚拟机相关知识。作者原本计划编写一本更为深入的虚拟机书籍,但意识...

    7个Android应用程序源代码

    通过研究这7个Android应用的源代码,你可以逐步建立起对Android开发的整体认知,提高你的编程技巧,并为实际项目开发积累经验。同时,这种实践性的学习方法也能帮助你在遇到问题时找到解决方案,提升解决问题的能力...

    android小知识、技巧、源码汇总

    在Android开发领域,掌握一些小知识、技巧以及深入理解源码是提升开发效率和解决问题的关键。下面我们将就“android小知识、技巧、源码汇总”这个主题进行详细的探讨。 一、Android基础知识 Android是一个开源的...

    疯狂Android讲义的源代码

    通过仔细研究《疯狂Android讲义》的源代码,开发者不仅可以加深对Android开发的理解,还能积累实际项目经验,提升解决实际问题的能力。在阅读和实践过程中,遇到不理解的地方,结合书中的文字讲解,将更有利于知识的...

    疯狂Android讲义 光盘配套书籍代码01-05

    通过这些代码实例,读者不仅可以巩固理论知识,还能积累实践经验,从而成为一名更优秀的Android开发者。同时,光盘说明.txt文件可能会提供关于如何运行和理解这些代码的指南,对于初学者来说尤其重要。

    Android小项目集合100多个

    在Android开发领域,小项目是积累经验、提升技能的有效途径。"Android小项目集合100多个"这个资源包提供了一系列的学习和实践材料,旨在帮助开发者深入理解和掌握Android应用程序的开发技巧。以下将针对Android开发...

    Android 开发入门与实战的代码

    【Android开发入门与实战的代码】这一主题涵盖了Android应用程序开发的基础知识和实践技巧,适合初学者和希望深化Android技能的开发者。在这个项目中,我们将会探索Android开发环境的搭建、基本组件的理解以及如何...

    android开发环境搭建步骤

    搭建Android开发环境是每个Android开发者必须要经历的步骤,它包括了下载、安装和配置一系列的软件工具。...随着经验的积累,你可能会更深入地学习Gradle构建系统、Android Studio的使用,以及更多的开发和调试技巧。

    android游戏开发eclipes源代码

    本项目是一个使用Eclipse开发的Android小游戏——弹球游戏(PangBall),它展示了如何利用Java语言和Android SDK构建一个基本的移动游戏。 首先,我们需要了解Eclipse的基础知识。Eclipse是一款开源的IDE,广泛用于...

    Android Programming - Pushing the Limits- Hellman, Erik

    这本书不仅凝聚了他多年的经验积累,还反映了他对技术创新和卓越品质的追求。 #### 二、书籍内容概览 本书旨在帮助读者深入了解Android开发的核心技术和高级功能,内容涵盖了从基础知识到复杂技术的各种主题。具体...

    android入门+android应用框架设计技巧+程序员指南

    4. **代码风格**:遵循Google的Android代码风格指南,保持代码一致性。 5. **持续集成**:理解Jenkins、Travis CI等工具,实现自动编译、测试和部署。 6. **Android最新技术**:关注Android的新特性,如Jetpack组件...

Global site tag (gtag.js) - Google Analytics