论坛首页 移动开发技术论坛

源码修改中出现的BadTokenException & Dialog的修改和继承 & 2.2源码中分辨率hdpi设置

浏览 2060 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2010-11-11   最后修改:2010-11-11

      一般来说修改Dialog界面的颜色、背景之类的元素主要涉及的是资源文件修改,不存在源码修改。这里需要提及若是增加或者替换了图片,这里使用make -j2是识别不出来的,为了让其进行最小的编译可以有选择删除下面路径的文件

 

out\target\common\obj\APP\framework-res_intermediates

 

      以上没有涉及Dialog布局方面的修改,若是修改布局最好重载Dialog并定义自己的Theme,在相应的以下几个文件进行修改:

 

attrs.xml  styles.xml themes.xml  
public.xml \\为了让外部类识别该主题

     这里需要注意的是style用于单个布局xml的单个元素,而theme可以将其作为一个单位用在应用中的所有Activity中。重载了Dialog类后在调用该类时需要注意其调用类的类型:

     当调用类继承于WindowManagerPolicy时在Dialog类中的onCreate需要加入以下代码:

 

Window window = getWindow();
window.requestFeature(Window.FEATURE_NO_TITLE);
window.setType(WindowManager.LayoutParams.TYPE_SYSTEM_DIALOG);
window.setFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM,
              WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);

     如果调用类是Activity类,则不可以加入该类,否则这两种情况下都会抛出BadTokenException错误(已经通过程序验证,那里如果有错请各位指正O(∩_∩)O~)

 

 

 

    最后一点是在直接编译源码时候

out\target\product\generic\system\framework\framework-res.apk

    中没有hdpi文件夹,虽然在

 

out\target\common\obj\APPS\framework-res_intermediates\public_resources.xml

    hdpi文件夹的资源都已经被编译出来了,可是未能在system.img中有hdpi的资源,从而导致即便是设置480*800的分辨率其模拟器显示的结构依旧是mdpi的资源,因此需要做以下修改

 转载请注明(http://ishelf.iteye.com/blog/809040

 

在文件夹 build\target\product\generic.mk加入

CUSTOM_LOCALES:= hdpi mdpi
论坛首页 移动开发技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics