Android學(xué)習(xí)之橫豎屏切換與Activity生命周期的關(guān)系
這篇文章有著很詳細(xì)的報(bào)告….
?走近科學(xué)
對于最后一點(diǎn)表達(dá)一下自己的看法…
關(guān)于橫屏切換豎屏調(diào)用兩次,我特地的看了一下全鍵盤的手機(jī),在觀察中發(fā)現(xiàn)
1,當(dāng)推出鍵盤的時候,會觸發(fā)硬件的改變,使手機(jī)豎屏變成了橫屏
2,當(dāng)推進(jìn)鍵盤的時候,合上手機(jī)的一刻,觸發(fā)的是同一樣的固件,由于,固件是無法辨別那個是推進(jìn),和推出,發(fā)出的是一樣的信號,然后系統(tǒng)就會認(rèn)為這是一個橫屏改變,等到合上手機(jī)的時候系統(tǒng)再接受到一個信號,然后切換成豎屏.這樣系統(tǒng),認(rèn)為橫屏切換豎屏改變了兩次,這樣就導(dǎo)致調(diào)用了兩次onConfigurationChanged();
?
為了證明這點(diǎn)我寫了以下代碼測試:
1,設(shè)置一個用來切換橫豎屏的button
2,
private Button ok; private boolean land = false; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.appwidget_configure); ok = (Button) findViewById(R.id.save_button); ok.setOnClickListener(new Buttonlistener()); } class Buttonlistener implements OnClickListener{ public void onClick(View v) { // TODO Auto-generated method stub Log.d("app","ok"); if(!land){ //切換成橫屏 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); land = true; }else{ //切換成豎屏 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); land = false; } } } @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); // Checks the orientation of the screen if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) { Log.d("app", "land"); Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show(); //切換到橫屏的時候我們需要重新創(chuàng)建button ok = (Button) findViewById(R.id.save_button); ok.setOnClickListener(new Buttonlistener()); } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){ Log.d("app", "portalit"); Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show(); } }3,實(shí)驗(yàn):
可以看出單純的橫豎屏切換,系統(tǒng)是只認(rèn)一次的,
無論是橫屏切換豎屏,還是豎屏切換橫屏都只是調(diào)用了一次onConfigurationChanged();
?
這個方法只是為了證明我的推測.
使用這個方法以后將會導(dǎo)致全鍵盤手機(jī)推入推出來無法切換橫豎屏.
PS:以前的想法白癡了.....
實(shí)際上,模擬器的翻轉(zhuǎn)是以一個逆時針的方向旋轉(zhuǎn)...你按兩次 ctrl + f11實(shí)際上是翻轉(zhuǎn)了三次...
android 橫豎屏切換令人費(fèi)解的地方(橫屏切換豎屏調(diào)用兩次onConfigurationChanged)及其個人看法
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
