一,APP层
提供如下三种方法可以启动或者创建第二屏幕的显示。
1,APP创建时候设置displayid
应用层可以在activity创建的时候,调用setLaunchDisplayId(int) 来设置启动展示的id。
Display[] displays = displayManager.getDisplays();
Display targetDisplay = null;
for (Display display : displays) {
if(xxxxx) {
targetDisplay = display;
break;
}
break;
}
@override
protected void onCreate(Bundle saveInstanceState) {
super.onCreate(saveInstanceState);
setContentView(XXXXX);
setLaunchDisplayId(targetDisplay);
}
2, 在第二屏幕启动某个Activity
public static Display getSecondDisplayId(Context context){
DisplayManager displayManager = (DisplayManager) context.getSystemService(Context.DISPLAY_SERVICE);
Display[] displays = displayManager.getDisplays();
// Display[] arrayOfDisplay = displayManager.getDisplays(DisplayManager.VIRTUAL_DISPLAY_FLAG_PUBLIC);
return displays[1];
}
ActivityOptions options = ActivityOptions.makeBasic();
options.setLaunchDisplayId(DisplayUtils.getSecondDisplayId(context).getDisplayId());
Intent intent = new Intent(context,CommonOptionDialog.class);
context.startActivity(intent,options.toBundle());
3, 通过创建第二屏Context方法,获取第二屏windowManager
public class DisplayUtils {
private Context mContext;
private DisplayManager mDisplayManager;
private ArrayList<Display> mAllDisplays = new ArrayList<>();
public DisplayUtils(Context context) {
mContext = context;
mDisplayManager = (DisplayManager) mContext.getSystemService(Context.DISPLAY_SERVICE);
}
public ArrayList<String> getCurrentDisplays() {
mAllDisplays.clear();
ArrayList<String> allDisplays = new ArrayList<String>();
Display[] displays = mDisplayManager.getDisplays();
for (Display display : displays) {
mAllDisplays.add(display);
allDisplays.add("Display " + display.getDisplayId() + " : " + display.getName());
}
return allDisplays;
}
//获取第二屏context
public Context getDisplayContext(int checked) {
int displayId = mAllDisplays.get(checked-1).getDisplayId();
if (displayId != DEFAULT_DISPLAY) {
Log.d("wangchong", "getDispla

最低0.47元/天 解锁文章
1775

被折叠的 条评论
为什么被折叠?



