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相关显示问题的主要内容,如果未能解决你的问题,请参考以下文章
android videoview和surfaceview的区别