参考资料:
郭霖大神的《第一行代码》,是很好的一本Android入门书籍 点击打开链接
PS:我是图书馆借的,提供的电子书资源来自CSDN,WORD和PDF都有,侵删
PPS:郭霖大神的新书也就是第一行代码的升级版第二行代码已经出了,更新了Android的版本,开发工具也从eclipse升级到了AS
一、
1.1 一个Android 工程的内容
src:放所有Java代码的地方
gen:R.java文件 不要手动修改
bin:编译过程文件
libs:第三方Jar包,目录下的Jar包会被自动添加到构建路径里
res:drawable--图片,含有各清晰度,如果只有一张,放在drawable-hdpi; layout--布局; values--字符串
*AndroidManifest.xml:配置文件,包括四大组件(Activity ;Service;Broadcast Receiver; Content Provider)
project.properties:指定SDK版本
AndroidManifest.xml文件里:
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<intent-filter>中间的表明是这个项目的主活动,即首先启动。字符串定义在res/values/string.xml里,然后在布局文件中引用。存在的用"@id(string、drawable)",自建的用"@+id"
二、活动
2.1 创建活动
在包里新建类,继承Activity,重写各种方法。
最基本的是OnCreate
public class ThirdActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.third_layout);
}
}
setContentView加载布局。
2.2 创建和加在布局
<Button
android:id="@+id/button_1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Button 1"
/>
match_parent代表和父元素同宽; wrap_content代表高度刚好包含内容就行
2.3 在AndroidManifest.xml中注册
<activity 标签 同上
2.4 隐藏标签
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.third_layout);
2.5 6 使用Tenu省略
2.7 销毁活动 finish()
2.8 Intent
显式:创建新的布局文件和活动,在AndroidManifest.xml中注册,然后在主活动中修改(按钮)事件:
Intent intent =new Intent(FirstActivity.this,SecondActivity.class);
startActivity(intent);
隐式:<action> 和 <category>的内容同时匹配
2.9 活动周期示意图:官方提供的图很容易理解
三、UI
UI这块前面比较简单,都是比较简单的复现。
一点笔记:
1.在多个活动中需要相同的布局的时候,为了避免代码的大量重复,可以引入布局:
新建一个title.xml布局文件,在主xml中加入
<include layout="@layout/title" />
2.在许多活动中需要相同功能的控件时,如返回键,避免代码重复可用创建自定义控件:
在包中新建一个类继承LinearLayout
public class TitleLayout extends LinearLayout {
public TitleLayout(Context context, AttributeSet attrs) {
super(context, attrs);
LayoutInflater.from(context).inflate(R.layout.title, this);
}
}
在布局文件中添加:
<com.example.uicustomviews.TitleLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
></com.example.uicustomviews.TitleLayout>
(包名字必须完整)
再设置控件功能(略),这样以后我们在每一个布局中引入这个类后,控件的功能就自动实现好了,提高了效率。
3. px--像素 pt--磅(1/72英寸),一般用于字体 这两个在 不同分辨率的手机里效果不同
dp(dip)--密度无关像素,密度即每英寸所包含像素数,getResources().getDisplayMetrics().xdpi得到
sp--可伸缩像素,类似dp,主要用于字体
4. SDK目录下./tools/draw9patch.bat文件可以制作Nine-Patch图片,在四个方向点黑点来控制拉伸和位置。
怎样让两个消息在同一个布局里呢?-用可见属性
在测试中手贱修改了项目的Build Path ->Order and Export页,把android.jar勾选了,结果编译没错,运行时会报错:
Conversion to Dalvik format failed with error 1
坑爹的是改完后忘记了。。clean也无效,后来各种查,发现是包重复问题,去掉勾选就好了,具体的情况还是不太懂,听说是ADT新版本的路径方法变了,存疑,继续研究。