Android小知識10則(上)(2018.8重編版)
目錄
- 前言
- 橫豎屏鎖定
- 不同解析度的圖示
- 將字串寫在資原始檔中
- 為AlertDialog設定點選監聽
- ProgressDialog瞭解一下
- 最後
前言
Android的知識還是比較碎的, 日常積累很重要. 我把平常一些小知識點整合整合, 理成了上下兩篇文章, 每篇五個知識點.
橫豎屏鎖定
有兩種方法可以實現
- 使用配置檔案
在AndroidManifest.xml
的activity
標籤下新增android:screenOrientation="portrait"
即可.預設是android:screenOrientation="unspecified"
, 也就是根據系統當前的橫豎屏狀態切換.- 使用Java程式碼
使用setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
是鎖定橫屏. 使用setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
是鎖定豎屏.
個人推薦寫在配置檔案裡面. 來兩張圖:
不同解析度的圖示
由於Android的解析度很不統一, 小到4寸左右, 大到10寸左右. 螢幕適配是很噁心人的問題. 這裡就簡單說一下如何新增不同解析度的圖示到工程當中.
首先看一下官方的例子, 我們的目標就是讓我們的圖示按照不同解析度, 放在一個同名資料夾中.
右擊mipmap資料夾, 在目錄中開啟, 我的是mac所以顯示finder, win/linux的話好像是檔案瀏覽器之類的名稱吧, 位置是差不多的.
然後就很簡單了, 你只需要把不同解析度的圖示, 由小到大逐一放入到mipmap-hdpi到mipmap-xxxhdpi中即可. 當然了, drawable也是一樣, 從drawable-hdpi到drawable-xxxhdpi.
回到Android Studio就會有想要的效果了, 用的時候只要輸入圖片名稱即可, 系統會自動選擇最合適的圖片顯示. 當然說是這麼說, 其實佈局檔案還得按照解析度來寫不是, 沒準還要區分版本(手動無奈).
將字串寫在資原始檔中
將字串寫在資原始檔中好處是不言而喻的, 便於管理, 便於查詢, 便於維護, 便於全球化等等, 而且上傳github的時候, 它也會死命提示你的(手動滑稽). 那就來看看這個知識點吧.
- 單個字串
單個字串的使用是非常簡單的. 將字串寫在strings.xml中, java直接引用就好. 或者用getResources().getString()方法
<string name="single_str">SingleStr</string>
TextView tvSingleStr = (TextView) findViewById(R.id.tv_single_str);
tvSingleStr.setText(R.string.single_str);
getResources().getString(R.string.app_name);
- 字串陣列
字串陣列的使用稍微麻煩點. 同樣在strings.xml中寫一個字串陣列. 然後在java裡面引用.
<string-array name="str_arr">
<item>a</item>
<item>b</item>
<item>c</item>
<item>d</item>
</string-array>
String[] stringArray = getResources().getStringArray(R.array.str_arr);
TextView tvStrArr = (TextView) findViewById(R.id.tv_str_arr);
tvStrArr.setText(Arrays.toString(stringArray));
- 格式化字串
這個格式化字串在c裡面是家常便飯, 但是到了java可能就沒那麼好使了. 總之, 也還是可以用的. 步驟還是一樣, 先strings.xml, 後java.
<string name="format_str">我買了%1$d個蘋果, 花了%2$.2f元, 抽到了%3$s去夏威夷的票, 用手比了一個%4$c</string>
String formatStr
= String.format(getResources().getString(R.string.format_str), 5, 3.2, "兩張", `v`);
TextView tvFormatStr = (TextView) findViewById(R.id.tv_format_str);
tvFormatStr.setText(formatStr);
為AlertDialog設定點選監聽
- 為列表和單選列表設定監聽
關於AlertDialog的初步使用請參見之前的文章. 然後來看具體新增監聽的程式碼.
- 列表
直接在setItems後面新增監聽函式, 或者新建類實現監聽介面都是可以的, 要說的是, which對應點選的條目, 從0開始. 比如說點選”apple”就是0, 點選”boy”就是1.
builder.setItems(new String[]{"apple", "boy", "cat"}, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Log.i("sorrower", "which: " + which);
}
});
- 單選列表
單選列表大體和列表相同, 值得一提的就是setSingleChoiceItems的第二個引數如果是-1, 就代表都不選, 如果是0, 代表預設選中第一個, 這裡的話就是”apple”.
builder.setSingleChoiceItems(new String[]{"apple", "boy", "cat"}, -1, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Log.i("sorrower", "which: " + which);
}
});
- 為AlertDialog自帶按鈕設定監聽
每個AlertDialog預設有三個按鈕的, 肯定否定和中性. 這裡不使用匿名監聽, 我們新建一個類實現監聽介面.
builder.setPositiveButton("positive", new clickListener());
builder.setNegativeButton("negative", new clickListener());
builder.setNeutralButton("neutral", new clickListener());
class clickListener implements DialogInterface.OnClickListener {
@Override
public void onClick(final DialogInterface dialog, int which) {
Log.i("sorrower", "which: " + which);
}
}
然後得到的結果和猜想的不太一樣, 點選NeutralButton, which的值是-3; 點選NegativeButton, which的值是-2; 點選PositiveButton, which的值是-1. 我們可以使用which值區分使用者點選.
ProgressDialog瞭解一下
進度條彈窗還是很實用的, 今天就帶大家瞭解一下! 先來張效果圖:
final ProgressDialog pd = new ProgressDialog(this);
pd.setIcon(R.mipmap.ic_launcher_round);
pd.setTitle("Dealing...");
pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); // 設定為矩形進度條
pd.setCancelable(false);
pd.setIndeterminate(false); // 設定進度條是否為不明確
pd.setMax(100);
pd.setProgress(0);
pd.show();
new Thread() {
@Override
public void run() {
for (int i = 0; i < 100; i++) {
try {
Thread.sleep(80);
} catch (InterruptedException e) {
e.printStackTrace();
}
final int j = i + 1;
pd.setProgress(j);
}
pd.dismiss();
}
}.start();
如果你改一行
pd.setIndeterminate(true);
, 那麼就不會顯示百分比, 和處理具體數. 直接上圖:
如果你註釋掉
pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
這一行. 那麼就是那種圓形掃描式的進度條, 你見過的. 上圖:
最後
還有下篇的五個知識點哦, 覺得不錯記得點贊或者關注我哦~
相關文章
- 使用程式碼動態增刪佈局(2018.8重編版)
- Android小知識庫Android
- Android小知識-深入淺出Android系統啟動流程(上)Android
- gcc編譯器小知識FAQ(轉)GC編譯
- Android知識重溫之生命週期Android
- 一個util帶你解決動態申請許可權問題(2018.8重編版)
- react知識(二)重寫JSX編譯原理ReactJS編譯原理
- 彙編必知小知識點及常用debug命令
- Android小知識-Java多執行緒的基礎知識瞭解下AndroidJava執行緒
- 【實用知識】招投標知識兩則
- Android小知識-定時任務ScheduledThreadPoolExecutorAndroidthread
- 知識小匯
- iOS小知識iOS
- canvas小知識Canvas
- IPC小知識
- 感冒小知識
- baota小知識
- angular 4版本小知識點----方便自己看Angular
- Android 橫豎屏處理的知識小結Android
- Android小知識-利用OkHttp實現WebSocket通訊AndroidHTTPWeb
- Android技能樹 — 樹基礎知識小結(一)Android
- java 重寫知識點Java
- pcl常用小知識
- java小知識點Java
- Python小知識Python
- js小知識點JS
- Spring小知識Spring
- Flex知識小結Flex
- 小知識點1
- JavaSE小知識(二)Java
- 前端小知識點前端
- mongo 小知識點Go
- javascript小知識點JavaScript
- PHP小知識點PHP
- Oracle知識小記Oracle
- 小知識總結
- SAP GUI小知識GUI
- Oracle知識拾漏兩則Oracle