安卓中诡异的问题
问题一:Android项目中requestfocus()失效的问题
参考博客:http://blog.csdn.net/Greathfs/article/details/52141876
原因
查资料分析了一下,可能是以下问题:
Android加载刷新UI的时候,是从左到右,从上到下的顺序,正在加载的过程中,如果此时requestFocus(),的话,有可能此时还没把整个界面刷新好,导致requestFocus无效。
解决办法
找到原因后就有解决办法了,给他个延迟时间:
childLayout[i / numsPerPage].postDelayed(new Runnable() { @Override public void run() { childLayout[i / numsPerPage].getChildAt(i % numsPerPage).requestFocus(); } },10);
问题二:getBackground().setAlpha 奇葩问题
参考博客:http://blog.csdn.net/li4236/article/details/51077070
使用这个是可以正常设置背影图片的透明度,但是莫名其妙的我使用onFocusChange来更改透明度出现莫名其妙的错误。
原因:
因为同一资源加载的实例都共享一个共用的状态,如果你更改一个实例的状态,其余的实例都会接收到相同的通知。
解决办法
加入mutate 让它们不要共享同一个状态
viewitem.setOnFocusChangeListener(new View.OnFocusChangeListener() { @Override public void onFocusChange(View v, boolean hasFocus) { if(hasFocus){ //mImageView.setBackgroundResource(R.drawable.camera1_1); mImageView.getBackground().mutate().setAlpha(255); mTextView.setBackgroundColor(0xffffffff); } else{ //mImageView.setBackgroundResource(R.drawable.camera1_1); mImageView.getBackground().mutate().setAlpha(100); mTextView.setBackgroundColor(0x99ffffff); } } });
问题三:fragment中显示问题
a),这里主要使用addToBackStack(null)添加到返回栈中,返回的时候逆序弹出显示。
我这里实现的是一个视频显示的界面,于是在返回的时候,视频的部分界面消失,并且显示了主菜单的部分界面。这个问题困扰了我很久,最后只能先使用fragment更换时动画来缩小界面显示的时间。
b),恢复fragment的时候,onResume的时候恢复。