SurfaceView(9)透明和半透明

1.设置PixelFormat.TRANSPARENT或者PixelFormat.TRANSLUCENT

getHolder().setFormat(PixelFormat.TRANSPARENT);// 设置为透明

getHolder().setFormat(PixelFormat.TRANSLUCENT);//半透明

public class HalfAlphaSurfaceView extends SurfaceView implements
        SurfaceHolder.Callback {
    float left, top;
    Bitmap bitmap ;

    public HalfAlphaSurfaceView(Context context) {
        super(context);
        bitmap = BitmapFactory.decodeResource(getResources(),
                R.drawable.ic_launcher);
        getHolder().setFormat(PixelFormat.TRANSPARENT);// 设置为透明
//        getHolder().setFormat(PixelFormat.TRANSLUCENT);//半透明
        getHolder().addCallback(this);
        setFocusable(true);
    }

    @Override
    public void surfaceChanged(SurfaceHolder holder, int format, int width,
            int height) {
    }

    @Override
    public void surfaceCreated(SurfaceHolder holder) {
        doDraw();
    }

    private void doDraw() {
        Canvas canvas = getHolder().lockCanvas();
        canvas.drawBitmap(bitmap, left, top, null);//绘制图片
        getHolder().unlockCanvasAndPost(canvas);
    }

    @Override
    public void surfaceDestroyed(SurfaceHolder holder) {
    }

    /*
     * (non-Javadoc)
     * 
     * @see android.app.Activity#onTouchEvent(android.view.MotionEvent)
     */
    @Override
    public boolean onTouchEvent(MotionEvent event) {
        left = event.getX();
        top = event.getY();
        doDraw();
        return super.onTouchEvent(event);
    }
}

 

2.manifest.xml 中相应的activity要用Theme.Translucent 主题

 <activity
            android:name=".MainActivity"
            android:label="@string/app_name"
            android:theme="@android:style/Theme.Translucent" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
</activity>

 

posted @ 2015-06-11 00:03  f9q  阅读(1174)  评论(0)    收藏  举报