扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
一、用RelativeLayout进行纯代码布局的理论基础
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:主机域名、虚拟空间、营销软件、网站建设、君山网站维护、网站推广。
1、RelativeLayout,顾名思义,就是以“相对”位置/对齐 为基础的布局方式。
2、android.widget.RelativeLayout 有个继承自android.view.ViewGroup.LayoutParams 的内嵌类 LayoutParams,使用这个类的实例
调用RelativeLayout.addView 就可以实现“相对布局”。 android.widget.RelativeLayout.LayoutParams 有一个构造函数:
RelativeLayout.LayoutParams(int w, int h),参数指定了子 View 的宽度和高度,这一点和其父类是一样的。而实现相对布局的关
键在它的 两个 addRule 方法上。anchor 参数指定可以是View 的 id(“相对于谁”)、RelativeLayout.TRUE(启用某种对齐方式) 或者
是-1(应用于某些不需要 anchor 的 verb);AddRule 方法的 verb 参数指定相对的“动作”(以下常量均定义于
android.widget.RelativeLayout中,为了简便不给出其全名):
3、ALIGN_BOTTOM、ALIGN_LEFT、 ALIGN_RIGHT、 ALIGN_TOP: 本 View 的 底边/左边/右边/顶边 和 anchor 指定的 View 的
底边/左边/右边/顶边 对齐。
ALIGN_WITH_PARENT_BOTTOM 、ALIGN_WITH_PARENT_LEFT 、 ALIGN_WITH_PARENT_RIGHT 、
ALIGN_WITH_PARENT_TOP : 和上面一组常量类似,只不过不需要再指定 anchor, 其 anchor 自动为 Parent View。
CENTER_HORIZONTAL、CENTER_IN_PARENT 、CENTER_VERTICAL : 如果 anchor 为 TRUE,在 Parent 中 水平居中/水平
和垂直均居中/垂直居中。
POSITION_ABOVE 、POSITION_BELOW 、 POSITION_TO_LEFT 、POSITION_TO_RIGHT : 本 View 位于 anchor 指定的 View
的上边/下边/左边/右边。
二、案例
1、布局文件如下
?xml version="1.0" encoding="utf-8"?
RelativeLayout xmlns:android=""
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FFFFFF"
com.baidu.mapapi.map.MapView
android:id="@+id/baidu_map_view"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true"
/com.baidu.mapapi.map.MapView
RelativeLayout
android:id="@+id/anquan_map_l1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_marginRight="5dp"
android:layout_marginTop="10dp"
ImageButton
android:id="@+id/but_of_lukuang"
android:layout_width="38.0dip"
android:layout_height="38.0dip"
android:background="@drawable/main_map_button_bg"
android:src="@drawable/maptraffic_icon_off" /
ImageButton
android:id="@+id/btn_of_bobao"
android:layout_width="38.0dip"
android:layout_height="38.0dip"
android:layout_below="@id/but_of_lukuang"
android:layout_marginTop="5dp"
android:visibility="gone"
android:background="@drawable/main_map_button_bg"
android:src="@drawable/netfriend_bobao_n" /
ImageButton
android:id="@+id/btn_of_layer"
android:layout_width="38.0dip"
android:layout_height="38.0dip"
android:layout_below="@+id/btn_of_bobao"
android:layout_marginTop="5dp"
android:background="@drawable/main_map_button_bg"
android:src="@drawable/main_map_icon_layer" /
/RelativeLayout
/RelativeLayout
2、代码如下
//得到
mapButtonRL = (RelativeLayout) findViewById(R.id.anquan_map_l1);
RelativeLayout.LayoutParams lp1 = new RelativeLayout.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
lp1.addRule(RelativeLayout.BELOW, R.id.btn_of_layer);
showModeButton = new Button(this);
showModeButton.setText("全部显示");
showModeButton.setId(SHOW_MODE);
showModeButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
}
});
mapButtonRL.addView(showModeButton, lp1);
RelativeLayout.LayoutParams lp2 = new RelativeLayout.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
lp2.addRule(RelativeLayout.BELOW, SHOW_MODE);
positionButton = new Button(this);
positionButton.setText("位置");
positionButton.setId(POSITION);
positionButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
}
});
mapButtonRL.addView(positionButton, lp2);
1. 首先,得到Android 源代码(可参考之前的文章--如何获取Android源代码并编译.doc),并且编译,得到output file,在(Android source)/out目录下,也可通过别的途径获取Android source code (以androidsrc.tgz为例) 和别人编译好的 output file(out.tgz)
2. 解压缩这两个 tgz 文件,并把解压出来的out 目录放到 myandroid 目录下,如下图所示。
3. 拷贝 myandroid\development\ide\eclipse\.classpath 到 myandroid\.classpath.
4. 拷贝 myandroid\out\target\product\generic\*.img 到 {Android SDK}\tools\lib\images 并且覆盖源文件.
5. 运行{Android SDK}\tools目录下的 emulator.exe.
6. 运行{Android SDK}\tools目录下的 ddms.bat。你可以看到下面的窗口,里面会列出当前emulator里跑的进程:
7. 启动 eclipse ,按照这个步骤 File-New-Java Project (不是 Android Project!) -Create project from existing source 选到 myandroid 目录 .
8. 在经过长时间等待之后,Android source code将被导入project,正常情况下应该没有error,但是会有很多warning,如果有error后面的debug将不会成功,原因可能是output file ,out.tgz在解压得过程中出错,重新copy out.tgz,或者完整拷贝 out/ 目录到本地目录下,即可解决。
9. 选择想要调试的进程在 DDMS, 用 phone 进程为例,ddms一定要在eclipse之前启动,否则eclipse启动的时候也会启一个ddms,会造成冲突。
10. 在eclipse里, Run-Debug Configuration-Remote Java Application-New, 设置 Connection port to 8700 (DDMS’s 默认端口,你可以改变它).
11. 设置断点在source code,然后就可以像往常一样进行调试了。
*#*#4636#*#*
显示手机信息、电池信息、电池记录、使用统计数据、WiFi 信息
*#*#7780#*#*
重设为原厂设定,不会删除预设程序,及 SD 卡档案。
*2767*3855#
重设为原厂设定,会删除 SD 卡所有档案。
*#*#34971539 #*#*
显示相机相机韧体版本,或更新相机韧体
*#*#7594#*#*
当长按关机按钮时,会出现一个切换手机模式的窗口,包括:
静音模式、飞航模式及关机,你可以用以上代码,直接变成关机按钮。
*#*#273283*255*663282*#*#*
开启一个能让你备份媒体文件的地方,例如相片、声音及影片等
*#*#197328640#*#*
启动服务模式,可以测试手机部分设置及更改设定WLAN、GPS及蓝牙测试的代码
*#*#232339#*#*或*#*#526#*#*或*#*#528#*#*
WLAN 测试
*#*#232338#*#*
显示WiFi MAC地址
*#*#1472365#*#*
GPS 测试
*#*#1575#*#*
其它GPS测试
*#*#232331#*#*
蓝牙测试
*#*#232337#*#
显示蓝牙装置地址
*#*#8255#*#*
启动GTalk服务监视器 显示手机软件版本的代码
*#*#4986*2650468 #*#*
PDA、Phone、H/W、RFCallDate
*#*#1234#*#*
PDA及Phone
*#*#1111#*#*
FTA
SW 版本
*#*#2222#*#*
FTA HW 版本
*#*#44336#*#*
PDA、Phone、csc、build Time、anzhi.name、changelist
number
各项硬件测试
*#*#0283#*#*
Packet
Loopback
*#*#0*#*#*
LCD 测试
*#*#0673#*#*或*#*#0289#*#*
Melody
测试
*#*#0842#*#*
装置测试,例如振动、亮度
*#*#2663#*#*
触控屏幕版本
*#*#2664#*#*
触控屏幕测试
*#*#0588#*#*
接近感应器测试
*#*#3264#*#*
内存版本
ndroid系统源码都在网址下,其中那个系统app都在platform/packages/apps结构下。
在刚才的Git的shell命名行窗口中输入下面的命名:
git clone git://android.git.kernel.org/platform/packages/apps/Luancher2.git
你就可以在你的msysGit安装目录的git下(~\msysgit\msysgit\git)看到Luancher工程文件夹了。
然后打开~\msysgit\msysgit\git\Luancher2文件夹,就可以看到Android的Luancher系统源码工程了。
对于其他的app系统源码的获取方法和上述的Luancher相同,只是命名行后的参数不同。
git clone git://android.git.kernel.org/需下载源码的app所在的位置。
要自己写。
代码(code)是指一套转换信息的规则系统,例如将一个字母、单词、声音、图像或手势转换为另一种形式或表达,有时还会缩短或加密以便通过某种信道或存储媒体通信。 代码设计的原则包括唯一确定性、标准化和通用性、可扩充性与稳定性、便于识别与记忆、力求短小与格式统一以及容易修改等。 源代码是代码的分支,某种意义上来说,源代码相当于代码。 代码将言谈转化为视觉符号的写作扩大了跨越时间、空间的通信表达。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流