最近在工作的时候碰到了一些关于android的问题求大神解答
问题1:
         在一个activity中想要多次截取其显示内容(注:非全部内容,本界面采用FrameLayout布局形式,此FrameLayout实例以下用frameLayout_1表示)并把这个内容在每次点击一个按钮的时候画在这个按钮的前一层上(注:因为当前activity中是有很多动画效果的所以每次的截取图片应该不同)。我将frameLayout_1中所需要的子布局文件挑选出来画在一个全局变量 Bitmap类型的captureBit,它的画布Canvas类型的captureCan也是全局的(这里就出现问题了,之前我并没有将这两个变量定义为全局变量所以出现了每次显示的截取屏幕的这些组建的内容显示的都与第一截取出来的一样,,也就是只有第一次截取位置是对的其他时候截取的都是第一次的图片,询问一下说是可能是因为每次新生成一个captureBit和captureCan时都会调用第一次缓存中已经画好的图片,但是我仍有些不理解,因为即便如此调用了缓存中的同一长图片但是我在生成之后都会重新向此canvas画这些当前frameLayout_1中的组建而且画东西的代码是没有问题的可以执行,为什么更改不了结果呢,求大神解答)以下是代码:childCount是此frameLayout_1中的子布局数量,optionButNum是不想画在截图中的子布局的计数
                
captureBit= Bitmap.createBitmap(this.getWindowManager().getDefaultDisplay().getWidth(),this.getWindowManager().getDefaultDisplay().getHeight(),Bitmap.Config.ARGB_8888);

captureCan=new Canvas(captureBit);
capturePai=new Paint();
                for(int i=0;i<childCount;i++){
if(i!=optionButNum){
frameLayout_1.getChildAt(i).draw(captureCan);
}
                 }

虽然通过把captureBit和captureCan定义为全局变量避免了上述情况但是原理希望高手解说一下,好吧接下来说问题
  问题2:
我之前的截取图片是为了动态取得当前activity中的指定部分显示内容然后做给一个动态显示的子FrameLayout做背景图片,但是要有模糊效果,之前是想用Paint的MaskFilter来处理,但是不知道是我用法问题还是这个方法真的如同事所说(它只能处理单像素的简单图片或文字之类的东西,复杂的图片是处理不了的)如果有大神能明白我的思路并且告诉我这个应该效果能用Paint的MaskFilter实现么,如果不能请给个别的处理方法,如果能应该怎么添加,我之前这个bitmap是通过调用view的draw方法直接画在画布上的所以不知道怎么将Piant添加上去,之前尝试在view.draw()之后再在canvas上重新画一下canvas.draw(bitmap,~~,~,~~Paint)但是诸多问题而且最主要的没有模糊效果所以不知道接下来怎么做了,大神求笼罩了问题3:
若若的问一句,怎么清楚缓存中指定的某些变量

解决方案 »

  1.   

    驴唇不对马嘴,不知道你说的是个神马J8玩意
      

  2.   

    你哪没看明白?就是想做个类似于手机选择关机之前手机整个屏幕就会变得模糊,只不过我想做的是点击个按钮把全屏中某些不想要的东西剔除然后再做模糊效果显示出来,期间因为当前界面上有动画效果,所以下次在点击按钮截取的是那个时候的屏幕的内容,但是从第二次开始以后每次就只能显示第一截取的那些内容,比如要做个水草摇动第一次点击时候水草正好摇到最左段这时就把当前这个水草的形态和位置记录在一个图片上显示出来,然后点击一下屏幕继续恢复动画效果,然后过了几秒又点击一下屏幕此时水草应该已经摇到中间了,可结果我现在水草第二次显示的还是第一次点击时候的位置,这回我说的够明白了吧