今天無意間在 GitHub 上碰到了一個開源項目,就是 ios 風格的一個開關按鈕,提供動畫以及顏色自定義效果,分享給大家,希望可以幫到有此類需求的同學!另外今天在這里把我總結到一塊兒的 Android 彈框提示微技巧和狀態欄有關設置也貼出來。
如果有用就點個贊吧,以示鼓勵。
這是項目總體效果圖
注意,使用的時候看 GitHub 項目里的 Sample 塊中的例子,避免大家搞錯。
大家可以看到他提供了動畫以及多種主題風格,很贊!
用法很簡單,只需要在 build.gradle 文件中添加以下依賴
這是我的 build.gradle 結構,先在項目根目錄下的 build.gradle 添加:
repositories {
mavenCentral()
jcenter()
}
app 下的 build.gradle 中添加以下依賴:
compile 'com.github.zcweng:switch-button:0.0.3@aar'
關于布局文件和代碼設置請自行在 GitHun 上查看,我就不羅嗦了,上面描述的很清楚!
Android 彈框提示微技巧
先上效果圖:
其實說到微技巧,如圖有一個「加強版 Toast」,我也是專門對 Toast 做了以下處理:
- 原生 Toast 點擊幾下則會彈出幾次,沒有考慮到用戶誤操作。
- 我這里做了處理,在 Toast 彈出未隱藏時點擊幾下都只做一次觸發操作,如圖中效果。
那接下來依次按順序將圖中效果的實現方式貼出來:
一 、AlertDialog
btn_alertDialog.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("提示")
.setMessage("確定升級到android7.0嗎?")
.setIcon(R.mipmap.budd)
.setPositiveButton("確定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "中途不要有任何阻止操作", Toast.LENGTH_SHORT).show();
}
})
.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
}).create().show();
}
});
二 、ProgressDialog
btn_progress_dialog.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.btn_progress:
ProgressDialog progressDialog = new ProgressDialog(MainActivity.this);
progressDialog.setTitle("頭像上傳");
progressDialog.setMessage("請稍后...");
progressDialog.setIcon(R.mipmap.msg);
progressDialog.setCancelable(true);
progressDialog.show();
break;
default:
break;
}
}
});
三 、加強版 Toast
此處原生的 Toast 就不必貼了,直接將加強版的貼出來。
public class Util {
private static Toast toast;
public static void showToast(Context context,String content){
if (toast == null){
toast = Toast.makeText(context,content,Toast.LENGTH_SHORT);
}else {
toast.setText(content);
}
toast.show();
}
}
大家可以看到我獨立了一個類用來處理Toast ,在 Toast 為空的時候,也就是觸發提醒沒在發生的時候,給他傳入提示信息 content 。否則就是不為空,也就是觸發提醒正在發生的時候,直接復用同一個 content 信息!
那么在使用的時候這樣寫就可以了:
Util.showToast(getApplicationContext(),"你點擊了!");
四 、Snackbar 底部彈框
btn_snackBar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(view,"系統程序建議不要刪除?",Snackbar.LENGTH_SHORT)
.setAction("刪除", new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this, "已刪除", Toast.LENGTH_SHORT).show();
}
})
.show();
}
});
五 、ProgressBar 圓圈加載進度條
這里我做了處理,點擊觸發顯示和隱藏
btn_progress_one.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.progress_bar_one:
if(progressBar1.getVisibility() == View.GONE){
progressBar1.setVisibility(View.VISIBLE);
}else{
progressBar1.setVisibility(View.GONE);
}
break;
default:
break;
}
}
});
六 、ProgressBar(水平進度條)點擊事件
btn_progress_two.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.progress_bar_two:
int progress = progressBar2.getProgress();
progress = progress + 10;
progressBar2.setProgress(progress);
break;
default:
break;
}
}
});
代碼同樣很簡單,只是加了點擊一次進度條延長10!
Android 狀態欄設置
一 、沉浸式模式
如下是同時隱藏狀態欄和actionBar,實現真正的「沉浸式模式」,適用于 APP 啟動的歡迎頁或者全屏播放視頻等等
寫法,將這段代碼復制到你 Activity 的 onCreate() 方法中即可:
/**
* 隱藏狀態欄
* @param hasFocus
*/
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if (hasFocus && Build.VERSION.SDK_INT >= 19) {
View decorView = getWindow().getDecorView();
decorView.setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
}
}
關于解釋我就不多說了,此處的做法參考自郭霖老師的博客,想進一步了解請參考 博客文章地址
二 、實現 ios 微信頭部狀態欄效果
例如你想實現下面這樣的狀態欄顯示:
那就需要將狀態欄和你的 actionBar 或者 toolBar 重疊在一起,
以下的用法同是,將方法體放在 onCreate() 中即可!
/**
* 隱藏狀態欄
*/
if (Build.VERSION.SDK_INT >= 21) {
View decorView = getWindow().getDecorView();
int option = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE;
decorView.setSystemUiVisibility(option);
getWindow().setStatusBarColor(Color.TRANSPARENT);
}

以上就是這次簡單的分享和總結,也沒什么干貨而言,算給自己的小總結吧,希望對大家有用。