做Android开发已经一年零五个月了,好多都是会做但不精通,从今天开始我要精通,所以一点一点回顾,一点一点记录,举一反三!直接贴代码
package com.example.dell.myapplication;
import android.app.Activity;
import android.content.pm.ActivityInfo;
import android.content.res.Configuration;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import java.text.SimpleDateFormat;
import java.util.Date;
import static android.content.ContentValues.TAG;
/**
* Android生命周期以及手机横竖屏生命周期分析
* hyl
*/
/**
* 手机横竖屏
* 03-21 13:07:33.772 2109-2109/com.example.dell.myapplication E/ContentValues: onPause:
03-21 13:07:33.773 2109-2109/com.example.dell.myapplication E/ContentValues: onStop:
03-21 13:07:33.774 2109-2109/com.example.dell.myapplication E/ContentValues: onDestroy:
03-21 13:07:33.818 2109-2109/com.example.dell.myapplication E/ContentValues: onCreate:
03-21 13:07:33.819 2109-2109/com.example.dell.myapplication E/ContentValues: onStart:
03-21 13:07:33.820 2109-2109/com.example.dell.myapplication E/ContentValues: onResume:
*/
/**
* 启动activity
* 03-21 13:30:43.565 28872-28872/com.example.dell.myapplication E/ContentValues: onCreate:
03-21 13:30:43.568 28872-28872/com.example.dell.myapplication E/ContentValues: onStart:
03-21 13:30:43.569 28872-28872/com.example.dell.myapplication E/ContentValues: onResume:
*/
/**
* 点击返回按钮
* 03-21 13:32:37.910 28872-28872/com.example.dell.myapplication E/ContentValues: onPause:
03-21 13:32:37.950 28872-28872/com.example.dell.myapplication E/ContentValues: onStop:
03-21 13:32:37.953 28872-28872/com.example.dell.myapplication E/ContentValues: onDestroy:
*/
/**
* 点击home键
*
* 03-21 13:33:04.825 28872-28872/com.example.dell.myapplication E/ContentValues: onPause:
03-21 13:33:05.140 28872-28872/com.example.dell.myapplication E/ContentValues: onStop:
*/
public class MainActivity extends Activity {
private Button button;
private TextView textView;
private String time;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
listener();
}
private void listener() {
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
hangeScreen();
}
});
textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
textView.setText("重新开始");
}
});
}
private void hangeScreen() {
int ORIENTATION_PORTRAIT = 1; //竖屏
int ORIENTATION_LANDSCAPE = 2; //横屏
int orientation = getResources().getConfiguration().orientation;
if (orientation == ORIENTATION_PORTRAIT) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
} else if (orientation == ORIENTATION_LANDSCAPE) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT);
}
}
private void initView() {
button = (Button) findViewById(R.id.button);
textView = (TextView) findViewById(R.id.tvcontent);
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
time = format.format(new Date());
textView.setText("onCreate" + time);
Log.e(TAG, "onCreate:");
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
textView.append("\n 当前屏幕为横屏");
} else {
textView.append("\n 当前屏幕为竖屏");
}
super.onConfigurationChanged(newConfig);
}
@Override
protected void onStart() {
super.onStart();
textView.append("\n onStart");
Log.e(TAG, "onStart:");
}
@Override
protected void onRestart() {
super.onRestart();
textView.append("\n onRestart");
Log.e(TAG, "onRestart:");
}
@Override
protected void onResume() {
super.onResume();
textView.append("\n onResume");
Log.e(TAG, "onResume:");
}
@Override
protected void onPause() {
super.onPause();
textView.append("\n onPause");
Log.e(TAG, "onPause:");
}
@Override
protected void onStop() {
super.onStop();
textView.append("\n onStop");
Log.e(TAG, "onStop:");
}
@Override
protected void onDestroy() {
super.onDestroy();
textView.append("\n onDestroy");
Log.e(TAG, "onDestroy:");
}
}
<activity android:name=".activity.MainActivity"
>
//横竖屏不调用生命周期的解决办法就是加一下两行代码
<!--android:screenOrientation="portrait"-->
<!--android:configChanges="orientation|keyboardHidden|screenSize"-->
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>