Android的標題欄,狀態列圖示文字顏色及背景動態變化
熱文導讀 | 點選標題閱讀
老程式設計師被裁員,面試半年未果,同行:都四十了還是碼農,怪誰?
作者:瀟瀟鳳兒 (github原始碼地址見文末)
轉自:https://blog.csdn.net/smileiam/article/details/73603840
安卓中沉浸式狀態列的文章已經滿大街了,可是在實現某些效果時,還是得各種搜尋,測試一通後,最後還常常滿足不了要求,即使好不容易在一部手機上滿足了需求,放在另外一手機上,發現效果還各種不適配。今天把自己這幾天學到的關於沉浸式狀態列知識進行總結下。
問題
比如我想實現以下效果:
同一個活動需要動態變換標題欄和狀態列文字字型色值,該如何實現?
一個活動包含多個片段切換時,不同的片段的狀態列背景,狀態列文字顏色和圖示要求不一樣怎麼實現?
設定沉浸式狀態列,各個Android的版本之間差別如何,那麼多國旗,長得都一樣,都有什麼區別?
無圖無真相,帶著這幾個問題,先上兩張我實現的效果圖。
下面是同一個活動切換不同片段時,狀態列文字顏色跟著變化的效果圖:
下圖是同一個活動向上滾動時,標題欄和狀態列文字顏色根據變化的效果:
1.實現透明狀態列常規方法
protected boolean useThemestatusBarColor = false;//是否使用特殊的標題欄背景顏色,android5.0以上可以設定狀態列背景色,如果不使用則使用透明色值
protected boolean useStatusBarColor = true;//是否使用狀態列文字和圖示為暗色,如果狀態列採用了白色系,則需要使狀態列和圖示為暗色,android6.0以上可以設定
protected void setStatusBar() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {//5.0及以上
View decorView = getWindow().getDecorView();
int option = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE;
decorView.setSystemUiVisibility(option);
//根據上面設定是否對狀態列單獨設定顏色
if (useThemestatusBarColor) {
getWindow().setStatusBarColor(getResources().getColor(R.color.colorTheme));
} else {
getWindow().setStatusBarColor(Color.TRANSPARENT);
}
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {//4.4到5.0
WindowManager.LayoutParams localLayoutParams = getWindow().getAttributes();
localLayoutParams.flags = (WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS | localLayoutParams.flags);
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && !withoutUseStatusBarColor) {//android6.0以後可以對狀態列文字顏色和圖示進行修改
getWindow().getDecorView().setSystemUiVisibility( View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN|View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
}
}
在活動佈局的根節點處加上機器人:fitsSystemWindows =”真”屬性就可以了,要不佈局會跑到狀態列和導航欄下面,與導航欄和狀態列重疊,這當然不是我們希望的。
活動通過上面的設定,可以實現如下效果:
上面設定狀態列文字顏色和圖示為暗色主要採用了以下兩個標誌:
//設定狀態列文字顏色及圖示為深色
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN是從API 16開始
啟用,實現效果:檢視延伸至狀態列區域,狀態列懸浮於檢視之上View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR是從API 23開始啟用,實現效果:
設定狀態列圖示和狀態列文字顏色為深色,為適應狀態列背景為淺色調,該標誌只有在使用了FLAG_DRWS_SYSTEM_BAR_BACKGROUNDS,並且沒有使用FLAG_TRANSLUCENT_STATUS時才有效,即只有在透明狀態列時才有效。
2.同一個活動包含多個Fragment時,如何實現不同片段的狀態列背景和文字顏色不一樣
如下面的效果圖:
就是設定了狀態列為暗色後,還得設定回來,這其實主要靠下面兩個標誌標識,結全上面的兩個標誌標識就能實現。
//設定狀態列文字顏色及圖示為淺色
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN前面說過了,是為了讓檢視能延伸到狀態列區域,使狀態列懸浮在檢視佈局之上。
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
保持整個檢視穩定,常和控制System UI懸浮,隱藏的Flags共用,使檢視不會因為系統UI的變化而重新佈局。
將上面的程式碼放在不同片段切換處即可實現上面的效果了:
private void switchTo(int position) {
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
switch (position) {
case 0://首頁
hideShowFragment(transaction, fourFragment, thirdFragment, secondFragment, homeFragment);//展示第一個fragment
getWindow().getDecorView().setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
getWindow().getDecorView().findViewById(android.R.id.content).setPadding(0, 0, 0, CommonUtils.navigationHeight);
break;
case 1: //活動
hideShowFragment(transaction, homeFragment, thirdFragment, fourFragment, secondFragment);//展示第二個fragment
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
//實現狀態列圖示和文字顏色為暗色
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
}
getWindow().getDecorView().findViewById(android.R.id.content).setPadding(0, 0, 0, CommonUtils.navigationHeight);
break;
case 2: //所有圖片
hideShowFragment(transaction, homeFragment, fourFragment, secondFragment, thirdFragment);
//展示第三個fragment
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
//實現狀態列圖示和文字顏色為暗色
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
}
getWindow().getDecorView().findViewById(android.R.id.content).setPadding(0, 0, 0, CommonUtils.navigationHeight);
break;
case 3://我的
hideShowFragment(transaction, homeFragment, secondFragment, thirdFragment, fourFragment);//展示第四個fragment
//實現狀態列圖示和文字顏色為淺色
getWindow().getDecorView().setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
getWindow().getDecorView().findViewById(android.R.id.content).setPadding(0, 0, 0, CommonUtils.navigationHeight);
break;
default:
break;
}
}
//fragment切換實現
private void hideShowFragment(FragmentTransaction transaction, Fragment fragment1, Fragment fragment2, Fragment fragment3, Fragment fragment4) {
transaction.hide(fragment1);
transaction.hide(fragment2);
transaction.hide(fragment3);
transaction.show(fragment4);
transaction.commitAllowingStateLoss();
}
大家可能會注意到,我這裡切換每個片段時,有下面這樣一行程式碼:
getWindow().getDecorView().findViewById(android.R.id.content).setPadding(0, 0, 0, CommonUtils.navigationHeight);
這行程式碼幹什麼用的,因為我們這裡首頁和我的頁面,需要背景圖片填充到狀態列,故不能使用的Android版本:fitsSystemWindows屬性,故在實現上面效果時帶有底部導航欄手機上就會存在一個大坑,解決辦法見第3章節同時不使用機器人:fitsSystemWindows屬性,怎麼讓佈局不遮擋狀態列文字,解決辦法見第4章節。
3.帶有底部導航欄手機底部導航按鈕會和導航欄重疊
如下圖所示:
全屏時,由於檢視佈局會填充到狀態列和導航欄下方,如果不使用機器人:fitsSystemWindows =”真”屬性,就會使底部導航欄和應用底部按鈕重疊,導視按鈕點選失效,這該怎麼辦?
經過網上搜尋相關資料,其實實現方法和實現透明狀態列效果方法一致。
解決的方法:
先判斷手機是否有物理按鈕判斷是否存在導航欄;
計算底部的導航欄高度;
最後設定檢視邊距。
3.1通過反射判斷手機是否有物理按鈕NavigationBar
//判斷是否存在NavigationBar
public static boolean checkDeviceHasNavigationBar(Context context) {
boolean hasNavigationBar = false;
Resources rs = context.getResources();
int id = rs.getIdentifier("config_showNavigationBar", "bool", "android");
if (id > 0) {
hasNavigationBar = rs.getBoolean(id);
}
try {
Class systemPropertiesClass = Class.forName("android.os.SystemProperties");
Method m = systemPropertiesClass.getMethod("get", String.class);
String navBarOverride = (String) m.invoke(systemPropertiesClass, "qemu.hw.mainkeys");
if ("1".equals(navBarOverride)) {
hasNavigationBar = false;
} else if ("0".equals(navBarOverride)) {
hasNavigationBar = true;
}
} catch (Exception e) {
}
return hasNavigationBar;
}
3.2計算底部的NavigationBar高度
/**
* 獲取底部導航欄高度
* @return
*/
public static int getNavigationBarHeight(Context context) {
Resources resources = context.getResources();
int resourceId = resources.getIdentifier("navigation_bar_height", "dimen", "android");
//獲取NavigationBar的高度
navigationHeight = resources.getDimensionPixelSize(resourceId);
return navigationHeight;
}
3.3設定檢視邊距
getWindow().getDecorView().findViewById(android.R.id.content).setPadding(0, 0, 0, CommonUtils.navigationHeight);
通過上面的設定,會使佈局距離底部導航欄的高度。
最後實現效果如下:
參考文章:android 6.0導航欄NavigationBar影響檢視解決辦法
4.不使用fiySystemWindow屬性,佈局怎麼能不遮擋狀態列文字
跟第三章節類似,在主頁中,需要使佈局中帶文字的佈局向上保證金狀態列的高度。
4.1先在佈局中設定一個佔空LinearLayout
我們先來看看第三個片段的佈局實現
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<!--這個是隱藏的佈局,然後通過動態的設定高度達到效果-->
<LinearLayout
android:id="@+id/ll_bar"
android:layout_width="fill_parent"
android:layout_height="1dp"
android:orientation="vertical"
android:background="@color/white"
android:visibility="gone">
</LinearLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="@dimen/toollbar_height"
android:background="@drawable/topbar_generic">
<TextView
android:id="@+id/title_tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_gravity="center"
android:textColor="@color/text_main_color"
android:text="@string/all_photo"
android:textSize="20sp" />
<TextView
android:id="@+id/titlebar_right_tv"
style="@style/main_content_text_style"
android:layout_alignParentRight="true"
android:layout_margin="@dimen/margin_10dp"
android:gravity="center_vertical"
android:text="@string/confirm"/>
</RelativeLayout>
<FrameLayout
android:id="@+id/fmImageList"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/white" />
</LinearLayout>
</layout>
4.2在程式碼中動態設定佔空佈局高度
/**
* 動態的設定狀態列 實現沉浸式狀態列
*/
private void initState() {
//當系統版本為4.4或者4.4以上時可以使用沉浸式狀態列
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
//透明狀態列
getActivity().getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
//透明導航欄
getActivity().getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
bindingView.llBar.setVisibility(View.VISIBLE);
//獲取到狀態列的高度
int statusHeight = CommonUtils.getStatusBarHeight(getActivity());
//動態的設定隱藏佈局的高度
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) bindingView.llBar.getLayoutParams();
params.height = statusHeight;
bindingView.llBar.setLayoutParams(params);
}
}
/**
* 通過反射的方式獲取狀態列高度
*
* @return
*/
public static int getStatusBarHeight(Context context) {
try {
Class<?> c = Class.forName("com.android.internal.R$dimen");
Object obj = c.newInstance();
Field field = c.getField("status_bar_height");
int x = Integer.parseInt(field.get(obj).toString());
return context.getResources().getDimensionPixelSize(x);
} catch (Exception e) {
e.printStackTrace();
}
return 0;
}
對於上面的第二個和第三個片段的實現,為了讓檢視佈局不遮擋狀態列文字,主要是通過先給介面設定佔位佈局,然後在程式碼中動態設定該佈局為狀態列高度,這其實就是讓狀態列懸浮在這個佔空佈局上面。檢視佈局位於佔空佈局下方,從而達到檢視佈局不遮擋狀態列效果。
上面對於版本的判斷,如果android版本大於4.4,則讓該佈局顯示出來,而版本低於4.4,由於沒有沉浸式狀態列效果,則不需要給介面設定佔空佈局。
而對於第一個首頁和第四個我的片段,則需要佈局的圖片填充到狀態列底下,而標題欄要位於狀態列下方,這其實只需要一種取巧實現,一般手機狀態列高度都是在25dp左右,當然在程式碼中動態獲取狀態列高度,動態設定也可以。我這裡是簡單實現,讓標題欄marginTop狀態列高度即可,對於Android的不同版本,可以如下設定。
對於價值觀中dimens.xml設定狀態列的高度:
<dimen name="status_bar_height">0dp</dimen>
對於價值-V19中dimens.xml設定狀態列的高度:
<dimen name="status_bar_height">25dp</dimen>
5.同一個活動上下滑動動態變換標題欄和狀態列文字字型色值
效果如下:
這種佈局實現主要是依靠CoordinatorLayout + AppBarLayout + CollapsingToolbarLayout +工具欄+ NestedScrollView來實現,之前我也寫過類似的博文來介紹CoordinatorLayout的使用方法感興趣的小夥伴可以參下:Android的沉浸式狀態列,fitsSystemWindows ,欄標題供求摺疊
下面我們說說怎麼在介面滑動時,修改狀態列和標題欄文字顏色。
這個主要通過監聽AppBarLayout滑動的距離,向上滑動,如果大於標題欄的高度,則要動態改變標題欄文字顏色,當標題欄摺疊時,改變狀態列文字顏色及返回銨鈕圖示,同時狀態列文字顏色變成暗色。
向下滑動時,隨著標題欄慢慢消失,需要把狀態列文字顏色變成淺色調。
private void setAppBarListener() {
measureHeight();
bindingView.appbar.addOnOffsetChangedListener((appBarLayout, verticalOffset) -> {
if (verticalOffset == 0) {
if (state != CollapsingToolbarLayoutState.EXPANDED) {
state = CollapsingToolbarLayoutState.EXPANDED;//修改為展開狀態
bindingView.titleTv.setVisibility(View.GONE);
bindingView.toolbar.setNavigationIcon(R.drawable.nav_icon_white_return);
getWindow().getDecorView().setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_VISIBLE);
}
} else if (Math.abs(verticalOffset) >= appBarLayout.getTotalScrollRange()) {
bindingView.titleTv.setVisibility(View.VISIBLE);
bindingView.toolbar.setNavigationIcon(R.drawable.nav_icon_return);
state = CollapsingToolbarLayoutState.COLLAPSED;//修改為摺疊狀態
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
}
} else {
if (Math.abs(verticalOffset) > height) {
bindingView.titleTv.setVisibility(View.VISIBLE);
float scale = 1- height / (float) Math.abs(verticalOffset);
if (state != CollapsingToolbarLayoutState.INTERNEDIATE) {
if (state == CollapsingToolbarLayoutState.COLLAPSED && scale < 0.55) {//由摺疊變為展開
bindingView.toolbar.setNavigationIcon(R.drawable.nav_icon_white_return);
getWindow().getDecorView().setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_VISIBLE);
} else {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
}
}
state = CollapsingToolbarLayoutState.INTERNEDIATE;
}
float alpha = (255 * scale);
bindingView.titleTv.setTextColor(Color.argb((int) alpha, 53,55,58));
bindingView.toolbar.setNavigationIcon(R.drawable.nav_icon_return);
} else {
bindingView.titleTv.setVisibility(View.GONE);
bindingView.toolbar.setNavigationIcon(R.drawable.nav_icon_white_return);
}
}
});
}
//獲取標題欄高度
private void measureHeight() {
ViewTreeObserver vto = bindingView.coordinatorlayout.getViewTreeObserver();
vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
public boolean onPreDraw() {
if (hasMeasured == false) {
height = bindingView.toolbar.getMeasuredHeight();
hasMeasured = true;
}
return true;
}
});
}
總結
根據機器人提供的widnow的標誌,狀態列淺色調和深色調,我們可以實時動態變換一個活動的狀態列顏色,同時結合CoordinatorLayout,我們可以實現更加複雜的效果。
程式碼傳送門:
https : //github.com/xiewenfeng/statusbartextcolorchange
想進阿里嗎?快加入我們的知識星球吧,如下:
如有收穫,歡迎「分享 」
「點贊」「評論 」
媽媽常教導我,讓我養成良好習慣。這樣長大才能成為一個有用的人。良好的習慣是尊敬師長這樣長大才能成為一個有用的人。良好的習慣是尊敬師長,愛護同學,對人有禮貌;是不粗心,做事情不拖拉;還是愛護公物,不浪費糧食。為什麼呢?因為擁有良好習慣,做一個品德高尚的人,懂得尊重別人,才會得到別人的尊重。我要努力地做到這些。我有一些壞習慣,有時候學習很粗心,把一些會做的題做錯。在生活上,也很粗心,有一次早上起床居然穿反了衣服。我吃飯很慢,有的時候還剩飯。我還起床磨蹭,本來應該迅速地穿好衣服,但是,我總是磨磨蹭蹭地,速度很慢。“我打算在這學期裡,改掉這些壞習慣。早上起來,迅速地穿好衣服,不拖拉。學習不粗心,仔細完成每一道題。吃飯的時候,要很快的把飯吃完,不剩飯。我要從一點一滴做起,逐漸養成良好習慣。我相信自己一定能成為一名品學兼優的好學生!我打算在這學期裡,改掉這些壞習慣。早上起來,迅速地穿好衣服,不拖拉。學習不粗心,仔細完成每一道題。吃飯的時候,要很快的把飯吃完,不剩飯。我要從一點一滴做起,逐漸養成良好習慣。我相信自己一定能成為一名品學兼優的好學生!” 在上幼兒園以前,我什麼也不會幹,就連穿衣服也是媽媽給我穿好,就要上幼兒園了,這樣可不行,媽媽鍛鍊我要學會自己穿衣服。 有一天,媽媽把衣服擺在我面前,開始讓我自己穿。一開始。我又哭又叫就是不穿,還把衣服扔的滿地都是,然後坐在地上開始大哭,等了好長時間,媽媽還是不理我,我只好自己乖乖的把衣服穿好, 一出了房間門,媽媽就笑了起來,再看看我的衣服,毛衣和褲子都穿反了,我趕緊回房間又重新穿了一遍,這次穿好了,拿起外套,可是外套的扣子又扣不上了,釦子可調皮了,好像故意和我作對,我把釦子往釦眼——人類邪惡的根源;愛情——幸福和光明的源泉。我一直在這些思想的舞臺上徘徊。突然我發現兩個身影從我面前經過,坐在不遠的草地上。這是一對從農田那邊走過來的青年男女。農田那邊有農民的茅舍。在一陣令人傷心的沉默之後,隨著一聲長嘆,我聽見從一個肺癆病人的嘴裡說出了這樣的話:幸福和光明的源泉。我一直在這些思想的舞臺上徘徊。突然我發現兩個身影從我面前經過,坐在不遠的草地上。這是一對從農田那邊走過來的青年男女。農田那邊有農民的茅舍。在一陣令人傷心的沉默之後,隨著一聲長嘆,我聽見從一個肺癆病人的嘴裡說出了這樣的話幸福和光明的源泉。我一直在這些思想的舞臺上徘徊。突然我發現兩個身影從我面前經過,坐在不遠的草地上。這是一對從農田那邊走過來的青年男女。農田那邊有農民的茅舍。在一陣令人傷心的沉默之後,隨著一聲長嘆,我聽見從一個肺癆病人的嘴裡說出了這樣的話幸福和光明的源泉。我一直在這些思想的舞臺上徘徊。突然我發現兩個身影從我面前經過,坐在不遠的草地上。這是一對從農田那邊走過來的青年男女。農田那邊有農民的茅舍。在一陣令人傷心的沉默之後,隨著一聲長嘆,我聽見從一個肺癆病人的嘴裡說出了這樣的話幸福和光明的源泉。我一直在這些思想的舞臺上徘徊。突然我發現兩個身影從我面前經過,坐在不遠的草地上。這是一對從農田那邊走過來的青年男女。農田那邊有農民的茅舍。在一陣令人傷心的沉默之後,隨著一聲長嘆,我聽見從一個肺癆病人的嘴裡說出了這樣的話幸福和光明的源泉。我一直在這些思想的舞臺上徘徊。突然我發現兩個身影從我面前經過,坐在不遠的草地上。這是一對從農田那邊走過來的青年男女。農田那邊有農民的茅舍。在一陣令人傷心的沉默之後,隨著一聲長嘆,我聽見從一個肺癆病人的嘴裡說出了這樣的話幸福和光明的源泉。我一直在這些思想的舞臺上徘徊。突然我發現兩個身影從我面前經過,坐在不遠的草地上。這是一對從農田那邊走過來的青年男女。農田那邊有農民的茅舍。在一陣令人傷心的沉默之後,隨著一聲長嘆,我聽見從一個肺癆病人的嘴裡說出了這樣的話幸福和光明的源泉。我一直在這些思想的舞臺上徘徊。突然我發現兩個身影從我面前經過,坐在不遠的草地上。這是一對從農田那邊走過來的青年男女。農田那邊有農民的茅舍。在一陣令人傷心的沉默之後,隨著一聲長嘆,我聽見從一個肺癆病人的嘴裡說出了這樣的話幸福和光明的源泉。我一直在這些思想的舞臺上徘徊。突然我發現兩個身影從我面前經過,坐在不遠的草地上。這是一對從農田那邊走過來的青年男女。農田那邊有農民的茅舍。在一陣令人傷心的沉默之後,隨著一聲長嘆,我聽見從一個肺癆病人的嘴裡說出了這樣的話“親愛的!擦乾你的眼淚,至高無上的愛情已經開啟了我們的眼界,使我們成了它的崇拜者。是它,
媽媽常教導我,讓我養成良好習慣。這樣長大才能成為一個有用的人。良好的習慣是尊敬師長這樣長大才能成為一個有用的人。良好的習慣是尊敬師長,愛護同學,對人有禮貌;是不粗心,做事情不拖拉;還是愛護公物,不浪費糧食。為什麼呢?因為擁有良好習慣,做一個品德高尚的人,懂得尊重別人,才會得到別人的尊重。我要努力地做到這些。我有一些壞習慣,有時候學習很粗心,把一些會做的題做錯。在生活上,也很粗心,有一次早上起床居然穿反了衣服。我吃飯很慢,有的時候還剩飯。我還起床磨蹭,本來應該迅速地穿好衣服,但是,我總是磨磨蹭蹭地,速度很慢。“我打算在這學期裡,改掉這些壞習慣。早上起來,迅速地穿好衣服,不拖拉。學習不粗心,仔細完成每一道題。吃飯的時候,要很快的把飯吃完,不剩飯。我要從一點一滴做起,逐漸養成良好習慣。我相信自己一定能成為一名品學兼優的好學生!我打算在這學期裡,改掉這些壞習慣。早上起來,迅速地穿好衣服,不拖拉。學習不粗心,仔細完成每一道題。吃飯的時候,要很快的把飯吃完,不剩飯。我要從一點一滴做起,逐漸養成良好習慣。我相信自己一定能成為一名品學兼優的好學生!” 在上幼兒園以前,我什麼也不會幹,就連穿衣服也是媽媽給我穿好,就要上幼兒園了,這樣可不行,媽媽鍛鍊我要學會自己穿衣服。 有一天,媽媽把衣服擺在我面前,開始讓我自己穿。一開始。我又哭又叫就是不穿,還把衣服扔的滿地都是,然後坐在地上開始大哭,等了好長時間,媽媽還是不理我,我只好自己乖乖的把衣服穿好, 一出了房間門,媽媽就笑了起來,再看看我的衣服,毛衣和褲子都穿反了,我趕緊回房間又重新穿了一遍,這次穿好了,拿起外套,可是外套的扣子又扣不上了,釦子可調皮了,好像故意和我作對,我把釦子往釦眼——人類邪惡的根源;愛情——幸福和光明的源泉。我一直在這些思想的舞臺上徘徊。突然我發現兩個身影從我面前經過,坐在不遠的草地上。這是一對從農田那邊走過來的青年男女。農田那邊有農民的茅舍。在一陣令人傷心的沉默之後,隨著一聲長嘆,我聽見從一個肺癆病人的嘴裡說出了這樣的話:“親愛的!擦乾你的眼淚,至高無上的愛情已經開啟了我們的眼界,使我們成了它的崇拜者。是它,
如你有好的文章想和大家分享歡迎投稿,直接向我投遞文章連結即可
最後,國慶福利來了,我們的知識星球已達到1000人了,之前說過到達1000人時將大大幅漲價到169元,為了反饋大家對我們的關注和厚愛,特此維持現價99元最後一天,今天后(今晚 00:00)後將漲到169元,歡迎大家加入我們的知識星球,更多星球資訊參見:
微信掃描或者點選上方二維碼領取Android\Python\AI\Java等高階進階資源
更多學習資料點選下面的“閱讀原文”獲取
相關文章
- android狀態列一體化(改變狀態列的背景顏色)Android
- Flutter改變狀態列字型、狀態列背景顏色、Appbar背景顏色的方式FlutterAPP
- Android實現修改狀態列背景 字型 圖示顏色Android
- iOS 修改狀態列StatusBar的顏色及文字顏色iOS
- IOS設定狀態列的背景顏色iOS
- 設定文字的選中狀態背景顏色
- 直播軟體搭建,修改狀態列、導航條顏色及文字顏色
- android去掉標題欄和狀態列Android
- Android 沉浸式狀態列 漸變顏色的實現Android
- 靜態文字顏色背景改變示例源程式 (轉)
- CSS改變文字選中狀態下的顏色CSS
- iOS button背景顏色狀態設定iOS
- 智慧變色T恤 顏色隨運動狀態變
- Android系統更改狀態列字型顏色Android
- Android 沉浸式狀態列攻略 讓你的狀態列變色吧Android
- 直播系統搭建,設定透明背景(去掉蒙層)狀態列顏色不改變
- Android螢幕中隱藏標題欄和狀態列Android
- 直播軟體搭建,狀態列顏色跟隨裝置系統變化而變化
- iOS 狀態列的圖示iOS
- CSS3 文字字型顏色動態漸變效果CSSS3
- iOS 導航欄背景顏色完全透明及漸變iOS
- canvas實現動態替換人物的背景顏色Canvas
- 動態更改svg圖片的顏色SVG
- svg 圖示設定背景顏色SVG
- Android 顯示、隱藏狀態列和導航欄Android
- 直播電商平臺開發,動態去除系統自帶標題欄、狀態列
- android狀態列一體化(沉浸式狀態列)Android
- Android的GridView中的選中圖示後圖示的背景顏色AndroidView
- JavaScript 背景顏色隨機變化JavaScript隨機
- 短視訊直播系統,Android狀態列設定顏色字型Android
- 線上直播原始碼,單獨修改狀態列顏色原始碼
- 【iOS開發】強制修改iOS狀態列顏色iOS
- iOS 背景圖層的顏色漸變效果iOS
- 搭建自己的直播平臺,更改狀態列的字型顏色
- css3 ::selection的用法(改變選中文字的背景顏色或者文字顏色)CSSS3
- 線上直播系統原始碼,iOS 根據滑動距離改變狀態列顏色原始碼iOS
- Android開發——Java程式碼動態改變顏色字型的方法AndroidJava
- [快速搞定]android 狀態列一體化 沉浸式狀態列Android