Android Tips 1

weixin_34148456發表於2016-01-12

去除重複庫的引入

compile ('com.sothree.slidinguppanel:library:2.0.4'){ 
    exclude module: 'support-v4'
}

去除依賴庫中的引入

compile (project(':a')){    
    exclude module: 'b'    
    exclude module: 'c'
}

去除 module a中關於b、c的引入,而使用當前project的依賴

Fresco圖片設定

在使用Fresco進行圖片設定的時候,使用DraweeView設定圖片的時候,需要謹慎使用setImage的方法。(在Fresco 0.8.1版本的使用,DraweeView還是直接繼承自ImageView) ,這樣在呼叫的時候,若是圖片過大,則會出現OOM的問題。

/**
* Use this method only when using this class as an ordinary ImageView.
* @deprecated Use {@link #setController(DraweeController)} instead.
*/
@Override
@Deprecated
public void setImageDrawable(Drawable drawable) {
  init(getContext());
  mDraweeHolder.setController(null);
  super.setImageDrawable(drawable);
}

/**
* Use this method only when using this class as an ordinary ImageView.
* @deprecated Use {@link #setController(DraweeController)} instead.
*/
@Override
@Deprecated
public void setImageBitmap(Bitmap bm) {
  init(getContext());
  mDraweeHolder.setController(null);
  super.setImageBitmap(bm);
}

/**
* Use this method only when using this class as an ordinary ImageView.
* @deprecated Use {@link #setController(DraweeController)} instead.
*/
@Override
@Deprecated
public void setImageResource(int resId) {
  init(getContext());
  mDraweeHolder.setController(null);
  super.setImageResource(resId);
}

/**
* Use this method only when using this class as an ordinary ImageView.
* @deprecated Use {@link #setController(DraweeController)} instead.
*/
@Override
@Deprecated
public void setImageURI(Uri uri) {
  init(getContext());
  mDraweeHolder.setController(null);
  super.setImageURI(uri);
}

從程式碼中給出的註釋來看,這幾個方法已被廢棄。正確的姿勢應該使用setController方法來設定圖片。

獲取View的bitmap

view.setDrawingCacheEnabled(true);
view.buildDrawingCache();
Bitmap bitmap  = Bitmap.createBitmap(v.getDrawingCache());
view.setDrawingCacheEnabled(false);

layout preview 顯示

Android每次編譯執行是件耗時的事情,所以這裡使用layout preview有個正確的姿勢可以注意一下。

tools:text=”Linenumber” 
tools:drawableLeft=”@mipmap/ic_launcher”

在xml佈局中,使用TextView的時候,可以使用以上屬性。使用這些屬性,只會在layout preview中會生效,在執行時則會被忽略。
另外感覺一個非常有用的屬性就是

tools:listitem=”@layout/row_person”

這樣,在listview或者recyclerView中,就可以順帶看到我們ItemView的效果了。

Textview 去除文字間距

android:includeFontPadding="false"

git ignore失效的問題

Cannot ignore .idea/workspace.xml - keeps popping up

專案直接使用 aar

repositories {
   flatDir {
     dirs 'libs'
   }
}

dependencies {
    compile(name:'cards', ext:'aar')
}

List轉換為陣列

Foo[] array = new Foo[list.size()];
list.toArray(array);