2017-04-10 8 views
1

Imは(インターネットでの例を発見した)段ボールビューCardboardViewとカスタムメニューのAndroid

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. 
     } 
    } 
} 

を使用しようと、私は(Bluetooth経由)ゲームパッドのためにここにメニューを追加します。私はちょうど私のメニューと別のlayout.xmlを書くとCardboardOverlayEyeViewで私は現在のviewGroupにこのレイアウトを追加inflateを使用しています。しかし、正しい作業のために - extends ViewGroupextends RelativeLayoutに変更されました。

マイメニューが表示されます。左ボタンでフォーカスを表示しているとき(ボタンの別の色のように)、それがジョイスティック(UP/DOWN)のコントロールを使用しているときに、「ポイント1、ポイント2、ポイント3」のようなボタンはほとんどありません。また、私は左右のジョイスティックのコントロールを使用する場合 - 私は左から右のビューに切り替えることができます。 私はスイッチを削除したいと思うし、leftViewにボタンをフォーカスしている場合(別の色で)、私はrightViewのこのステップも必要です。誰も私を助けることができますか?どうやってするの。 enter image description here 画像

+0

誰かが助けることができますか? – Peter

答えて

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); 
      } 
     } 

    } 

しかし、それはすばらしい。

関連する問題