8155平台multi-display(多屏显示)原理与配置

一,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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值