安卓中诡异的问题

问题一: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的时候恢复。

原文地址:https://www.cnblogs.com/slothccc/p/6594523.html