当前位置: 编程技术>移动开发
本页文章导读:
▪Preferences(4)组织首选项 Preferences(四)组织首选项
何谓组织首选项啊,实际上就是为首选项分组!
分组之后,我们首页只显示组名,当我们点击进去的时候,才会显示具体的首选项列表。如图:
代码:
view plaincop.........
▪ Preferences(3)EditTextPreference/RingtonePreference Preferences(三)EditTextPreference/RingtonePreference
EditTextPreference:
效果图:
当我们点击主页面的输入名称时,就会弹出该对话框,让我们输入名称。
代码:
view plaincopy to clipboardprint?<?xml versi.........
▪ apk封装技巧 apk打包技巧
apk文件,即Android application package文件。每个要安装到Android平台的应用都要被编译打包为一个单独的文件,后缀名为.apk,其中包含了应用的二进制代码、资源、配置文件等。APK文.........
[1]Preferences(4)组织首选项
来源: 互联网 发布时间: 2014-02-18
Preferences(四)组织首选项
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"
android:key="edittext_screen"
android:title="屏幕标题"
android:summary="屏幕简要说明"
>
<!-- 第一组 -->
<PreferenceCategory
xmlns:android="http://schemas.android.com/apk/res/android"
android:key="edittext_screen"
android:title="第一组"
android:summary="点击进入第一组首选项"
>
<RingtonePreference
android:key="ringtonePreference"
android:summary="简要说明"
android:title="选择系统铃声"
android:ringtoneType="alarm"
android:showSilent="true"
>
</RingtonePreference>
</PreferenceCategory>
<!-- 第二组 -->
<PreferenceCategory
xmlns:android="http://schemas.android.com/apk/res/android"
android:key="edittext_screen"
android:title="第二组"
android:summary="点击进入第二组首选项"
>
<EditTextPreference
android:dialogTitle="输入您的名称:"
android:key="editTitlePreference"
android:summary="简要说明"
android:title="输入名称"
></EditTextPreference>
</PreferenceCategory>
<!-- 第三组 -->
<PreferenceCategory
xmlns:android="http://schemas.android.com/apk/res/android"
android:key="edittext_screen"
android:title="第三组"
android:summary="点击进入第三组首选项"
>
<EditTextPreference
android:dialogTitle="输入您的名称:"
android:key="editTitlePreference"
android:summary="简要说明"
android:title="输入名称"
></EditTextPreference>
</PreferenceCategory>
</PreferenceScreen>
何谓组织首选项啊,实际上就是为首选项分组!
分组之后,我们首页只显示组名,当我们点击进去的时候,才会显示具体的首选项列表。如图:
代码:
view plaincopy to clipboardprint?
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"
android:key="edittext_screen"
android:title="屏幕标题"
android:summary="屏幕简要说明"
>
<!-- 第一组 -->
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"
android:key="edittext_screen"
android:title="第一组"
android:summary="点击进入第一组首选项"
>
<RingtonePreference
android:key="ringtonePreference"
android:summary="简要说明"
android:title="选择系统铃声"
android:ringtoneType="alarm"
android:showSilent="true"
>
</RingtonePreference>
</PreferenceScreen>
<!-- 第二组 -->
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"
android:key="edittext_screen"
android:title="第二组"
android:summary="点击进入第二组首选项"
>
<EditTextPreference
android:dialogTitle="输入您的名称:"
android:key="editTitlePreference"
android:summary="简要说明"
android:title="输入名称"
></EditTextPreference>
</PreferenceScreen>
<!-- 第三组 -->
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"
android:key="edittext_screen"
android:title="第三组"
android:summary="点击进入第三组首选项"
>
<EditTextPreference
android:dialogTitle="输入您的名称:"
android:key="editTitlePreference"
android:summary="简要说明"
android:title="输入名称"
></EditTextPreference>
</PreferenceScreen>
</PreferenceScreen>
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"
android:key="edittext_screen"
android:title="屏幕标题"
android:summary="屏幕简要说明"
>
<!-- 第一组 -->
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"
android:key="edittext_screen"
android:title="第一组"
android:summary="点击进入第一组首选项"
>
<RingtonePreference
android:key="ringtonePreference"
android:summary="简要说明"
android:title="选择系统铃声"
android:ringtoneType="alarm"
android:showSilent="true"
>
</RingtonePreference>
</PreferenceScreen>
<!-- 第二组 -->
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"
android:key="edittext_screen"
android:title="第二组"
android:summary="点击进入第二组首选项"
>
<EditTextPreference
android:dialogTitle="输入您的名称:"
android:key="editTitlePreference"
android:summary="简要说明"
android:title="输入名称"
></EditTextPreference>
</PreferenceScreen>
<!-- 第三组 -->
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"
android:key="edittext_screen"
android:title="第三组"
android:summary="点击进入第三组首选项"
>
<EditTextPreference
android:dialogTitle="输入您的名称:"
android:key="editTitlePreference"
android:summary="简要说明"
android:title="输入名称"
></EditTextPreference>
</PreferenceScreen>
</PreferenceScreen>
以上的这种方法适合首选项的数目较多时使用。
如果我们首选项的数目较少,但是我们依旧想为他们分组下,怎么办呢?
我们可以将上面代码中的嵌套PreferenceScreen改为PreferenceCategory,就这么简单!!!
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"
android:key="edittext_screen"
android:title="屏幕标题"
android:summary="屏幕简要说明"
>
<!-- 第一组 -->
<PreferenceCategory
xmlns:android="http://schemas.android.com/apk/res/android"
android:key="edittext_screen"
android:title="第一组"
android:summary="点击进入第一组首选项"
>
<RingtonePreference
android:key="ringtonePreference"
android:summary="简要说明"
android:title="选择系统铃声"
android:ringtoneType="alarm"
android:showSilent="true"
>
</RingtonePreference>
</PreferenceCategory>
<!-- 第二组 -->
<PreferenceCategory
xmlns:android="http://schemas.android.com/apk/res/android"
android:key="edittext_screen"
android:title="第二组"
android:summary="点击进入第二组首选项"
>
<EditTextPreference
android:dialogTitle="输入您的名称:"
android:key="editTitlePreference"
android:summary="简要说明"
android:title="输入名称"
></EditTextPreference>
</PreferenceCategory>
<!-- 第三组 -->
<PreferenceCategory
xmlns:android="http://schemas.android.com/apk/res/android"
android:key="edittext_screen"
android:title="第三组"
android:summary="点击进入第三组首选项"
>
<EditTextPreference
android:dialogTitle="输入您的名称:"
android:key="editTitlePreference"
android:summary="简要说明"
android:title="输入名称"
></EditTextPreference>
</PreferenceCategory>
</PreferenceScreen>
效果图可就大变样了:
何谓组织首选项啊,实际上就是为首选项分组!
分组之后,我们首页只显示组名,当我们点击进去的时候,才会显示具体的首选项列表。如图:
代码:
view plaincopy to clipboardprint?
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"
android:key="edittext_screen"
android:title="屏幕标题"
android:summary="屏幕简要说明"
>
<!-- 第一组 -->
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"
android:key="edittext_screen"
android:title="第一组"
android:summary="点击进入第一组首选项"
>
<RingtonePreference
android:key="ringtonePreference"
android:summary="简要说明"
android:title="选择系统铃声"
android:ringtoneType="alarm"
android:showSilent="true"
>
</RingtonePreference>
</PreferenceScreen>
<!-- 第二组 -->
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"
android:key="edittext_screen"
android:title="第二组"
android:summary="点击进入第二组首选项"
>
<EditTextPreference
android:dialogTitle="输入您的名称:"
android:key="editTitlePreference"
android:summary="简要说明"
android:title="输入名称"
></EditTextPreference>
</PreferenceScreen>
<!-- 第三组 -->
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"
android:key="edittext_screen"
android:title="第三组"
android:summary="点击进入第三组首选项"
>
<EditTextPreference
android:dialogTitle="输入您的名称:"
android:key="editTitlePreference"
android:summary="简要说明"
android:title="输入名称"
></EditTextPreference>
</PreferenceScreen>
</PreferenceScreen>
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"
android:key="edittext_screen"
android:title="屏幕标题"
android:summary="屏幕简要说明"
>
<!-- 第一组 -->
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"
android:key="edittext_screen"
android:title="第一组"
android:summary="点击进入第一组首选项"
>
<RingtonePreference
android:key="ringtonePreference"
android:summary="简要说明"
android:title="选择系统铃声"
android:ringtoneType="alarm"
android:showSilent="true"
>
</RingtonePreference>
</PreferenceScreen>
<!-- 第二组 -->
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"
android:key="edittext_screen"
android:title="第二组"
android:summary="点击进入第二组首选项"
>
<EditTextPreference
android:dialogTitle="输入您的名称:"
android:key="editTitlePreference"
android:summary="简要说明"
android:title="输入名称"
></EditTextPreference>
</PreferenceScreen>
<!-- 第三组 -->
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"
android:key="edittext_screen"
android:title="第三组"
android:summary="点击进入第三组首选项"
>
<EditTextPreference
android:dialogTitle="输入您的名称:"
android:key="editTitlePreference"
android:summary="简要说明"
android:title="输入名称"
></EditTextPreference>
</PreferenceScreen>
</PreferenceScreen>
以上的这种方法适合首选项的数目较多时使用。
如果我们首选项的数目较少,但是我们依旧想为他们分组下,怎么办呢?
我们可以将上面代码中的嵌套PreferenceScreen改为PreferenceCategory,就这么简单!!!
view plaincopy to clipboardprint?
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"
android:key="edittext_screen"
android:title="屏幕标题"
android:summary="屏幕简要说明"
>
<!-- 第一组 -->
<PreferenceCategory
xmlns:android="http://schemas.android.com/apk/res/android"
android:key="edittext_screen"
android:title="第一组"
android:summary="点击进入第一组首选项"
>
<RingtonePreference
android:key="ringtonePreference"
android:summary="简要说明"
android:title="选择系统铃声"
android:ringtoneType="alarm"
android:showSilent="true"
>
</RingtonePreference>
</PreferenceCategory>
<!-- 第二组 -->
<PreferenceCategory
xmlns:android="http://schemas.android.com/apk/res/android"
android:key="edittext_screen"
android:title="第二组"
android:summary="点击进入第二组首选项"
>
<EditTextPreference
android:dialogTitle="输入您的名称:"
android:key="editTitlePreference"
android:summary="简要说明"
android:title="输入名称"
></EditTextPreference>
</PreferenceCategory>
<!-- 第三组 -->
<PreferenceCategory
xmlns:android="http://schemas.android.com/apk/res/android"
android:key="edittext_screen"
android:title="第三组"
android:summary="点击进入第三组首选项"
>
<EditTextPreference
android:dialogTitle="输入您的名称:"
android:key="editTitlePreference"
android:summary="简要说明"
android:title="输入名称"
></EditTextPreference>
</PreferenceCategory>
</PreferenceScreen>
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"
android:key="edittext_screen"
android:title="屏幕标题"
android:summary="屏幕简要说明"
>
<!-- 第一组 -->
<PreferenceCategory
xmlns:android="http://schemas.android.com/apk/res/android"
android:key="edittext_screen"
android:title="第一组"
android:summary="点击进入第一组首选项"
>
<RingtonePreference
android:key="ringtonePreference"
android:summary="简要说明"
android:title="选择系统铃声"
android:ringtoneType="alarm"
android:showSilent="true"
>
</RingtonePreference>
</PreferenceCategory>
<!-- 第二组 -->
<PreferenceCategory
xmlns:android="http://schemas.android.com/apk/res/android"
android:key="edittext_screen"
android:title="第二组"
android:summary="点击进入第二组首选项"
>
<EditTextPreference
android:dialogTitle="输入您的名称:"
android:key="editTitlePreference"
android:summary="简要说明"
android:title="输入名称"
></EditTextPreference>
</PreferenceCategory>
<!-- 第三组 -->
<PreferenceCategory
xmlns:android="http://schemas.android.com/apk/res/android"
android:key="edittext_screen"
android:title="第三组"
android:summary="点击进入第三组首选项"
>
<EditTextPreference
android:dialogTitle="输入您的名称:"
android:key="editTitlePreference"
android:summary="简要说明"
android:title="输入名称"
></EditTextPreference>
</PreferenceCategory>
</PreferenceScreen>
效果图可就大变样了:
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/chenzheng_java/archive/2011/03/29/6286195.aspx
[2] Preferences(3)EditTextPreference/RingtonePreference
来源: 互联网 发布时间: 2014-02-18
Preferences(三)EditTextPreference/RingtonePreference
代码:
------------------------------------------------
EditTextPreference:
效果图:
当我们点击主页面的输入名称时,就会弹出该对话框,让我们输入名称。
代码:
view plaincopy to clipboardprint?
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"
android:key="edittext_screen"
android:title="屏幕标题"
android:summary="屏幕简要说明"
>
<EditTextPreference
android:dialogTitle="输入您的名称:"
android:key="editTitlePreference"
android:summary="简要说明"
android:title="输入名称"
></EditTextPreference>
</PreferenceScreen>
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"
android:key="edittext_screen"
android:title="屏幕标题"
android:summary="屏幕简要说明"
>
<EditTextPreference
android:dialogTitle="输入您的名称:"
android:key="editTitlePreference"
android:summary="简要说明"
android:title="输入名称"
></EditTextPreference>
</PreferenceScreen>
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"
android:key="edittext_screen"
android:title="屏幕标题"
android:summary="屏幕简要说明"
>
<EditTextPreference
android:dialogTitle="输入您的名称:"
android:key="editTitlePreference"
android:summary="简要说明"
android:title="输入名称"
></EditTextPreference>
</PreferenceScreen>
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"
android:key="edittext_screen"
android:title="屏幕标题"
android:summary="屏幕简要说明"
>
<EditTextPreference
android:dialogTitle="输入您的名称:"
android:key="editTitlePreference"
android:summary="简要说明"
android:title="输入名称"
></EditTextPreference>
</PreferenceScreen>
-------------------------------
RingtonePreference:
效果图
代码:
view plaincopy to clipboardprint?
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"
android:key="edittext_screen"
android:title="屏幕标题"
android:summary="屏幕简要说明"
>
<!--
android:ringtoneType 设置响铃模式,主要包括ringtone、notification、alarm、all
android:showSilent 是否显示静音
注意,如果模拟器中没有铃声的话,我们可以自己添加。将音乐复制到SD卡上,然后转到android media player应用程序,选择该音乐,
单击menu,然后选择 uses as ringtone
-->
<RingtonePreference
android:key="ringtonePreference"
android:summary="简要说明"
android:title="选择系统铃声"
android:ringtoneType="alarm"
android:showSilent="true"
></RingtonePreference>
</PreferenceScreen>
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"
android:key="edittext_screen"
android:title="屏幕标题"
android:summary="屏幕简要说明"
>
<!--
android:ringtoneType 设置响铃模式,主要包括ringtone、notification、alarm、all
android:showSilent 是否显示静音
注意,如果模拟器中没有铃声的话,我们可以自己添加。将音乐复制到SD卡上,然后转到android media player应用程序,选择该音乐,
单击menu,然后选择 uses as ringtone
-->
<RingtonePreference
android:key="ringtonePreference"
android:summary="简要说明"
android:title="选择系统铃声"
android:ringtoneType="alarm"
android:showSilent="true"
></RingtonePreference>
</PreferenceScreen>
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"
android:key="edittext_screen"
android:title="屏幕标题"
android:summary="屏幕简要说明"
>
<!--
android:ringtoneType 设置响铃模式,主要包括ringtone、notification、alarm、all
android:showSilent 是否显示静音
注意,如果模拟器中没有铃声的话,我们可以自己添加。将音乐复制到SD卡上,然后转到android media player应用程序,选择该音乐,
单击menu,然后选择 uses as ringtone
-->
<RingtonePreference
android:key="ringtonePreference"
android:summary="简要说明"
android:title="选择系统铃声"
android:ringtoneType="alarm"
android:showSilent="true"
></RingtonePreference>
</PreferenceScreen>
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"
android:key="edittext_screen"
android:title="屏幕标题"
android:summary="屏幕简要说明"
>
<!--
android:ringtoneType 设置响铃模式,主要包括ringtone、notification、alarm、all
android:showSilent 是否显示静音
注意,如果模拟器中没有铃声的话,我们可以自己添加。将音乐复制到SD卡上,然后转到android media player应用程序,选择该音乐,
单击menu,然后选择 uses as ringtone
-->
<RingtonePreference
android:key="ringtonePreference"
android:summary="简要说明"
android:title="选择系统铃声"
android:ringtoneType="alarm"
android:showSilent="true"
></RingtonePreference>
</PreferenceScreen>
我们看看后台的xml中是如何存储的
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<string name="ringtonePreference">content://settings/system/alarm_alert</string>
<map>
<string name="ringtonePreference">content://settings/system/alarm_alert</string>
</map>
这里我们可要注意了哦,ringtonePreference的值是一个uri字符串。
这里我们可要注意了哦,ringtonePreference的值是一个uri字符串。
------------------------------------------------
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/chenzheng_java/archive/2011/03/29/6286115.aspx
[3] apk封装技巧
来源: 互联网 发布时间: 2014-02-18
apk打包技巧
apk文件,即Android application package文件。
每个要安装到Android平台的应用都要被编译打包为一个单独的文件,后缀名为.apk,其中包含了应用的二进制代码、资源、配置文件等。APK文件其实是zip格式,但后缀名被修改为apk,
在Android 系统安装时,APK 程序会被存放在系统默认的APP 目录中。
既然是一个Zip压缩包,那我们就不妨先解压出来看看其目录结构和内容,在我这我以NDK中的two-libs为例,以NDK为例,主要是要在本文中介绍SDK和NDK结合打包的方法。先看图:
其实这个目录结构与源代码的目录结构类似,接下来我们对比看看源代码(我用的是eclipse):
看见没有,几乎就是一样的!接下来挨个介绍下apk中个文件及目录的内容和作用吧,一下资料来源于网络和官方文档当然还有个人理解。
- AndroidManifest.xml 该文件是每个应用都必须定义和包含的,它描述了应用的名字、版本、权限、引用的库文件等等信息[ , ],如要把apk上传到Google Market上,也要对这个xml做一些配置。在apk中的AndroidManifest.xml是经过压缩的,可以通过AXMLPrinter2工具[ , ]解开,具体命令为:java -jar AXMLPrinter2.jar AndroidManifest.xml
-
META-INF目录
META-INF目录下存放的是签名信息,用来保证apk包的完整性和系统的安全。在eclipse编译生成一个apk包时,会对所有要打包的文件做一个校验计算,并把计算结果放在META-INF目录下。这就保证了apk包里的文件不能被随意替换。比如拿到一个apk包后,如果想要替换里面的一幅图片,一段代码, 或一段版权信息,想直接解压缩、替换再重新打包,基本是不可能的。如此一来就给病毒感染和恶意修改增加了难度,有助于保护系统的安全。 -
res目录
res目录存放资源文件。包括图片,字符串等等。 - lib目录 lib目录下的子目录armeabi存放的是一些so文件。这个地方多讲几句,都是在开发过程中摸索出来的。eclipse在打包的时候会根据文件名的命名规则(lib****.so)去打包so文件,开头和结尾必须分别为“lib”和“.so”,否则是不会打包到apk文件中的。其他非eclipse开发环境没有测试过。如果你是用SDK和NDK开发的话,这部分很重要,甚至可以通过把一些不是so文件的文件通过改名打包到apk中,具体能干些什么那就看你想干什么了,呵呵呵!
- assets目录 assets目录可以存放一些配置文件,这些文件的内容在程序运行过程中可以通过相关的API获得。具体的方法可以参考SDK中的例子:在sdk的 \SDK\1.6\android-sdk-windows-1.6_r1\platforms\android-1.6\samples\ApiDemos 例子中,有个com.example..android.apis.content 的例子,在这个例子中他把一个text文件放到工程的asset目录下,然后把这个txt当作普通文件处理。处理的过程在ReadAsset.java中。同理,asset也可以放置其他文件。
-
classes.dex文件
classes.dex是java源码编译后生成的java字节码文件。但由于Android使用的dalvik虚拟机与标准的java虚拟机是不兼容的,dex文件与class文件相比,不论是文件结构还是opcode都不一样。目前常见的java反编译工具都不能处理dex文件。Android模拟器中提供了一个dex文件的反编译工具,dexdump。用法为首先启动Android模拟器,把要查看的dex文件用adb push上传的模拟器中,然后通过adb shell登录,找到要查看的dex文件,执行dexdump xxx.dex。另,有人介绍到Dedexer是目前在网上能找到的唯一一个反编译dex文件的开源工具,需要自己编译源代码。 -
resources.arsc
编译后的二进制资源文件
最新技术文章: