1

問題がありました。setMeasuredDimension を (1,1) で設定すると、黒画面になります。(後ろ姿を探しているのですが、(1,1)画面切り替えを黒に設定した場合)setMeasuredDimensionを(2,2)に設定した場合、動作に問題はありません。理由を教えてください。

それについてコールスタックをトレースすると、アプリが実行されてcustomView2が表示されているときに、RenderNode.javaのnSetHasOverlappingRendering関数がtrueで呼び出され、テレビが黒い画面に設定されていることに気付きました。

これは androidTV でテストされており、以下はビルド情報です。compileSdkVersion : 28 minSdkVersion : 28 targetSdkVersion : 28

ありがとうございます。

-- MainActivity --(これはテスト用です)

public class MainActivity extends Activity {
    testCustomView2 testCustomView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        testCustomView = new testCustomView2(getApplicationContext());

        WindowManager mWindowManager = (WindowManager)
            getApplication().getSystemService(Context.WINDOW_SERVICE);
        if (mWindowManager != null) {
            WindowManager.LayoutParams wmparams = new WindowManager.LayoutParams(
                WindowManager.LayoutParams.WRAP_CONTENT,
                WindowManager.LayoutParams.WRAP_CONTENT,
                WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY,
                WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN,
                PixelFormat.OPAQUE);
            wmparams.gravity = Gravity.TOP | Gravity.START;
            mWindowManager.addView(testCustomView, wmparams);
        }
    }

}

--testCustomView2 (これはテスト用です)--


public class testCustomView2 extends View{
    Context mContext;
    public testCustomView2(Context context){
        super(context);
        mContext = context;
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        this.setMeasuredDimension(1, 1);
    }

}

-- activity_main.xml (res/layout) --

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/main_frame"
    android:background="@android:color/transparent"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

</FrameLayout>
4

0 に答える 0