[Java] Android屏幕旋转和Configuration的使用演示 →→→→→进入此内容的聊天室

来自 , 2020-11-15, 写在 Java, 查看 137 次.
URL http://www.code666.cn/view/d7b76edf
  1.  
  2.  
  3. package cn.testconfigurationchange;  
  4. import android.os.Bundle;  
  5. import android.view.View;  
  6. import android.view.View.OnClickListener;  
  7. import android.widget.Button;  
  8. import android.app.Activity;  
  9. import android.content.res.Configuration;  
  10. /**
  11.  * Demo描述:
  12.  * 测试Configuration和屏幕旋转
  13.  *  
  14.  * 测试步骤:
  15.  * 1 点击Button利用Configuration查看手机上的配置信息
  16.  * 2 在manifest为Activity配置 android:configChanges="orientation"
  17.  *   由于设备和系统版本的差异,少数情况下该设置无效,建议设置为:
  18.  *   android:configChanges="keyboardHidden|orientation|screenSize"
  19.  *   表示当前Activity可以对屏幕是否旋转进行监听(当然也可对其他系统信息进行监听)
  20.  *   配置后屏幕旋转时会调用onConfigurationChanged()方法.
  21.  *   若不配置,那么每次屏幕旋转的时候都会调用Activity的onCreate()方法
  22.  *   而不会调用onConfigurationChanged()
  23.  * 3 取消在2中的设置.此时每次旋转屏幕都会调用onCreate(),并在屏幕旋转前
  24.  *   调用onSaveInstanceState()保存现场状态,在选中后调用、
  25.  *   onRestoreInstanceState()恢复现场.
  26.  *   所以此时调用顺序为:
  27.  *   onSaveInstanceState->onCreate()->onRestoreInstanceState()
  28.  *   除此以外:当系统内存紧张时可暂时杀死该Activity,内存允许时重启
  29.  *   该Activity.在这样情况下也是该调用顺序,原理亦类似.
  30.  *  
  31.  * 备注说明:
  32.  * 该Demo的测试为1和2.若要测试3去掉manifest为Activity配置的
  33.  * android:configChanges="orientation" 即可
  34.  *  
  35.  */  
  36. public class MainActivity extends Activity {  
  37.     private Button mButton;  
  38.     @Override  
  39.     protected void onCreate(Bundle savedInstanceState) {  
  40.         super.onCreate(savedInstanceState);  
  41.         setContentView(R.layout.main);  
  42.         System.out.println("---> onCreate()");  
  43.         init();  
  44.     }  
  45.      
  46.     private void init(){  
  47.         mButton=(Button) findViewById(R.id.button);  
  48.         mButton.setOnClickListener(new ClickListenerImpl());  
  49.     }  
  50.      
  51.     private class ClickListenerImpl implements OnClickListener{  
  52.         @Override  
  53.         public void onClick(View v) {  
  54.            getConfigurationInfo();            
  55.         }  
  56.          
  57.     }  
  58.      
  59.     private void getConfigurationInfo(){  
  60.         Configuration configuration=getResources().getConfiguration();  
  61.         //获取屏幕方向  
  62.         int l=configuration.ORIENTATION_LANDSCAPE;  
  63.         int p=configuration.ORIENTATION_PORTRAIT;  
  64.         if (configuration.orientation==l) {  
  65.             System.out.println("现在是横屏");  
  66.         }  
  67.         if (configuration.orientation==p) {  
  68.             System.out.println("现在是竖屏");  
  69.         }  
  70.          
  71.         //获取国家码和网络码  
  72.         int countryNum=configuration.mcc;  
  73.         int netNum=configuration.mnc;  
  74.         System.out.println("国家码="+countryNum+",网络码="+netNum);  
  75.     }  
  76.      
  77.     @Override  
  78.     public void onConfigurationChanged(Configuration newConfig) {  
  79.         super.onConfigurationChanged(newConfig);  
  80.         System.out.println("---> onConfigurationChanged()");  
  81.     }  
  82.      
  83.     @Override  
  84.     protected void onSaveInstanceState(Bundle outState) {  
  85.         super.onSaveInstanceState(outState);  
  86.         outState.putString("name", "zxx");  
  87.         outState.putInt("id", 9527);  
  88.         System.out.println("---> onSaveInstanceState()");  
  89.     }  
  90.      
  91.     @Override  
  92.     protected void onRestoreInstanceState(Bundle savedInstanceState) {  
  93.         super.onRestoreInstanceState(savedInstanceState);  
  94.         String name=savedInstanceState.getString("name");  
  95.         int id=savedInstanceState.getInt("id");  
  96.         System.out.println("---> onRestoreInstanceState()");  
  97.         System.out.println("名字="+name+",编号="+id);  
  98.      
  99.     }  
  100.  
  101. }  
  102.  
  103.  
  104. //java/7813

回复 "Android屏幕旋转和Configuration的使用演示"

这儿你可以回复上面这条便签

captcha