Android 手機(jī)軟鍵盤的彈起和關(guān)閉的監(jiān)聽

? ? ? ?在很多Android App 開發(fā)的過(guò)程中访敌,需要對(duì)Activity 中 軟鍵盤的彈起和關(guān)閉進(jìn)項(xiàng)監(jiān)聽,但是Andoid中并沒有提供相對(duì)應(yīng)的api進(jìn)行監(jiān)聽轰枝, 我有一個(gè)簡(jiǎn)單的方法捅彻。

首先需要知道一些基礎(chǔ)知識(shí)

在manifest文件中可以設(shè)置Activity的android:windowSoftInputMode屬性累魔,這個(gè)屬性值常見的設(shè)置如下:android:windowSoftInputMode="stateAlwaysHidden|adjustPan"

那么這里值的含義列表如下:

1凛剥、stateUnspecified:軟鍵盤的狀態(tài)并沒有指定,系統(tǒng)將選擇一個(gè)合適的狀態(tài)或依賴于主題的設(shè)置

2蓝撇、stateUnchanged:當(dāng)這個(gè)activity出現(xiàn)時(shí)诚撵,軟鍵盤將一直保持在上一個(gè)activity里的狀態(tài)缭裆,無(wú)論是隱藏還是顯示

3、stateHidden:用戶選擇activity時(shí)砾脑,軟鍵盤總是被隱藏

4幼驶、stateAlwaysHidden:當(dāng)該Activity主窗口獲取焦點(diǎn)時(shí),軟鍵盤也總是被隱藏的

5韧衣、stateVisible:軟鍵盤通常是可見的

6盅藻、stateAlwaysVisible:用戶選擇activity時(shí),軟鍵盤總是顯示的狀態(tài)

7畅铭、adjustUnspecified:默認(rèn)設(shè)置氏淑,通常由系統(tǒng)自行決定是隱藏還是顯示

8、adjustResize:該Activity總是調(diào)整屏幕的大小以便留出軟鍵盤的空間

9硕噩、adjustPan:當(dāng)前窗口的內(nèi)容將自動(dòng)移動(dòng)以便當(dāng)前焦點(diǎn)從不被鍵盤覆蓋和用戶能總是看到輸入內(nèi)容的部分


案例:

1.我們需要將監(jiān)聽所在的Activity在Manifest文件中的設(shè)置為如下形式:

<activity?

android:name="com.zy.project.MainActivity"

android:label="@string/app_name"

android:windowSoftInputMode="stateAlwaysHidden|adjustResize" >

<intent-filter>

? ? ? ? ?<action android:name="android.intent.action.MAIN/>

? ? ? ? <category android:name="android.intent.category.LAUNCHER/>

</intent-filter>

</activity>

當(dāng)有軟鍵盤彈起時(shí)假残,Activity的布局大小會(huì)被滾動(dòng)上去,但是你仍然可以通過(guò)滑動(dòng)瀏覽所有。

2 需要在外層布局文件設(shè)置一個(gè)id辉懒,并在activity 中設(shè)置監(jiān)聽

import android.app.Activity;

import android.os.Bundle;

import android.view.View;

import android.view.View.OnLayoutChangeListener;

import android.widget.Toast;

public class MainActivity extends Activity implements OnLayoutChangeListener{

//Activity最外層的Layout視圖

private View rootView;

//屏幕高度

private int screenHeight = 0;

//軟件盤彈起后所占高度閥值 一般是占用屏幕的1/3

private int keyHeight = 0;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

rootView = findViewById(R.id.root_layout);

//獲取屏幕高度

screenHeight = this.getWindowManager().getDefaultDisplay().getHeight();

//閥值設(shè)置為屏幕高度的1/3

keyHeight = screenHeight/3;

}

@Override

protected void onResume() {

super.onResume();

//添加layout大小發(fā)生改變監(jiān)聽器

rootView.addOnLayoutChangeListener(this);

}

@Override

public void onLayoutChange(View v, int left, int top, int right,int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) {

//old是改變前的左上右下坐標(biāo)點(diǎn)值阳惹,沒有old的是改變后的左上右下坐標(biāo)點(diǎn)值

// System.out.println(oldLeft + " " + oldTop +" " + oldRight + " " + oldBottom);

// System.out.println(left + " " + top +" " + right + " " + bottom);

//現(xiàn)在認(rèn)為只要控件將Activity向上推的高度超過(guò)了1/3屏幕高,就認(rèn)為軟鍵盤彈起

if(oldBottom != 0 && bottom != 0 &&(oldBottom - bottom > keyHeight)){

Toast.makeText(MainActivity.this, "監(jiān)聽到軟鍵盤彈起...", Toast.LENGTH_SHORT).show();

}else if(oldBottom != 0 && bottom != 0 &&(bottom - oldBottom > keyHeight)){

Toast.makeText(MainActivity.this, "監(jiān)聽到軟件盤關(guān)閉...", Toast.LENGTH_SHORT).show();

}

}


本文來(lái)自:http://m.blog.csdn.net/bear_huangzhen/article/details/45896333

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末眶俩,一起剝皮案震驚了整個(gè)濱河市莹汤,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌颠印,老刑警劉巖纲岭,帶你破解...
    沈念sama閱讀 218,858評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異线罕,居然都是意外死亡止潮,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門钞楼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)喇闸,“玉大人,你說(shuō)我怎么就攤上這事窿凤〗鲑耍” “怎么了?”我有些...
    開封第一講書人閱讀 165,282評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵雳殊,是天一觀的道長(zhǎng)橘沥。 經(jīng)常有香客問我,道長(zhǎng)夯秃,這世上最難降的妖魔是什么座咆? 我笑而不...
    開封第一講書人閱讀 58,842評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮仓洼,結(jié)果婚禮上介陶,老公的妹妹穿的比我還像新娘。我一直安慰自己色建,他們只是感情好哺呜,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,857評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著箕戳,像睡著了一般某残。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上陵吸,一...
    開封第一講書人閱讀 51,679評(píng)論 1 305
  • 那天玻墅,我揣著相機(jī)與錄音,去河邊找鬼壮虫。 笑死澳厢,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播剩拢,決...
    沈念sama閱讀 40,406評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼线得,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了裸扶?” 一聲冷哼從身側(cè)響起框都,我...
    開封第一講書人閱讀 39,311評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎呵晨,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體熬尺,經(jīng)...
    沈念sama閱讀 45,767評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡摸屠,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了粱哼。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片季二。...
    茶點(diǎn)故事閱讀 40,090評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖揭措,靈堂內(nèi)的尸體忽然破棺而出胯舷,到底是詐尸還是另有隱情,我是刑警寧澤绊含,帶...
    沈念sama閱讀 35,785評(píng)論 5 346
  • 正文 年R本政府宣布桑嘶,位于F島的核電站,受9級(jí)特大地震影響躬充,放射性物質(zhì)發(fā)生泄漏逃顶。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,420評(píng)論 3 331
  • 文/蒙蒙 一充甚、第九天 我趴在偏房一處隱蔽的房頂上張望以政。 院中可真熱鬧,春花似錦伴找、人聲如沸盈蛮。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)抖誉。三九已至,卻和暖如春穆役,著一層夾襖步出監(jiān)牢的瞬間寸五,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工耿币, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留梳杏,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,298評(píng)論 3 372
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像十性,于是被迫代替她去往敵國(guó)和親叛溢。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,033評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,164評(píng)論 25 707
  • ¥開啟¥ 【iAPP實(shí)現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個(gè)線程劲适,因...
    小菜c閱讀 6,424評(píng)論 0 17
  • 最近項(xiàng)目中遇到一個(gè)需求:新手引導(dǎo)楷掉。跟一般的新手引導(dǎo)沒有什么太大區(qū)別,思路都是搞一個(gè)帶陰影的遮罩層霞势,然后在上邊兒給一...
    山水相逢z閱讀 9,952評(píng)論 10 47
  • 內(nèi)容抽屜菜單ListViewWebViewSwitchButton按鈕點(diǎn)贊按鈕進(jìn)度條TabLayout圖標(biāo)下拉刷新...
    皇小弟閱讀 46,766評(píng)論 22 665
  • 最近這首歌貌似很火烹植。然而我總共聽了兩次, 昨天愕贡,在支教匯報(bào)活動(dòng)上草雕,有一位老師匯報(bào)的主題就是《剛好遇見你》。老師的深...
    往事不再沉淀閱讀 157評(píng)論 0 0