覺得有意思有用處的就簡單記下
作為備忘錄
1 , 更改頂部狀態(tài)欄和底部導(dǎo)航欄顏色
- Android L及以上版本
- 狀態(tài)欄顏色在style.xml中修改colorPrimaryDark顏色即可
- 導(dǎo)航欄顏色在style.xml中修改navigationBarColor顏色即可
- Android L以下版本
- 參考:http://www.itdecent.cn/p/bae25b5eb867
2 , 一個非常好用的翻譯插件
是我這個英語渣的福利
3 , Android studio自帶的截圖與錄制視頻功能
- 連接手機(jī)后,點開底部Android Monitor,如圖 :

4 , 布局文件中的含透明值顏色的寫法
- android:background="#80000000"
- 前面兩個數(shù)字是透明值【00~99 : 透明~不透明】,后面為顏色代碼
5 , 在service里啟動activity
Intent intent = new Intent(getBaseContext() , Activity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
getApplication().startActivity(intent);
6 , 進(jìn)入activity的時候取消edittext自動獲取焦點
在父布局加這兩句話
android:focusable="true"
android:focusableInTouchMode="true"
7 , 顯示簡單的加載框
ProgressDialog progressDialog = ProgressDialog.show(context, title, message);
8 , 防止點擊edittext的時候被軟鍵盤遮住
在Androidmanifest中添加
android:windowSoftInputMode="stateHidden|adjustPan"
9 , 同一個Textview設(shè)置不同文字顏色
String string = "設(shè)置不同文字顏色";
SpannableString ss = new SpannableString(string);
ss.setSpan(new ForegroundColorSpan(Color.GREEN), 0, 5, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
textview.setText(ss);
10 , Bitmap轉(zhuǎn)為Drawable
Drawable drawable = new BitmapDrawable(bitmap);
11 , 將本地圖片取出并設(shè)置為bitmap格式
Bitmap bitmap = BitmapFactory.decodeFile(PhotoPath);
12 , 保存bitmap格式的文件到本地
try {
FileOutputStream out = new FileOutputStream(outFilePath);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out);
out.flush(); out.close();
} catch (IOException e) {
e.printStackTrace();
}
13 , 使用過bitmap后不再使用時謹(jǐn)記釋放內(nèi)存
if (bitmap != null) {
bitmap.recycle();//釋放bitmap
}
14 , Material風(fēng)格的Dialog的使用
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle(title)
.setMessage(message)
.setView(view)
.setNegativeButton("取消", null)
.setPositiveButton("加入", null)
.create()
.show();
15 , Android5.0全透明狀態(tài)欄效果
//取消標(biāo)題欄
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().requestFeature(Window.FEATURE_NO_TITLE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Window window = getWindow();
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS
| WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.setStatusBarColor(Color.TRANSPARENT);
window.setNavigationBarColor(Color.TRANSPARENT);
}
16 , 不同APP之間的Activity跳轉(zhuǎn)
Intent intent = new Intent();
intent.setClassName(packageName,packageName+activityName);
startActivity(intent);
17 , 帶陰影的背景xml
示例圖:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<solid android:color="#BBB" />
<corners android:radius="5dp" />
</shape>
</item>
<item android:bottom="3px">
<shape android:shape="rectangle">
<solid android:color="#FFE0EEEE" />
<stroke
android:width="0.5dp"
android:color="@color/colorCcc" />
<corners android:radius="5dp" />
<padding
android:bottom="15dp"
android:left="15dp"
android:right="15dp"
android:top="15dp" />
</shape>
</item>
</layer-list>
18 , AlertDialog點擊按鈕后對話框不消失的處理方法
在點擊PositiveButton或NegativeButton按鈕的方法中加入
try {
Field field = dialog.getClass().getSuperclass().getDeclaredField("mShowing");
field.setAccessible(true);
field.set(dialog, false); // false - 不能關(guān)閉 , true - 關(guān)閉
} catch (Exception e) {
e.printStackTrace();
}
19 , 使用代碼為textview設(shè)置drawableLeft
1.在XML中使用
android:drawableLeft="@drawable/icon"
2.代碼中動態(tài)變化
Drawable drawable= getResources().getDrawable(R.drawable.drawable);
/// 這一步必須要做,否則不會顯示.
drawable.setBounds(0, 0, drawable.getMinimumWidth(), drawable.getMinimumHeight());
mTextview.setCompoundDrawables(drawable,null,null,null);
20, 使用代碼為textview設(shè)置下劃線
textView.getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG); //下劃線
textView.getPaint().setAntiAlias(true);//抗鋸齒
21, 對話框AlertDialog中的EditText不能自動打開軟鍵盤
Activity中需要啟動一個AlertDialog,這個對話框使用的是自定義布局,在這個對話框里有個EditText,可能是自定義布局的問題,導(dǎo)致對話框彈出時不能自動打開軟鍵盤并定位焦點到文本框里。
解決方法:延遲一會兒調(diào)出輸入法
public void showKeyboard() {
//調(diào)用系統(tǒng)輸入法
InputMethodManager inputManager = (InputMethodManager) editText
.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.showSoftInput(editText, 0);
}
//在dialog.show()后,
dialog.show();
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
dialog.showKeyboard();
}
}, 300);
22, Android L版本以后, style.xml能做什么

23, 幾行代碼通知系統(tǒng)自動安裝apk
//apk文件的本地路徑
File apkfile = new File(apkFilePath);
//會根據(jù)用戶的數(shù)據(jù)類型打開android系統(tǒng)相應(yīng)的Activity。
Intent intent = new Intent(Intent.ACTION_VIEW);
//設(shè)置intent的數(shù)據(jù)類型是應(yīng)用程序application
intent.setDataAndType(Uri.parse("file://" + apkfile.toString()), "application/vnd.android.package-archive");
//為這個新apk開啟一個新的activity棧
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
//開始安裝
startActivity(intent);
//關(guān)閉舊版本的應(yīng)用程序的進(jìn)程
android.os.Process.killProcess(android.os.Process.myPid());
24, Android5.0改變AlertDialog的樣式
在xml中定義一個主題:
<style name="MyAlertDialogStyle" parent="Theme.AppCompat.Light.Dialog.Alert">
<!-- Used for the buttons -->
<item name="colorAccent">#FFC107</item>
<!-- Used for the title and text -->
<item name="android:textColorPrimary">#FFFFFF</item>
<!-- Used for the background -->
<item name="android:background">#4CAF50</item>
</style>
樣式如下圖所示:

在創(chuàng)建的對話框的時候,這樣創(chuàng)建就可以了。
AlertDialog.Builder builder = new AlertDialog.Builder(this, R.style.MyAlertDialogStyle);
builder.setTitle("AppCompatDialog");
builder.setMessage("Lorem ipsum dolor...");
builder.setPositiveButton("OK", null);
builder.setNegativeButton("Cancel", null);
builder.show();
這樣的方法是每個地方使用的時候,都要在構(gòu)造函數(shù)傳我們的這個Dialog的Theme,我們也可以全局的定義對話框的樣式。
<style name="MyTheme" parent="Base.Theme.AppCompat.Light">
<item name="alertDialogTheme">@style/MyAlertDialogStyle</item>
<item name="colorAccent">@color/accent</item>
</style>
在我們的AndroidManifest.xml文件中聲明application或者activity的時候設(shè)置theme為MyTheme即可,不過需要注意的一點是,我們的Activity需要繼承自AppCompatActivity。
25, 當(dāng)從 Recent Apps 界面劃掉一個程序時
service會觸發(fā)onTaskRemoved()這個方法
假如你當(dāng)前啟動service的方式是bindService , 那么就不會觸發(fā) , 必須要用startService;
當(dāng)然 , 你也可以兩種方式一起開啟;
在做后臺下載的時候遇到了這個問題 , 搜索了很久才解決的 , 而且用的是Google
http://stackoverflow.com/questions/24127923/service-ontaskremoved-not-called-if-started-with-bindservice
嗯 , 做一下筆記
26, 查看默認(rèn)debug的簽名
keytool -v -list -keystore C:\Users\Administrator\.android\debug.keystore
27, TextView文字設(shè)置豎向顯示
1.屬性介紹:
安卓中XML屬性有 android:ems="x"
x表示一行顯示的字符個數(shù)。
2.具體的設(shè)置
第一步:設(shè)置控件寬度為包裹內(nèi)容 android:layout_width="wrap_content"
第二步:設(shè)置每行顯示一個字符 android:ems="1"
28, 獲取當(dāng)前是否有網(wǎng)絡(luò)
添加權(quán)限 :
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
代碼如下 :
ConnectivityManager connectivityManager = (ConnectivityManager)
getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
if (networkInfo != null && networkInfo.isAvailable()) {
//網(wǎng)絡(luò)已打開
} else {
//網(wǎng)絡(luò)已關(guān)閉
}
29, 發(fā)送一個系統(tǒng)廣播通知手機(jī)有圖片更新
保存好圖片之后 , 有時候在本地相冊查看不了 , 其實是要發(fā)送一條廣播去通知手機(jī)有圖片更新 , 代碼如下 :
Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
Uri uri = Uri.fromFile(new File(filePath));
intent.setData(uri);
sendBroadcast(intent);
30, 重啟APP :
Intent intent = getBaseContext().getPackageManager().getLaunchIntentForPackage(getBaseContext().getPackageName());
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);