android开发 surfaceView与按钮共存时,按钮的隐藏、显示问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android开发 surfaceView与按钮共存时,按钮的隐藏、显示问题相关的知识,希望对你有一定的参考价值。
sdk:android2.3.3
1. 我用surfaceView做了一个界面,画了背景,前景图。
2. 在我的主activity的xml布局中采用相对布局,相对布局里面定义上述surfaceview,以及数个按钮,大致如下:
<xxx.xxx.xxx.xxxSurfaceView
android:id="@+id/SurfaceView"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
<Button
android:id="@+id/Back"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
....
android:background="@drawable/back" />
3. 自定义一个类似iphone的滑动按钮slipBtn,期望
滑动按钮至1(true)时,上述2中定义的按钮可以显示
滑动按钮至0(false)时隐藏。这个在滑动按钮状态变化的监听方法中实现。
4. 设置按钮显示时,使用的方法是在activity中将关联的按钮的Visibility属性置为VISIBLE,例如:btnBack.setVisibility(View.VISIBLE);
同理隐藏是用:btnBack.setVisibility(View.INVISIBLE);
不管显示还是隐藏属性,设置后都有btnBack.invalidate();
现象:
1、如果activity中一开始的初始状态是设置按钮为显示,则一切正常:滑动按钮至0(false)则隐藏“back”按钮,且点击“back”按钮原位置不会响应onClick事件;再滑回1(true)则显示“back”按钮,显示时,“back”按钮的OnClick事件响应正常;
2、如果activity中一开始的初始状态是设置按钮为隐藏,则后续不管滑动按钮状态如何,按钮back都不会显示出来
3、在上述2的前提下,如果滑动按钮滑至1(true),则back按钮位置点按,可以触发对应的onClick事件,即按钮back此时是能用的,只是看不见。
4. 另,上述activity如不使用自定义的slipBtn,改用toggleButton, 则无上述问题
5. 使用slipBtn新建一个样例project来测试,也无上述问题
曾经进行的尝试:
1. 部分按钮初始状态为显示,部分为隐藏。结果时开始状态为隐藏的,均不正常(现象同上面问题描述)
2. 不画surfaceView的背景,只画前景(与按钮位置不重合),现象依然
请问,这个应该会是什么问题导致的?会不会是surfaceView画图覆盖了按钮的显示呢? 如果有可能是这个原因,可否告知如何更改surfaceview中背景、按钮等的绘制的顺序/层。如果不是,请问有什么思路提供一下,我再去定位。 感谢!
这个View.INVISIBLE 不可见,但这个View在ViewGroupt中仍保留它的位置,不重新layout
换成view.GONE这个不可见,但是不保留原位置,更新后重新layout追问
这个我明白,但这不是我疑问所在。感谢您的回答!
参考技术B 我的是在LinearLayout中包含一个Button,然后我给LinearLayout加了一个透明的背景颜色(例如#0033AABB),就可以显示。具体为什么会这样,我也不知道,很奇怪的问题。如果你有更好的解决方法,麻烦说一下哈~追问目前我没有解决办法。只有用系统给的一个checkButton代替,丑了点,勉强用着。
以上是关于android开发 surfaceView与按钮共存时,按钮的隐藏、显示问题的主要内容,如果未能解决你的问题,请参考以下文章
android: View, SurfaceView, GLSurfaceView, TextureView 区别与联系
Android游戏开发十九(必看篇)SurfaceView运行机制详解—剖析Back与Home按键及切入后台等异常处理!