Android 4.4拨号,短信,联系人源码修改(一)
2015-01-02 00:58
225 查看
转载请注明出处:周木水的CSDN博客 http://blog.csdn.net/zhoumushui
我的GitHub:周木水的GitHub https://github.com/zhoumushui
最近部门没什么大的需求要改,就让我们改一下Android 4.4的拨号器,联系人以及短信源码。以微信电话本为蓝本,进行布局定制和功能完善。我主要负责拨号模块,涉及拨号面板,通话记录和通话详情这几个修改点。到今天差不多已经完成,下面总结一下过程中遇到的一些问题以及解决步骤:
相应模块实现功能:
①通话记录:运营商显示,ListView条目向右滑动拨号、向左滑动发短信,相同联系人记录合并,
②通话详情:号码归属地显示,联系人标星收藏,加入黑名单来电拦截,显示联系人头像,发送名片,通话记录显示最近5条,超过5条显示More按钮,点击可查看全部记录
======================================================================================================
1.将服务器目录挂载到本地:
[plain]
view plaincopyprint?
sshfs zhoumushui@168.168.0.55:../zhoumushui localcode/
2.源码布局分析
res/layout/diapad.xml
包括数字1-9,0,*,#以及对应英文字母。
res/layout/diapad_key.xml
数字0-9的,*,#,字母的属性,大小和颜色
res/layout/dialpad_fragment.xml
包括拨号面板的号码输入框,退格。下面链接dialpad.xml。下面是通话记录,拨号键,overflow menu
res/layout/dialtacts_activity.xml
打开拨号的默认界面,未呼出dialpad
res/layout/phone_no_favorites.xml
文字提示“您收藏的联系人和经常通话的……”,“所有联系人”按钮
res/layout/call_log_fragment.xml
通话记录的过滤查看(全部,来电,去电,未接)按钮
res/layout/call_log_list_item.xml
(拨号首页)通话记录具体条目内容:头像QuickPhoto,名字Name,标签Label,通话类型call_type,通话时长和日期call_count_and_date,secondary_action_icon,
res/layout/call_detail.xml
通话详情界面,包括main_action_push_layer,header_text,main_action,call_and_sms_action等。
res/layout/mtk_dialer_search_item_view.xml
拨号界面输入号码后,页面上端匹配联系人条目的布局文件,包括qucik_contact_photo, name, labelAndNumber等。
res/menu/call_log_options.xml
通话记录列表actionBar上的操作按钮:选择资源,删除。
com/android/dialer/PhoneCallDetailsView.java
显示通话记录条目的具体内容:包括name,callTyepe,callTypeIcons,call_count_and_date,label
3.编译命令
整体编译:
[plain]
view plaincopyprint?
./mk -t -l=*** -o=TARGET_BUILD_VARIANT=*** n
-t表示打印出编译log信息
模块编译:
[plain]
view plaincopyprint?
./mk -t mm packages/apps/Dialer
输出文件夹:
[plain]
view plaincopyprint?
out/target/product/***/system/priv-app/Dialer.apk
4.adb的一些操作
[java]
view plaincopyprint?
adb push xxxx.apk /system/app 将应用程序的apk文件push到手机中
adb install xxxx.apk 安装app
adb install -r ~/Dialer.apk //-r 表示强制安装
5.".9.png"图片原理和制作
左侧和上方的黑线交叉的部分即可扩展区域
右侧和下方的黑线交叉的部分即内容显示区域(如做button背景图时,button上文字的显示区域)
6.让Android4.0以上机器的虚拟按键中显示menu键
在Activity的onCreate中设置flag:
[java]
view plaincopyprint?
getWindow().setFlags(WindowManager.LayoutParams.FLAG_NEEDS_MENU_KEY,WindowManager.LayoutParams.FLAG_NEEDS_MENU_KEY);
7.Visibility的三种属性
1) 可见(visible)
XML文件:android:visibility="visible"
Java代码:view.setVisibility(View.VISIBLE);
2) 不可见(invisible)
XML文件:android:visibility="invisible"
Java代码:view.setVisibility(View.INVISIBLE);
3) 隐藏(GONE)
XML文件:android:visibility="gone"
Java代码:view.setVisibility(View.GONE);
8.去掉ListView的分割线
去掉分割线,把divider的颜色设为透明就行:android:divider="#00000000"
点击之后不让被点击项变成橘黄色:android:listSelector="#00000000"
9.setClickable,setFocusable
setClickable()控制按钮是否可以被点击和点击之后触发监听器事件。
setFocusable()控制键盘是否可以获得这个按钮的焦点。
10.寻找文件中关键字
[java]
view plaincopyprint?
find -name "*.java" | xargs grep -n
"ic_phone_dk"// 寻找代码文件中的关键字
find -name "*.xml" | xargs grep -n
"ic-phone_dk"// 寻找布局文件中的关键字
11.去掉Activity间的跳转动画
①在values文件夹的styles.xml文件里面新建一个style
[html]
view plaincopyprint?
<style
name="AlexNoAniTheme"
parent="android:Theme">
<item
name="android:windowAnimationStyle">@style/noAnimation</item>
<item
name="android:windowNoTitle">true</item></style>
<style
name="noAnimation">
<item
name="android:activityOpenEnterAnimation">@null</item>
<item
name="android:activityOpenExitAnimation">@null</item>
<item
name="android:activityCloseEnterAnimation">@null</item>
<item
name="android:activityCloseExitAnimation">@null</item>
<item
name="android:taskOpenEnterAnimation">@null</item>
<item
name="android:taskOpenExitAnimation">@null</item>
<item
name="android:taskCloseEnterAnimation">@null</item>
<item
name="android:taskCloseExitAnimation">@null</item>
<item
name="android:taskToFrontEnterAnimation">@null</item>
<item
name="android:taskToFrontExitAnimation">@null</item>
<item
name="android:taskToBackEnterAnimation">@null</item>
<item
name="android:taskToBackExitAnimation">@null</item></style>
②在AndroidManifest.xml中修改相应Activity的theme
[html]
view plaincopyprint?
<activity
android:name=".HomeActivity"
android:label="@string/app_name"
android:theme="@style/AlexNoAniTheme">
或者将 <item name="android:windowAnimationStyle">@style/noAnimation</item>加入Activity原来的theme
我的GitHub:周木水的GitHub https://github.com/zhoumushui
最近部门没什么大的需求要改,就让我们改一下Android 4.4的拨号器,联系人以及短信源码。以微信电话本为蓝本,进行布局定制和功能完善。我主要负责拨号模块,涉及拨号面板,通话记录和通话详情这几个修改点。到今天差不多已经完成,下面总结一下过程中遇到的一些问题以及解决步骤:
相应模块实现功能:
①通话记录:运营商显示,ListView条目向右滑动拨号、向左滑动发短信,相同联系人记录合并,
②通话详情:号码归属地显示,联系人标星收藏,加入黑名单来电拦截,显示联系人头像,发送名片,通话记录显示最近5条,超过5条显示More按钮,点击可查看全部记录
======================================================================================================
1.将服务器目录挂载到本地:
[plain]
view plaincopyprint?
sshfs zhoumushui@168.168.0.55:../zhoumushui localcode/
sshfs zhoumushui@168.168.0.55:../zhoumushui localcode/
2.源码布局分析
res/layout/diapad.xml
包括数字1-9,0,*,#以及对应英文字母。
res/layout/diapad_key.xml
数字0-9的,*,#,字母的属性,大小和颜色
res/layout/dialpad_fragment.xml
包括拨号面板的号码输入框,退格。下面链接dialpad.xml。下面是通话记录,拨号键,overflow menu
res/layout/dialtacts_activity.xml
打开拨号的默认界面,未呼出dialpad
res/layout/phone_no_favorites.xml
文字提示“您收藏的联系人和经常通话的……”,“所有联系人”按钮
res/layout/call_log_fragment.xml
通话记录的过滤查看(全部,来电,去电,未接)按钮
res/layout/call_log_list_item.xml
(拨号首页)通话记录具体条目内容:头像QuickPhoto,名字Name,标签Label,通话类型call_type,通话时长和日期call_count_and_date,secondary_action_icon,
res/layout/call_detail.xml
通话详情界面,包括main_action_push_layer,header_text,main_action,call_and_sms_action等。
res/layout/mtk_dialer_search_item_view.xml
拨号界面输入号码后,页面上端匹配联系人条目的布局文件,包括qucik_contact_photo, name, labelAndNumber等。
res/menu/call_log_options.xml
通话记录列表actionBar上的操作按钮:选择资源,删除。
com/android/dialer/PhoneCallDetailsView.java
显示通话记录条目的具体内容:包括name,callTyepe,callTypeIcons,call_count_and_date,label
3.编译命令
整体编译:
[plain]
view plaincopyprint?
./mk -t -l=*** -o=TARGET_BUILD_VARIANT=*** n
./mk -t -l=*** -o=TARGET_BUILD_VARIANT=*** n
-t表示打印出编译log信息
模块编译:
[plain]
view plaincopyprint?
./mk -t mm packages/apps/Dialer
./mk -t mm packages/apps/Dialer
输出文件夹:
[plain]
view plaincopyprint?
out/target/product/***/system/priv-app/Dialer.apk
out/target/product/***/system/priv-app/Dialer.apk
4.adb的一些操作
[java]
view plaincopyprint?
adb push xxxx.apk /system/app 将应用程序的apk文件push到手机中
adb install xxxx.apk 安装app
adb install -r ~/Dialer.apk //-r 表示强制安装
adb push xxxx.apk /system/app 将应用程序的apk文件push到手机中 adb install xxxx.apk 安装app adb install -r ~/Dialer.apk //-r 表示强制安装
5.".9.png"图片原理和制作
左侧和上方的黑线交叉的部分即可扩展区域
右侧和下方的黑线交叉的部分即内容显示区域(如做button背景图时,button上文字的显示区域)
6.让Android4.0以上机器的虚拟按键中显示menu键
在Activity的onCreate中设置flag:
[java]
view plaincopyprint?
getWindow().setFlags(WindowManager.LayoutParams.FLAG_NEEDS_MENU_KEY,WindowManager.LayoutParams.FLAG_NEEDS_MENU_KEY);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_NEEDS_MENU_KEY,WindowManager.LayoutParams.FLAG_NEEDS_MENU_KEY);
7.Visibility的三种属性
1) 可见(visible)
XML文件:android:visibility="visible"
Java代码:view.setVisibility(View.VISIBLE);
2) 不可见(invisible)
XML文件:android:visibility="invisible"
Java代码:view.setVisibility(View.INVISIBLE);
3) 隐藏(GONE)
XML文件:android:visibility="gone"
Java代码:view.setVisibility(View.GONE);
8.去掉ListView的分割线
去掉分割线,把divider的颜色设为透明就行:android:divider="#00000000"
点击之后不让被点击项变成橘黄色:android:listSelector="#00000000"
9.setClickable,setFocusable
setClickable()控制按钮是否可以被点击和点击之后触发监听器事件。
setFocusable()控制键盘是否可以获得这个按钮的焦点。
10.寻找文件中关键字
[java]
view plaincopyprint?
find -name "*.java" | xargs grep -n
"ic_phone_dk"// 寻找代码文件中的关键字
find -name "*.xml" | xargs grep -n
"ic-phone_dk"// 寻找布局文件中的关键字
find -name "*.java" | xargs grep -n "ic_phone_dk"// 寻找代码文件中的关键字 find -name "*.xml" | xargs grep -n "ic-phone_dk"// 寻找布局文件中的关键字
11.去掉Activity间的跳转动画
①在values文件夹的styles.xml文件里面新建一个style
[html]
view plaincopyprint?
<style
name="AlexNoAniTheme"
parent="android:Theme">
<item
name="android:windowAnimationStyle">@style/noAnimation</item>
<item
name="android:windowNoTitle">true</item></style>
<style
name="noAnimation">
<item
name="android:activityOpenEnterAnimation">@null</item>
<item
name="android:activityOpenExitAnimation">@null</item>
<item
name="android:activityCloseEnterAnimation">@null</item>
<item
name="android:activityCloseExitAnimation">@null</item>
<item
name="android:taskOpenEnterAnimation">@null</item>
<item
name="android:taskOpenExitAnimation">@null</item>
<item
name="android:taskCloseEnterAnimation">@null</item>
<item
name="android:taskCloseExitAnimation">@null</item>
<item
name="android:taskToFrontEnterAnimation">@null</item>
<item
name="android:taskToFrontExitAnimation">@null</item>
<item
name="android:taskToBackEnterAnimation">@null</item>
<item
name="android:taskToBackExitAnimation">@null</item></style>
<style name="AlexNoAniTheme" parent="android:Theme"> <item name="android:windowAnimationStyle">@style/noAnimation</item> <item name="android:windowNoTitle">true</item></style> <style name="noAnimation"> <item name="android:activityOpenEnterAnimation">@null</item> <item name="android:activityOpenExitAnimation">@null</item> <item name="android:activityCloseEnterAnimation">@null</item> <item name="android:activityCloseExitAnimation">@null</item> <item name="android:taskOpenEnterAnimation">@null</item> <item name="android:taskOpenExitAnimation">@null</item> <item name="android:taskCloseEnterAnimation">@null</item> <item name="android:taskCloseExitAnimation">@null</item> <item name="android:taskToFrontEnterAnimation">@null</item> <item name="android:taskToFrontExitAnimation">@null</item> <item name="android:taskToBackEnterAnimation">@null</item> <item name="android:taskToBackExitAnimation">@null</item></style>
②在AndroidManifest.xml中修改相应Activity的theme
[html]
view plaincopyprint?
<activity
android:name=".HomeActivity"
android:label="@string/app_name"
android:theme="@style/AlexNoAniTheme">
<activity android:name=".HomeActivity" android:label="@string/app_name" android:theme="@style/AlexNoAniTheme">
或者将 <item name="android:windowAnimationStyle">@style/noAnimation</item>加入Activity原来的theme
相关文章推荐
- android 在新建短信时,加入名称为","(英文逗号)的联系人时,应用崩溃的修改
- android 在新建短信时,加入名称为","(英文逗号)的联系人时,应用崩溃的修改
- android 在新建短信时,加入名称为","(英文逗号)的联系人时,应用崩溃的修改
- android4.0.4源码修改监控短信发送信息
- Android手机联系人源码(添加联系人页面一个功能)修改
- android短信选择收件人时,号码搜索联系人修改成任意位置开始中间匹配
- android源码开发之短信选择联系人时选择邮箱地址无作用
- Android短信功能实现源码
- Android源码分析--CDMA短信状态报告
- android修改系统源码(重新编译源码)
- Android真机调试自动点亮屏幕(基于CyanogenMod源码修改)
- Android源码中修改默认语言 及 定制多语言
- Android源码主题修改提示
- android用html5源放视修改源码的思路
- Android Contacts(二)—— SMS 短信 与 Contacts 联系人关联
- Android Contacts(二)—— SMS 短信 与 Contacts 联系人关联
- Android 系统自带的发送短信的界面源码
- android群发短信到通讯录所有联系人上并动态替换其中联系人信息
- 调用Android(Froyo)中Contacts的数据库,实现联系人与分组的增删改查--附效果图及源码
- 修改Android源码导致的找不到符号的问题