CardboardView和自定义菜单Android

时间:2017-04-10 15:39:20

标签: java android google-cardboard virtual-reality

我试图使用纸板视图(在互联网上找到的例子)

private class CardboardOverlayEyeView extends ViewGroup {
        private final ImageView imageView;
        private final TextView textView;
        private float offset;

        public CardboardOverlayEyeView(Context context, AttributeSet attrs) {
            super(context, attrs);
            imageView = new ImageView(context, attrs);
            imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
            imageView.setAdjustViewBounds(true);  // Preserve aspect ratio.
            addView(imageView);

            textView = new TextView(context, attrs);
            textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14.0f);
            textView.setTypeface(textView.getTypeface(), Typeface.BOLD);
            textView.setGravity(Gravity.CENTER);
            textView.setShadowLayer(3.0f, 0.0f, 0.0f, Color.DKGRAY);
            addView(textView);
        }

        public void setColor(int color) {
            imageView.setColorFilter(color);
            textView.setTextColor(color);
        }

        public void setText(String text) {
            textView.setText(text);
        }

        public void setTextViewAlpha(float alpha) {
            textView.setAlpha(alpha);
        }

        public void setOffset(float offset) {
            this.offset = offset;
        }

        @Override
        protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
           //bla bla view positions.
        }
    }
}

我想在这里为游戏手柄添加菜单(通过蓝牙)。我只是用我的菜单写了另一个layout.xml,并在CardboardOverlayEyeView中使用inflate我将此布局添加到我当前的viewGroup。但是为了正确工作,extends ViewGroup已更改为extends RelativeLayout

我的菜单很好。有几个按钮,如"点1,点2,点3和#34; 当我在操纵杆上使用控件(向上/向下)时,它在leftView上显示焦点(就像按钮的另一种颜色) - 并且它很好。但是在右视图中没有焦点。也可是如果我在joystic左/右使用控制 - 我可以切换从左到右查看。 我想删除开关,如果leftView有焦点按钮(用另一种颜色)我也想在rightView中执行此步骤。谁能帮我?怎么做。 enter image description here 图片

1 个答案:

答案 0 :(得分:0)

Finnaly我做到了。 代码的简单部分。我们需要从左右视图中将一系列按钮作为主按钮的副本。

public void setFocusedButton() {
        for(int i=0; i<mLeftView.btns.length;i++){
            if(mLeftView.btns[i].isFocused() || mRightView.btns[i].isFocused()) {
                mLeftView.btns[i].setBackgroundResource(R.drawable.button_pressed);
                mRightView.btns[i].setBackgroundResource(R.drawable.button_pressed);
            }else {
                mLeftView.btns[i].setBackgroundResource(R.drawable.button);
                mRightView.btns[i].setBackgroundResource(R.drawable.button);
            }
        }

    }

它没有完全专注。但它看起来很棒。