開發小技巧集錦

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)java

解決方案: 保存狀態的代碼在super以前調用 blog.csdn.net/caroline_we… stackoverflow.com/questions/7…


2.快捷鍵:局部變量轉爲全局變量,ctrl+alt+Fandroid


3.button左側添加一個圖片 android:drawableLeft="@drawable/icon_buy"git


4.edittext光標看不見的問題找出來了,是因爲建立項目的主題默認光標時白色,而輸入框的背景色時白色,因此肉眼看不見。。。web


5.string.xml裏的技巧 一、在strings.xml裏面照常寫bash

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

其中%1$s表明第一個位置,類型爲string。後面的 是表示插入一個空格 二、在初始化界面數據時,獲取subtotalItems這個string,而後動態加入2. tv_subTotal爲界面上的一個textview控件app

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(即便有數值)ide

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主要放一些放一些自定義形狀和按鈕變色之類的xmlui

4.3 google強烈建議使用mipmap裝圖片。把圖片放到mipmaps能夠提升系統渲染圖片的速度,提升圖片質量,減小GPU壓力。this


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">
複製代碼

  1. 界面繪製問題 一、setContentView以前設置 getWindow().setBackgroundDrawable(null);,減小一層背景繪製 二、儘可能不要設置額外的background(即福佈局設置了,自佈局就不要設置一樣的顏色了)。 三、減小沒必要要的根佈局、佈局層級。 這樣基本能夠消除界面繪製的深、淺紅色,基本就只剩下少數的3次重繪的。

  1. 新版本庫的問題 suport庫23.2的話,下面代碼不起做用 解決TabLayout標題默認大寫問題
<style name="MyCustomTabTextAppearance" parent="TextAppearance.Design.Tab">
        <item name="textAllCaps">false</item>
 </style>
複製代碼

12.設置顏色 Color.parseColor("#30FFFFFF")


  1. 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

  1. webview界面內存泄露解決 方案:不要xml設置webview,而是以動態建立對象的方式。 而且界面銷燬時調用destroy等方法

mWebView.getSettings().setBuiltInZoomControls(true);

mWebView.setVisibility(View.GONE);// 把destroy()延後

mWebView.removeAllViews();

mWebView.destroy();


  1. as的使用技巧 alt+F7能夠查看代碼、類文件、佈局等在哪裏被使用 用ctrl shift F能夠查看某個string在哪裏被使用,好比搜索"20"在項目裏使用的地方。 edit-find-find in path打開操做界面,上面快捷鍵可能衝突致使沒法使用。 勾選whole words only,過濾部分數據,選擇directory,選擇具體搜索的路徑(也能夠整個項目)

  1. 常見搜索框點擊後,輸入文字,而後點擊輸入法裏的完成或者搜索鍵觸發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) { //繼續操做 } }

相關文章
相關標籤/搜索