surfaceview相关显示问题

Posted 小筱萌

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了surfaceview相关显示问题相关的知识,希望对你有一定的参考价值。

最近做的项目会频繁的刷新bitmap,第一时间想到的是用surfaceview,使用的过程中也是遇到了诸多问题,特此记录一下

1.自定义surfaceview,由于每次绘制的图像大小不一致,所以当刷新小图的时候,底下总会显示最后一张大图,可能是因为它本身的双缓存机制吧,具体原因没细查,解决办法就是每次绘制之前进行清屏操作,代码如下:

Canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR);

2.bitmap图片的缩放

private static Bitmap newBitmap(Bitmap bitmap) 
    Matrix matrix = new Matrix();
    matrix.postScale(4f, 4f); //长和宽放大缩小的比例
    Bitmap resizeBmp = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true);
    return resizeBmp;

3.surfaceView所在的activity的theme是Dialog,设置方式如下:

<style name="MyDialogStyleBottom" parent="android:Theme.Dialog">
    <!-- 进入和退出时动画-->
    <!--<item name="android:windowAnimationStyle">@style/AnimBottom</item>-->
    <!-- 下面这两个是最重要的 -->
    <item name="android:windowFrame">@null</item><!--边框-->
    <item name="android:windowIsFloating">true</item><!--是否浮现在activity之上-->
    <item name="android:windowIsTranslucent">true</item><!--半透明-->
    <item name="android:windowNoTitle">true</item><!--无标题-->
    <item name="android:windowFullscreen">true</item> <!-- 设置全屏 -->
    <!-- 点击空白区域是否消失  API Level>=11-->
    <item name="android:windowCloseOnTouchOutside">false</item>
</style>

4.当surfaceView绘制在dialog上的时候显示会有一层雾蒙蒙的感觉,是因为dialog覆盖在了surfaceview上,解决办法是调用如下代码,将surfaceview置顶显示:

surfaceView.setZOrderOnTop(true);

5.设置surfaceview置顶之后它会一直显示在顶层,如果说在某个过程中想隐藏该surfaceview,并显示其他控件时,需要调用如下代码,亲测有效哦!

faceView.setZOrderMediaOverlay(true);

 

至此,有关surfaceView涉及的问题就都写完了,以后有其他问题在更新

 

 

 

以上是关于surfaceview相关显示问题的主要内容,如果未能解决你的问题,请参考以下文章

利用SurfaceView显示正弦曲线,仿造示波器

android videoview和surfaceview的区别

SurfaceView与TextureView

Android SurfaceView内容居中显示

使SurfaceView大于屏幕(将相机预览适配到大于显示的SurfaceView)

使SurfaceView大于屏幕(将相机预览适配到大于显示的SurfaceView)