2011-07-14 8 views
1

可能性の重複:私はカスタム表面ビューセミ半透明を作るしようとしています
how to make surfaceview transparent作るカスタムアンドロイドSurfaceView透明

。現在のところ、このアクティビティは透過的なので、その下のアクティビティを見ることができますが、20dp * 20 dp(ControlsOverlayView)のカスタムビューを追加すると、画面上に黒い四角形として表示されます。私はこの投稿How to make a ListView transparent in Android?を見て、背景色、キャッシュヒント、およびビューのアルファを無駄に設定しようとしました。

public class ControlsOverlayActivity extends Activity { 

    private ControlsOverlayView overlay; 

    @Override 
    protected void onCreate(Bundle savedInstanceState){ 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.test); 
     TextView textView = (TextView) findViewById(R.id.test_text); 
     try { 
      textView.setText("test"); 
     } catch (Exception e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 
} 

サンプルのTextViewを含むのtest.xmlレイアウトと私のカスタムControlsOverlayViewは次のとおりです:

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

    <TextView android:id="@+id/test_text" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"/> 

    <wp.ui.ControlsOverlayView 
    android:layout_width="20dp" 
    android:layout_height="20dp" 
    android:background="#00000000" 
    android:cacheColorHint="#00000000" 
    android:alpha="0" 
    /> 

</FrameLayout> 

とビュー:

ビューを収容する透明活動がControlsOverlayActivity.javaです

public class ControlsOverlayView extends SurfaceView implements Runnable, Callback{ 

    public ControlsOverlayView(Context context, AttributeSet attrs) { 
     super(context, attrs); 

     // make sure we get key events 
     setFocusable(true); 
     setFocusableInTouchMode(true); 
     requestFocus(); 

     // register our interest in hearing about changes to our surface 
     getHolder().addCallback(this); 
    } 

    @Override 
    public void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2, int arg3) { 
     //resize(getWidth(), getHeight()); 
     //paintControls(); 

    } 

    @Override 
    public void surfaceDestroyed(SurfaceHolder arg0) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void run() { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void surfaceCreated(SurfaceHolder holder) { 
     // TODO Auto-generated method stub 
    } 

} 

私のマニフェストにも私は持っています:

<activity android:name=".ui.ControlsOverlayActivity" android:theme="@style/Theme.Transparent"> 
     </activity> 

とTheme.Transparentは以下のように定義されています

<style name="Theme.Transparent" parent="android:Theme"> 
     <item name="android:windowIsTranslucent">true</item> 
     <item name="android:windowBackground">@color/transparent</item> 
     <item name="android:windowContentOverlay">@null</item> 
     <item name="android:windowNoTitle">true</item> 
     <item name="android:backgroundDimEnabled">false</item> 
    </style> 

再びそれが透明に取得can`tだけでカスタムビューです。何か案は?どうやら

答えて

1

あなたはSurfaceViewから継承されているので、あなたは、透明性を得ることができないのStackOverflowがMaking a SurfaceView Transparent

+0

うわー、私はそのポストを逃したか全く分からない回答参照してください。どうもありがとう。 – odiggity