Android 项目必备(四十二)-->Android 多窗口模式
public class MainActivity extends AppCompatActivity {
private static final int WINDOWING_MODE_FREEFORM = 5;
@SuppressLint("MissingInflatedId")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
findViewById(R.id.btn_open_one).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
showWindows("","");
}
});
findViewById(R.id.btn_open_two).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
showWindows("","");
}
});
}
private void showWindows(String packageName,String classPath) {
//获取屏幕高宽
DisplayMetrics metric = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metric);
int screenWidth = metric.widthPixels;
int screenHeight = metric.heightPixels;
Intent intent = new Intent();
intent.setClassName(packageName,classPath);
intent.setFlags(Intent.FLAG_ACTIVITY_LAUNCH_ADJACENT | Intent.FLAG_ACTIVITY_NEW_TASK);
ActivityOptions activityOptions = null;
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
activityOptions = ActivityOptions.makeBasic();
}
//设置为freeform模式
try {
Method method = ActivityOptions.class.getMethod("setLaunchWindowingMode", int.class);
method.invoke(activityOptions, WINDOWING_MODE_FREEFORM);
} catch (Exception e) {
e.printStackTrace();
}
//freeform模式下*窗口的大小
int freeformWidth = 1200;
int freeformHeight = 800;
//居中显示
int left = screenWidth / 2 - freeformWidth / 2;
int top = screenHeight / 2 - freeformHeight / 2;
int right = screenWidth / 2 + freeformWidth / 2;
int bottom = screenHeight / 2 + freeformHeight / 2;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
activityOptions.setLaunchBounds(new Rect(left,top,right,bottom));
}
Bundle bundle = activityOptions.toBundle();
startActivity(intent,bundle);
}
}