前言
在上節(jié)吠昭,我們講了一個監(jiān)聽軟鍵盤彈出和隱藏的布局—KeyboardLayout迂卢。感興趣的可以參考我的另一篇文章:
[監(jiān)聽軟鍵盤彈起和隱藏的布局—KeyboardLayout]
但是個人感覺使用還是有些繁瑣竞惋。對布局的使用限制比較多:要么根布局使用KeyboardLayout,當(dāng)根布局不是KeyboardLayout的時候,你還得將你的布局外面套一層KeyboardLayout布局虫溜,這樣又導(dǎo)致布局層級較多游桩。所以牲迫,今天我又將此代碼做了一個提取,封裝成了一個工具類—SoftKeyBoardHelper借卧。使用簡單盹憎,對布局類型無限制。下面就來講講它的使用吧铐刘。
今天涉及內(nèi)容:
- SoftKeyBoardHelper的使用
- SoftKeyBoardHelper在Activity中使用代碼
- 效果圖和項目結(jié)構(gòu)圖
- SoftKeyBoardHelper源碼
先來波效果圖
一.SoftKeyBoardHelper的使用
SoftKeyBoardHelper監(jiān)聽軟鍵盤的 顯示/隱藏 方法如下:
/**監(jiān)聽軟鍵盤的 顯示/隱藏 **/
public static void setOnListener(Activity activity, OnSoftKeyBoardChangeListener onSoftKeyBoardChangeListener);
在manifast.xml中對應(yīng)的activity(此處以TestActivity為例)注冊時陪每,添加如下配置:
<activity android:name=".TestActivity"
android:configChanges="keyboardHidden|orientation|screenSize|touchscreen"
android:screenOrientation="portrait"/>
在activity中監(jiān)聽軟鍵盤的顯示和隱藏,你可以類似下面這樣:
//監(jiān)聽軟鍵盤的顯示和隱藏
SoftKeyBoardHelper.setOnListener(TestActivity.this, new SoftKeyBoardHelper.OnSoftKeyBoardChangeListener() {
@Override
public void keyBoardShow(int height) {
//軟鍵盤顯示時處理你的邏輯 (height為軟鍵盤高度)
//......
}
@Override
public void keyBoardHide(int height) {
//軟鍵盤隱藏時處理你的邏輯 (height為軟鍵盤高度)
//......
}
});
二.SoftKeyBoardHelper在Activity中使用代碼
下面貼出 SoftKeyBoardHelper在Activity中使用代碼:
/**
* Title:
* description:
* autor:pei
* created on 2019/11/8
*/
public class TestActivity extends AppCompatActivity {
private TextView mTv;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
mTv=findViewById(R.id.tv);
initData();
setListener();
}
private void initData(){
showTextMessage(false);
}
private void showTextMessage(boolean isShow){
mTv.setText(isShow?"軟鍵盤彈出":"軟鍵盤隱藏");
}
private void setListener() {
//監(jiān)聽軟鍵盤的顯示和隱藏
SoftKeyBoardHelper.setOnListener(TestActivity.this, new SoftKeyBoardHelper.OnSoftKeyBoardChangeListener() {
@Override
public void keyBoardShow(int height) {
LogUtil.i("======軟鍵盤彈出=======鍵盤高度=" + height);
ToastUtil.shortShow("======軟鍵盤彈出=======鍵盤高度=" + height);
showTextMessage(true);
}
@Override
public void keyBoardHide(int height) {
LogUtil.i("======軟鍵盤收起=======鍵盤高度=" + height);
ToastUtil.shortShow("======軟鍵盤收起=======鍵盤高度=" + height);
showTextMessage(false);
}
});
}
}
TestActivity 對應(yīng)布局 activity_test.xml代碼如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ffffff"
tools:context=".MainActivity"
android:orientation="vertical">
<TextView
android:id="@+id/tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="120dp"
android:gravity="center"
android:text="我是TestActivity"
android:textColor="@color/black"
android:textSize="14sp"/>
<EditText
android:layout_width="120dp"
android:layout_height="40dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="20dp"
android:textColorHint="#aaaaaa"
android:textColor="#000000"
android:textSize="14sp"/>
</LinearLayout>
三.效果圖和項目結(jié)構(gòu)圖
效果圖
項目結(jié)構(gòu)圖
四.SoftKeyBoardHelper源碼
SoftKeyBoardHelper源碼如下: