开发小技巧集锦

1.错误:java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
at android.support.v4.app.FragmentManagerImpl.checkStateLoss(Unknown Source)
at android.support.v4.app.FragmentManagerImpl.modifiesAlpha(Unknown Source)

解决方案:
保存状态的代码在super之前调用
http://blog.csdn.net/caroline_wendy/article/details/43014395
http://stackoverflow.com/questions/7575921/illegalstateexception-can-not-perform-this-action-after-onsaveinstancestate-wit



2.快捷键:局部变量转为全局变量,ctrl+alt+F


3.button左侧添加一个图片 android:drawableLeft="@drawable/icon_buy"


4.edittext光标看不见的问题找出来了,是由于创建项目的主题默认光标时白色,而输入框的背景色时白色,所以肉眼看不见。。。


5.string.xml里的技巧
1、在strings.xml里面照常写

 <string name="subtotalItems">Subtotal(%1$s&#160;items):</string>

其中%1$s代表第一个位置,类型为string。后面的 是表示插入一个空格
2、在初始化界面数据时,获取subtotalItems这个string,然后动态加入2.
tv_subTotal为界面上的一个textview控件

TextView tv_subTotal=(TextView) findViewById(R.id.tv_subtotal);
    //获取左侧tv_subtotal,显示subTotal items的总数
    String data = getResources().getString(R.string.subtotalItems); 
        data = String.format(data, 2);
        tv_subTotal.setText(data);
     <TextView
                android:id="@+id/tv_subtotal"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentLeft="true"
                android:layout_alignParentTop="true"
                android:text="@string/subtotalItems"
                android:textColor="#000000"
                android:textSize="14sp" />

NumberFormat df=DecimalFormat.getInstance(Locale.US);默认us,防止切换语言显示‘.’为',’,
或者显示的数值全部为0(即使有数值)

    df.setMaximumFractionDigits(2);//最多显示2位小数
        return ConvertUtil.toFloat(df.format(result));

 long localTime = order.getCdate() - TimeZone.getDefault().getRawOffset();//标准格林尼治时间下日期时间转换成本地时间

6.设置appbar没有阴影 app:elevation="0px"
设置toolbar的title颜色和大小,用app:的属性


7.原生图片放在mipmap 里面 drawable主要放一些放一些自定义形状和按钮变色之类的xml

4.3 google强烈建议使用mipmap装图片。把图片放到mipmaps可以提高系统渲染图片的速度,提高图片质量,减少GPU压力。


8.android:button="@drawableeckbox_bg"给checkbox加上这一句样式,text设置为""

写一个样式文件,分别在选择与未选中时显示不同的图片。

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <!-- 默认颜色 -->
    <item android:drawable="@drawable/icon_unchecked" android:state_checked="false"></item>
    <!-- 点击时的颜色 -->
    <item android:drawable="@drawable/icon_checked" android:state_checked="true"></item>

</selector>

8.SpannableString的使用

SpannableString   msp = 
new SpannableString("要显示的字符串");
msp.setSpan(new StrikethroughSpan(),0,msp.length(),
 Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
tv_old_price.setText(msp);

此方案可以解决毛边
原方案: tv_old_price.getPaint().setFlags(
Paint.STRIKE_THRU_TEXT_FLAG);//删除线
此方案产生毛边


9.tablayout的使用
下面是viewpager的选中的监听方法。
@Override
public void onPageSelected(int position) {

            tabLayout.getTabAt(position).select();

//mViewPager.setCurrentItem(2);方式改变viewpager的选择页面,而不是左右滑动切换,
//此时会出现tablayout的指示器颜色正确显示,但是title文本还是默认色,没有正确同步更新。
}


9.打包时strings.xml报错
错误:Error:(16) Error: "offTip" is not translated in "de" (German),
"es" (Spanish), "fr" (French), "it" (Italian),
"ru" (Russian) [MissingTranslation]
解决方案:在strings.xml加入下面属性描述

<resources  xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation">

10.界面绘制问题
1、setContentView之前设置 getWindow().setBackgroundDrawable(null);,减少一层背景绘制
2、尽量不要设置额外的background(即福布局设置了,自布局就不要设置同样的颜色了)。
3、减少不必要的根布局、布局层级。
这样基本可以消除界面绘制的深、浅红色,基本就只剩下少数的3次重绘的。


11。新版本库的问题
suport库23.2的话,下面代码不起作用
解决TabLayout标题默认大写问题

<style name="MyCustomTabTextAppearance" parent="TextAppearance.Design.Tab">
        <item name="textAllCaps">false</item>
 </style>
    ```
 ----------


12.设置颜色
 Color.parseColor("#30FFFFFF")

 ----------
 13.java正则方法获取string里的某个值
  Pattern pattern = Pattern.compile("Order ID:(\\d+).*");
        Matcher m = pattern.matcher("Order ID:1111 Qty:4 状态为xxx, 打回订单并作废运单请点确定");
        while (m.find()) {
            LogUtil.e(TAG, "find method");
            LogUtil.e(TAG, "m.group(1)" +m.group(1));
        }
//这里获取到正则里()里面的内容,也就是orderid的值1111
 ----------
14.webview界面内存泄露解决
方案:不要xml设置webview,而是以动态创建对象的方式。
并且界面销毁时调用destroy等方法  

  mWebView.getSettings().setBuiltInZoomControls(true);
            mWebView.setVisibility(View.GONE);// 把destroy()延后
            mWebView.removeAllViews();
            mWebView.destroy();
            
            
----------
15.as的使用技巧
alt+F7可以查看代码、类文件、布局等在哪里被使用
用ctrl shift F可以查看某个string在哪里被使用,比如搜索"20"在项目里使用的地方。
edit-find-find in path打开操作界面,上面快捷键可能冲突导致无法使用。
勾选whole words only,过滤部分数据,选择directory,选择具体搜索的路径(也可以整个项目)
16.常见搜索框点击后,输入文字,然后点击输入法里的完成或者搜索键触发enter键,
然后监听key进行余下的操作,但是此时会触发2此。
由于Key有Down和Up事件,所以会执行两次。

解决方案:同时满足才执行代码
public boolean onKey(View v, int keyCode, KeyEvent event) {
 if (keyCode == KeyEvent.KEYCODE_ENTER && event.getAction() == KeyEvent
                        .ACTION_DOWN) {
//继续操作
}
}
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,542评论 6 504
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,822评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,912评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,449评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,500评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,370评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,193评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,074评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,505评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,722评论 3 335
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,841评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,569评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,168评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,783评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,918评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,962评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,781评论 2 354

推荐阅读更多精彩内容