android 学习随笔一(配置调试与基础)
一、基础与开发环境安装配置
- Memory Options: VM Heap表示每个应用所能占用的最大内存。
- Android 项目目录结构
- SRC java源码
- android.jar 导入jar才能使用android的api
- libs 第三方jar包
- assets 资源文件夹,存放音频视频等较大文件
- bin 编译打包后自动生成的文件
- RES 资源文件夹 drawable存放图片(ID 在R.java自动生成,通过ID调通,不用通过IO调用)文件名不能用数字和中文
- layout 布局文件
- menu 指定菜单样式
- values dimens 长度资源 string 字符串资源 styles 样式资源
- androidManifest.xml 清单文件或者配置文件
- package 应用的包名,唯一标识
- versioncode 版本号,系统看
- versionName 版本名字,给用户看
- application: icon 应用图标 label 应用标题
- activity:activity的使用必须在清单文件中配置 icon、label activity也可配置图标和标题,不配置默认使用application的
- intent-filter配置activity入口界面
- 11 properties 编译版本
- ADB android debut bridge 让android设备 和 eclipse建立连接 占用5037端口
- 建立环境变量 android 输入platform-tools和SDK\tools变量值,用;隔开,在PATH中添加android变量值
- netstat -ano 查看端口占用情况
- eclipse启动时devices.xml报错 不具有面有效性。它必须是来自枚举的值。Eclipse 打开时“发现了以元素'd:skin'”开头的无效内容。此处不应含有子元素
- 解决方法:将sdk的tools下的lib下的devices.xml复制粘贴到C:\Users\用户名\.android下。没有解决,然后用以下方案解决
- 解决方案:用/sdk/tools/lib/devices.xml去替换system-images\android-22\android-wear\x86\devices.xml和system-images\android-22\android-wear\armeabi-v7a\devices.xml中的devices.xml,这样就可以解决
- Eclipse 打开时“发现了以元素'd:skin'”开头的无效内容。此处不应含有子元素。
-
方法1: 在SDK Manager里删除Android-wear相关的image
-
方法2: 进入sdk目录下,把..\android-sdk\system-images\android-22\android-wear\armeabi-v7a\devices.xml和..\android-sdk\system-images\android-22\android-wear\x86\devices.xml文件删除,再把sdk里面..\android-sdk\tools\lib\下的devices.xml拷贝到上述两个文件夹里,重启eclipse即可
- No resource found that matches the given name 'android:TextAppearance.Material.Widget.Button.Inverse
- 在stackoverflow上的解释如下:http://stackoverflow.com/questions/32075498/error-retrieving-parent-for-item-no-resource-found-that-matches-the-given-name,但是查找了所有相关的版本设置没有发现任何问题。
- 最终与以前的版本比较发现是在gradle编译的配置文件中,原来使用的是 compile 'com.google.android.gms:play-services:6.5.87' 现在版本是compile 'com.google.android.gms:play-services:8.4.0'
- 新版本的play-services是在sdk 23下编译的。所以导致上述错误。
- 这个配置版本的变化是在升级Android Studio 2.0 后被自动更新的。所以引入了这个编译错误。检查所有的依赖Libraries,确保使用的是相同版本编译的就可以解决这个问题。
- 字体调整
- 窗口(Window)-首选项(Preferences)-常规(General)-外观(Appearence)-颜色与字体(Colors And Fonts),在右边的对话框里选择Java - Java Editor Text Font
- xml的字体大小调整: window--preferences--General--appearance--colors and fonts--Basic-- "Text font "
- This version of the rendering library is more recent than your version of ADT plug-in. Please update
预览layout.xml文件时提示:
This version of the rendering library is more recent than your version of ADT plug-in. Please update ADT plug-in
导致无法正常预览布局文件;
问题根源:SDK版本过高,ADT版本低;
解决办法有好几种,如下:
- Click Help > Install New Software. In the Work with field, enter: https://dl-ssl.google.com/android/eclipse/ Select Developer Tools / Android Development Tools. Click Next and complete the wizard.
- Change android version while rendering layout.
- Change the Target version to new updates you have. Otherwise, change what SDK version you have in the Android manifest file.
- android:minSdkVersion="8"
- android:targetSdkVersion="18"
-
eclipse代码自动提示设置、如何配置eclipse的代码自动提示功能?
打开 Eclipse -> Window -> Perferences -> Java -> Editor -> Content Assist,在右边最下面一栏找到 auto-Activation ,下面有三个选项,找到第二个“Auto activation triggers for Java:”选项
在其后的文本框中会看到一个“.”存在。这表示:只有输入“.”之后才会有代码提示和自动补全,我们要修改的地方就是这里。把该文本框中的“.”换掉,换成“abcdefghijklmnopqrstuvwxyz.”,这样,你在Eclipse里面写Java代码就可以做到按“abcdefghijklmnopqrstuvwxyz.”中的任意一个字符都会有代码提示。
二、开发
- v7-appcompat\res\values-v21\themes_base.xml:139: error: Error: No resource found that matches
- ADT和SDK升级为高版本后,appcompat-v7解压到了extras/android/support/v7/appcompat/libs文件夹下,其中的values-v21或者values-v23在低版本中无法匹配。
- 具体解决办法:
-
- 1、打开appcompat_v7的project.properties文件
- 2、将target sdk修改为当前更新的sdk版本
- 方法1:如我这里将“target=android-19"改为”target=android-23“
- 方法2:选中当前工程,右击Properties,选择Android,将Project Build Target中的Target选为Android6.0
- 3、刷新或clean或重启Eclipse,错误消除。
总结:关于values-v21 或v23以及其它资源未找到的错误,应该是adt版本与appcompat-v7和v4的版本不一致及target编号不一致产生。
- Button四种点击事件实现方法
- .setOnClickListener(new MyListener()); class MyListener implements OnClickListener{
- .setOnClickListener(new OnClickListener() {
- public class MainActivity extends ActionBarActivity implements OnClickListener .setOnClickListener(this);
- android:onClick="click" layout文件中定义
- 意图对象
- //1.创建意图对象 Intent intent = new Intent();
- //2.把动作封装至意图中 intent.setAction(intent.ACTION_CALL);
- //3.打电话打给谁 intent.setData(Uri.parse("tel:" + number));
- //4.告诉系统,我的动作 startActivity(intent);
- 发短信(直接使用发送短信的API,无需启用系统的短信应用,所以无需意图对象)
//直接使用发送短信的API,无需启用系统的短信应用
SmsManager sm = SmsManager.getDefault();
//把长短信截成若干段短信
ArrayList<String> sms = sm.divideMessage(content);
for(String string : sms)
{
sm.sendTextMessage(phone, null, string, null, null);
}
- 单位
- 字体:sp
- 长度:dp
- 基本不用px
- 布局方式
- 相对布局:RelativeLayout
-
- 组件可以重叠
- 所有组件默认位置:左对齐、顶部对齐
- layout_alignParent*:相对于父元素对齐
- layout_align*:相对于其他组件对齐
- layout_*:可以布局与其他组件的上下左右
- 线性布局:LinearLayout
- orientation:
- horizontal(默认)
- 左右对齐无效
- 顶部底部对齐有效
- 水平居中无效
- 竖直居中有效
- vertical
- 左右对齐有效
- 顶部底部对齐无效
- 水平居中有效
- 竖直居中无效
- horizontal(默认)
- gravity 当前控件内容显示位置
- layout_gravity 当前控件在父元素的位置
- layout_weight(权重)当前控件在父元素(线性布局weightSum,按方向分权重,weightSum属性如果没有,分的总权重为控件所占权重之和)中占N份,按 比例分配屏幕剩余空间( 没有实际尺寸占用的空间)
- visibible控制布局是否显示 visible显示 invisible不显示但占空间 gone隐藏
- orientation:
- 帧布局:FrameLayout
-
- 组件可以重叠
- 所有组件默认位置:左对齐、顶部对齐
- layout_gravity:对齐方式设置,相同的属性不能重复设置,设置到右边底部为:layout_gravity="right|bottom"
- 表格布局:TableLayout
-
- 一个TableRow节点是一行
- TableRow有几个子节点就有几列
- 宽高属性可以不设置
- 绝对布局:AbsoluteLayout(无法屏幕适配,所以基本不用)
- Debug
- 在最左边双击创建断点,点击Debug按钮进入调试模式
- 逐行调试F6,进入源码F7
- 常用快捷键
- ctrl + alt + up(down/right/left)快速复制
- ctrl + / 注释
- ctrl + d 删除
- ctrl + t 查看接口定义方法的具体实现