TextView顯示下劃線的兩種方法
1奸鬓、Android TextView中顯示下劃線的兩種方法
1.在資源文件里的寫法
<string name="key"><u>content</u></string>
2.在代碼中的寫法
TextView textView = (TextView)findViewById(R.id.testView);
textView.setText(Html.fromHtml("<u>"+"content"+"</u>"));
理解抽象焙畔,封裝變化
//Activity 間使用 Intent 傳遞數(shù)據(jù)的兩種寫法 下面均是偽代碼形式,請忽略一些細(xì)節(jié)
//寫法一
//SrcActivity 傳遞數(shù)據(jù)給 DestActivity
Intent intent = new Intent(this,DestActivity.class);
intent.putExtra("param", "clock");
SrcActivity.startActivity(intent);
//DestActivity 獲取 SrcActivity 傳遞過來的數(shù)據(jù)
String param = getIntent.getStringExtra("param");
//寫法二
//SrcActivity 傳遞數(shù)據(jù)給 DestActivity
Intent intent = new Intent(this,DestActivity.class);
intent.putExtra(DestActivity.EXTRA_PARAM, "clock");
SrcActivity.startActivity(intent);
//DestActivity 獲取 SrcActivity 傳遞過來的數(shù)據(jù)
public final static String EXTRA_PARAM = "param";
String param = getIntent.getStringExtra(EXTRA_PARAM);
寫法一全蝶,存在的問題是闹蒜,如果 SrcActivity 和 DestActivity 哪個(gè)把 "param" 打錯(cuò)成 "para" 或者 "paran" ,傳遞的數(shù)據(jù)都無法成功接收到抑淫。而寫法二則不會(huì)出現(xiàn)此類問題,因?yàn)閮蓚€(gè) Activity 之間傳遞數(shù)據(jù)只需要知道 EXTRA_PARAM 變量即可姥闪,至于 EXTRA_PARAM 變量到底是 "param" 始苇、 "para" 、"paran" 這一點(diǎn)并不需要關(guān)心筐喳,這就是一種對可能發(fā)生變化的地方進(jìn)行抽象封裝的體現(xiàn)催式,它所帶來的好處就是降低手抖出錯(cuò)的概率,同時(shí)方便我們進(jìn)行修改避归。
assert與raw的區(qū)別
res/raw和asserts的相同點(diǎn):
1.兩者目錄下的文件在打包后會(huì)原封不動(dòng)的保存在apk包中荣月,不會(huì)被編譯成二進(jìn)制文件
res/raw和assets的不同點(diǎn):
1.res/raw中的文件會(huì)被映射到R.Java文件中,訪問的時(shí)候直接使用資源ID梳毙,即
R.id.filename,.
assets文件夾下的文件不會(huì)被映射到到R.java文件中哺窄,訪問的時(shí)候需要AssetManager類
2.res/raw不可以有目錄,而assets則可以有目錄結(jié)構(gòu)账锹,也就是assets目錄下可以再建立文件夾
讀取文件資源:
1.讀取res/raw下的文件資源萌业,通過以下方式獲取輸入流來進(jìn)行讀寫操作
InputStream is =getResources().openRawResource(R.id.filename);
2.讀取assets下的文件資源,通過以下方式獲取輸入流來進(jìn)行寫操作·
AssetManager am = null;
am = getAssets();
InputStream is = am.open("filename");
Theme與Style的區(qū)別
1.Theme(是針對窗體級別的奸柬,可以改變窗體樣式)
A.應(yīng)用到Application
<application android:theme="@style/CustomTheme">
** B.應(yīng)用到Activity**
<activity android:theme="@android:style/Theme.Dialog">
2.Style(是針對窗體元素級別的生年,改變指定控件或者Layout的樣式)
如果你要在java代碼中加載主題的話,只要用setTheme(R.style.CustomTheme)就可以了廓奕,不過記得一定要在初始化任何view之前抱婉,比如一定要放在我們常用的setContentView()之前档叔。通常,我們不建議這么做蒸绩。
ImageView中的src與background
src :為ImageView 原圖內(nèi)容衙四,存放原圖大小,不會(huì)被拉伸侵贵;
background:為Imageview的背景届搁,會(huì)根據(jù)ImageView給定的長寬進(jìn)行拉伸;
在ImageView中窍育,可以同時(shí)設(shè)置src和background屬性(為了減少繪制卡睦,可以根據(jù)使用場景來設(shè)置相應(yīng)屬性); 由于src中存放的是原圖大小漱抓,如果需要對其縮放表锻,就需要使用android:scaleTyle這個(gè)屬性(scaleType 只對src屬性有效),另外還可以對background設(shè)置透明度乞娄。
正確設(shè)置Imageview的透明度
ImageView 設(shè)置透明度主要有以下三種方法:
1瞬逊、setAlpha(@FloatRange(from=0.0, to=1.0) float alpha) (View提供)
2、setAlpha(int alpha) (已經(jīng)標(biāo)記為@Deprecated)
3仪或、setImageAlpha(int alpha) (API>=16)
合理使用src (前景)和background(背景)就可以實(shí)現(xiàn)
Gone與INVISIBLE的區(qū)別
當(dāng)控件visibility屬性為INVISIBLE時(shí)确镊,界面保留了view控件所占有的空間;而控件屬性為GONE時(shí)范删,界面則不保留view控件所占有的空間蕾域。
異步、同步到旦、并行旨巷、串行的區(qū)別
異步:發(fā)送方發(fā)出數(shù)據(jù)后,不用等接收方發(fā)回響應(yīng)添忘,接著發(fā)送下個(gè)數(shù)據(jù)包的通訊方式采呐。【比如搁骑,主main函數(shù)的代碼從上往下執(zhí)行斧吐,new一個(gè)Thread并在子線程中途執(zhí)行了sleep 10秒鐘,而主main函數(shù)后面的代碼不需要等子線程sleep完10秒再執(zhí)行靶病,而是直接繼續(xù)執(zhí)行下面的代碼会通。】
同步:發(fā)送方發(fā)出數(shù)據(jù)后娄周,需要等接收方發(fā)回響應(yīng)以后才發(fā)下一個(gè)數(shù)據(jù)包的通訊方式涕侈。【比如煤辨,主main函數(shù)的代碼從上往下執(zhí)行裳涛,如果中途執(zhí)行了sleep 10秒鐘木张,則后面的代碼都要等10秒后才會(huì)執(zhí)行《巳】
并行:也稱為并發(fā)舷礼。從宏觀上來理解,就是在同一時(shí)間內(nèi)同時(shí)執(zhí)行多個(gè)線程任務(wù)郊闯∑尴祝【比如,同時(shí)開啟10張圖片下載团赁,宏觀上他們是10張圖同時(shí)下載的育拨。】
串行:可以理解為欢摄,只有當(dāng)一個(gè)線程執(zhí)行完畢之后熬丧,才會(huì)執(zhí)行下個(gè)線程』衬樱【比如析蝴,10張圖片下載線程串行執(zhí)行,只能是第一張下載完后绿淋,才會(huì)開始執(zhí)行下一張圖片下載闷畸。】
Android Version與Android API Version
Android version | API version |
---|---|
3.2 | API 13 |
4.1 | API 16 |
4.2 | API 17 |
4.3 | API 18 |
4.4 | API 19 |
5.0 | API 21 |
5.1 | API 22 |
6.0 | API 23 |
7.0 | API 24 |
7.1.1 | API 25 |
在onCreate中獲得View的寬度和高度
在onCreate里調(diào)用getWidth()和getHeight()會(huì)返回0吞滞,可以通過View的post方法獲取寬度和高度腾啥。
發(fā)布時(shí)移除日志語句
在混淆文件中加入以下語句進(jìn)混淆即可移除
-assumenosideeffects class android.util.Log {
public static *** d(...);
}
建議使用 compound drawables ;
TextView
comes with 4 compound drawables, one for each of left, top, right and bottom.
In your case, you do not need the LinearLayout
and ImageView
at all. Just add android:drawableLeft="@drawable/up_count_big"
to your TextView
.```See [TextView#setCompoundDrawablesWithIntrinsicBounds](http://developer.android.com/reference/android/widget/TextView.html#setCompoundDrawablesWithIntrinsicBounds(int,%20int,%20int,%20int)) for more info.