【Android开发】onWindowfocuschanged的应用

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">最近在做一项编程,需要截取当前视图的图像保存为Bitmap,假设这个View名为view_A,我在onCreate里面执行了如下的代码</span>
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"></span><pre name="code" class="java">protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //......省略初始化代码
        view_A.setDrawingCacheEnabled(true);
	Bitmap temp=view_A.getDrawingCache();
        fun(temp);
}
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">
</span>
fun是对Bitmap进行处理的函数,但是一直报空指针错误,Debug发现是因为temp=null
 
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">
</span>
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">然后我又把上述代码放在onResume()中执行,一样是空指针错误;</span>
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">我就意识到可能是因为onCreate和onResume执行的时候,View其实是没完全显示出来的,接下来我使用了一个onClick之后才调用上述代码,</span>
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">得到的Bitmap是有值的。</span>
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">
</span>
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">查找了一些资料,发现了在Activity的@override函数当中,有一个叫做onWindowfocuschanged(),它是指Activity获得焦点或失去焦点的时候调用的函数,</span>
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">当我把上述代码写在</span>
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"></span><pre name="code" class="java">@Override
public void onWindowFocusChanged(boolean hasFocus) {
	// TODO Auto-generated method stub
		super.onWindowFocusChanged(hasFocus);
		View.setDrawingCacheEnabled(true);
		Bitmap temp=<span style="font-family: Arial, Helvetica, sans-serif;">view_A</span>.getDrawingCache();
		
		
	}
temp是有值的。
 
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">换言之可以推测,视图完全可见的情况下应该是在</span><span style="font-family: Arial, Helvetica, sans-serif;">onWindowFocusChanged,那为何不是onResume呢?这个具体的机理等待有空再去研究。</span>
<span style="font-family: Arial, Helvetica, sans-serif;">现在我们知道的就是,当一些需要Activity一开始能跟用户交互就开始自动执行、加载设计到View、布局的操作,可以放在</span><span style="font-family: Arial, Helvetica, sans-serif;">onWindowFocusChanged当中。</span><span style="font-family: Arial, Helvetica, sans-serif;"></span><pre name="code" class="java"><span style="font-family: Arial, Helvetica, sans-serif;"></span><pre name="code" class="java">
<span style="font-family: Arial, Helvetica, sans-serif;">onWindowFocusChanged</span>
onWindowFocusChanged
 
<span style="font-family: Arial, Helvetica, sans-serif;">onWindowFocusChanged</span>

                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值