- textView自適應(yīng)字體大小
https://developer.android.com/guide/topics/ui/look-and-feel/autosizing-textview
Demo
<android.support.v7.widget.AppCompatTextView
android:layout_width="match_parent"
android:layout_height="35dp"
android:gravity="center"
android:textSize="16sp"
android:maxLines="1"
app:autoSizeTextType="uniform"
app:layout_constraintBottom_toTopOf="@id/list_base_bottom" />
- 當(dāng)集合里面的對(duì)象屬性被修改后慨蛙,再調(diào)用remove()方法時(shí)不起作用赁咙。
例:
public static void main(String[] args)
{
Set<Person> set = new HashSet<Person>();
Person p1 = new Person("唐僧","pwd1",25);
Person p2 = new Person("孫悟空","pwd2",26);
Person p3 = new Person("豬八戒","pwd3",27);
set.add(p1);
set.add(p2);
set.add(p3);
System.out.println("總共有:"+set.size()+" 個(gè)元素!"); //結(jié)果:總共有:3 個(gè)元素!
p3.setAge(2); //修改p3的年齡,此時(shí)p3元素對(duì)應(yīng)的hashcode值發(fā)生改變
set.remove(p3); //此時(shí)remove不掉,造成內(nèi)存泄漏
set.add(p3); //重新添加,居然添加成功
System.out.println("總共有:"+set.size()+" 個(gè)元素!"); //結(jié)果:總共有:4 個(gè)元素!
for (Person person : set)
{
System.out.println(person);
}
}
匿名內(nèi)部類码秉、非靜態(tài)內(nèi)部類會(huì)持有外部類的this引用
匿名內(nèi)部類、非靜態(tài)內(nèi)部類和外部類生命周期是相同的奈偏,不會(huì)造成內(nèi)存泄漏飞几。除非外部類static持有內(nèi)部類或者其他原因造成無法釋放AlertDialog使用注意
導(dǎo)致報(bào)這個(gè)錯(cuò)是在于新的AlertDialog.Builder(mcontext),雖然這里的參數(shù)是AlertDialog.Builder(Context context)缩膝,但我們不能使用getApplicationContext()獲得的Context混狠,而必須使用Activity,因?yàn)橹挥幸粋€(gè)Activity才能添加一個(gè)窗體疾层。調(diào)整圖片大小
Drawable dr = getResources().getDrawable(R.drawable.search_icon);
Bitmap bitmap = ((BitmapDrawable) dr).getBitmap();
// Scale it to 50 x 50
Bitmap bitmap1 = Bitmap.createScaledBitmap(bitmap, 10, 10, true);
Drawable d = new BitmapDrawable(getResources(), bitmap1);
- sp将饺、dp和px
px是指像素,但是不同手機(jī)屏幕像素密度不一樣,不建議使用
當(dāng)手機(jī)字體設(shè)置為正常的時(shí)候予弧,sp等于dp刮吧。sp會(huì)隨著手機(jī)系統(tǒng)字體設(shè)置而改變
對(duì)應(yīng)轉(zhuǎn)換關(guān)系如下:
public static int dpFromPx(final Context context, final float px) {
return (int)(px / context.getResources().getDisplayMetrics().density + 0.5f);
}
public static int pxFromDp(final Context context, final int dp) {
return (int)(dp * context.getResources().getDisplayMetrics().density + 0.5f);
}
public static int spFromPx(final Context context, final float px) {
return (int)(px / context.getResources().getDisplayMetrics().scaledDensity + 0.5f);
}
public static int pxFromSp(final Context context, final int sp) {
return (int)(sp * context.getResources().getDisplayMetrics().scaledDensity + 0.5f);
}
activity會(huì)在其onDestroy方法中將對(duì)其包含的任何視圖的引用設(shè)置為null
ViewStub、include掖蛤、merge
有bar.xml和activity.xml, include用于activity.xml中杀捻,merge用于bar.xml中
With merge:
LinearLayout (root) | TextView
With include:
LinearLayout (root) | LinearLayout | TextView
ViewStub
ViewStub 是一個(gè)不可見的,大小為0的視圖蚓庭,可以在運(yùn)行過程中延時(shí)加載布局資源致讥。當(dāng)ViewStub被設(shè)置成可見,或者它的inflate() 方法被調(diào)用的時(shí)候器赞,布局資源才會(huì)被填充垢袱,然后ViewStub本身就會(huì)被填充起來的布局資源替換掉。也就是說 ViewStub 被設(shè)置成可見或者它的inflate() 方法被調(diào)用之后港柜,在視圖樹中就不存在了请契。被填充的布局在替換ViewStub的時(shí)候會(huì)使用ViewStub的布局參數(shù)(LayoutParameters),比如 width 潘懊,height等姚糊。此外,你也可以通過ViewStub的inflateId 屬性定義或者重寫 被填充布局資源的id授舟。
http://www.reibang.com/p/175096cd89ac