目錄
- 前言
- 橫豎屏鎖定
- 不同解析度的圖示
- 將字串寫在資原始檔中
- 為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);
這一行. 那麼就是那種圓形掃描式的進度條, 你見過的. 上圖:
最後
還有下篇的五個知識點哦, 覺得不錯記得點贊或者關注我哦~