美文网首页
开发小技巧集锦

开发小技巧集锦

作者: 空指针tc | 来源:发表于2018-06-29 16:48 被阅读6次

    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) {
    //继续操作
    }
    }

    相关文章

      网友评论

          本文标题:开发小技巧集锦

          本文链接:https://www.haomeiwen.com/subject/fyiayftx.html