Android横竖屏加载不同布局的适配方案

1.AndroidMenifest.xml里面的activity需要如下配置使其横竖屏切换时不会重启整个activtiy:

  
            
                

                
            
  

2.分别写横竖屏的布局文件:

activity_main_horizontal.xml




    


 

activity_main_vertical.xml




    


 

3.在activity中实现对应的加载逻辑:

MainActivity.java

import android.content.res.Configuration;
import android.graphics.Color;
import android.os.Bundle;
import android.widget.TextView;

import androidx.appcompat.app.AppCompatActivity;

import com.example.my2048.Utils.LogUtil;

public class MainActivity extends AppCompatActivity {
    private TextView textView = null;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (getResources().getConfiguration().orientation==Configuration.ORIENTATION_LANDSCAPE){
            //如果是横屏了,在这里设置横屏的UI
            LogUtil.d("onCreate activity_main_horizontal");
            setContentView(R.layout.activity_main_horizontal);
        }else{
            //否则,在这里设置竖屏的UI
            LogUtil.d("onCreate activity_main_vertical");
            setContentView(R.layout.activity_main_vertical);
        }

        setViews();

        initData();
    }

    private void initData() {
        textView.setTextColor(Color.RED);
    }

    private void setViews() {
        textView = findViewById(R.id.text);
    }

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        if (newConfig.orientation==Configuration.ORIENTATION_LANDSCAPE){
            //如果是横屏了,在这里设置横屏的UI
            LogUtil.d("onConfigurationChanged activity_main_horizontal");
            setContentView(R.layout.activity_main_horizontal);
        }else{
            //否则,在这里设置竖屏的UI
            LogUtil.d("onConfigurationChanged activity_main_vertical");
            setContentView(R.layout.activity_main_vertical);
        }
        setViews();
        initData();
        super.onConfigurationChanged(newConfig);
    }
}

4.实现效果:

Android横竖屏加载不同布局的适配方案_第1张图片 Android横竖屏加载不同布局的适配方案_第2张图片

你可能感兴趣的:(移动开发,Android,android)