Android开发01
需要的工具:64位adt-bundle-windows(安卓官网有下,根据系统选择32位或者64位即可,androidstudio以后再用,先用这一款谷歌定制的eclipse,打开之后在主界面找到Android SDK Manager 可以下载对应的SDK不过谷歌服务器国内链接比较慢,不要急,旁边一个按钮是Android Virtual Device Manager安卓模拟器)
1,android开发环境的目录结构
1.1 build-tools 编译需要用到的工具
1.2 docs开发的离线文档(全英文,需要一定英语基础,看来要把英语学习排上日志了)
1.3 extras 额外的工具,模拟器加速器(intel处理器加速软件),向下兼容的jar包
1.4 platforms 开发需要的平台(环境),每个平台对应的android.jar在对应的文件夹中
1.5 platforms-tools 开发调试的工具,adb.exe 调试桥(可以看到当前连接的软件)
1.6 sources android.jar源代码
1.7 system-images 模拟器创建需要的镜像
1.8 temp 临时文件夹
1.9 tools 开发辅助需要用到的工具(模拟器)
2,常见屏幕(在创建模拟器的时候有一个选项是Device,里面选择的就是不同的屏幕)
2.1 VGA
过去的一种图形显示大小的规范 480*640(主要是注意它们不同的分辨率)
QVGA 240x320 缩小版VGA
HVGA 480x320 缩高版HVGA
WVGA 480x800 加高版WVGA
FWVGA 854x480 加强版FWVGA
3.ADB(比较重要)
adb:android debug bridge 安卓调试桥
常见指令
3.1 adb devices(只有当模拟器被启动了才能看到,并且会启动调试桥)
查看链接到电脑上的所有的手机设备。(模拟器,真实的手机)
3.2 adb kill-server(kill-server中间是没有空格的)
杀死adb的调试桥
3.3 adb start-server
重新启动adb的调试桥
3.4 adb install xxx.apk
把电脑上的一个文件安装到模拟器(真实的手机)
3.5 adb uninstall 应用程序的包名
从手机卸载一个应用,参数是应用程序的包名,DDMS,查看应用程序的包名
4.DDMS(切换成设备管理目录)dalvik debug manager system
5.android应用的目录结构
1. src文件夹,java源代码
onCreate()界面被开启调用的方法,程序启动的时候调用
//设置应用程序显示的ui布局
setContentView(R.layout.activity_main);
2. gen目录(这个文件夹是删不掉的,删了也会自动生成)
自动生成的文件夹 ,里面保存的是res资源文件的引用
3. android4.1.2 代表的是引用的jar包
4. libs文件夹
代码的三方jar包。会自动的被添加到dependencies目录下
5. android dependencies 开发依赖的jar包
6. bin
编译生成的临时文件和二进制文件(字节码文件)
7. res目录
- drawable-ldpi low 低分辨率 小图
- drawable-mdpi middle 中等分辨率
- drawable-hdpi high高分辨率
- drawable-xhdpi x加大高分辨率
- drawable-xxhdpi 加大再加大的分辨率
- layout 用xml文件编写的布局
- menu 菜单文件夹
8. AndroidManifest.xml
清单文件,配置应用程序的版本,图标,名称等重要信息。
##android应用开发的步骤(重点)
1. res-->layout文件夹 修改xml布局文件
2. src-->.java文件编写代码
3. 找到关心的控件
findViewById(R.id.xxx);
4. 设置点击事件,或者获取数据
5. 记得权限。
9.常见布局
9.1. 线性布局 LinearLayout
重要参数 朝向 orientation(方向): horizontal(横向),vertical(纵向)
weight 权重 控制控件在父窗体里面显示的比例。
9.2. 相对布局 RelateLayout
特点:已某个控件为参考,来放置其他控件的位置
给子节点提供了很多属性
layout_centerHorizontal (是否横向居中)
layout_centerVertical(是否纵向居中)
layout_centerInParent(是否页面居中)
layout_above (在对应id控件的上面,要注意仅仅是在上一行,并不一定纵向对齐)
layout_below(下方,同样没有纵向对齐)
layout_toLeft (左边,没有横向对齐)
layout_toRight(右边,没有横向对齐)
layout_alignParentTop(父窗口顶部)
layout_alignParentBottom (父窗口下方)
layout_alignParentLeft
layout_alignParentRight
layout_alignTop
layout_alignBottom
layout_alignLeft
layout_alignRight
9.3 帧布局 FrameLayout
> div 暂停的图标,显示在界面的中间。
一层覆盖一层,后面的可以覆盖前面的
9.4 表格布局 TableLayout
里面放<TableRow>标签,里面的子节点可以使用weight属性
9.5绝对布局 AbsoluteLayout
>废弃,不推荐使用。
>720p (1280×720)
1080P (1920X1080)
9.6点击事件的几种写法
1. 内部类实现onclickListener的接口
2. 匿名内部类实现onclickListener
3. 让当前的Activity实现onclickListener的接口
> 界面的按钮比较多,如果通过内部类或者匿名内部类代码比较臃肿。
4.在xml里面给button定义一个onclick属性,指向对应的方法名即可(参照js中的属性定义)
附上一个安卓中button练习的代码
//这是一个Activity 的实现类,代表app的控制中心
package com.zzx.onclick; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.Toast; public class MainActivity extends Activity implements OnClickListener{ private Button bt1; private Button bt2; private Button bt3; private Button bt4; private Button bt5; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //1,获取4个按钮 bt1 = (Button) findViewById(R.id.Button1); bt2 = (Button) findViewById(R.id.Button2); bt3 = (Button) findViewById(R.id.Button3); bt4 = (Button) findViewById(R.id.Button4); bt1.setOnClickListener(new MyOnclick()); //3,第二种方法,匿名内部类,new OnclickListener,但是按钮比较多就不方便 bt2.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Toast.makeText(MainActivity.this, "2222", 0).show(); } }); bt3.setOnClickListener(this); bt4.setOnClickListener(this); } //4,第三种方法,当前MainActivity继承OnClickListener类,重写方法,在方法内部做判断,判断是哪一个id @Override public void onClick(View v){ switch (v.getId()) { case R.id.Button3: Toast.makeText(MainActivity.this, "3333", 0).show(); break; case R.id.Button4: Toast.makeText(MainActivity.this, "4444", 0).show(); break; } } //5,第四种方法,在按钮标签内定义一个onclick属性,指向对应的方法名,类似js中的单击事件 public void click(View v){ Toast.makeText(MainActivity.this, "5555", 0).show(); } //2,第一种方法,创建自定义类,这个类要是内部类,才能用到this,实现OnclickListener接口 private class MyOnclick implements OnClickListener{ @Override public void onClick(View v){ Toast.makeText(MainActivity.this, "1111", 0).show(); } } }
//这里是xml文件,代表app主界面的布局
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <Button android:id="@+id/Button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:text="Button1" /> <Button android:id="@+id/Button3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:text="Button3" /> <Button android:id="@+id/Button4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_alignParentRight="true" android:text="Button4" /> <Button android:id="@+id/Button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:text="Button2" /> <Button android:id="@+id/button5" android:onClick="click" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/Button1" android:layout_marginTop="125dp" android:layout_toRightOf="@+id/Button1" android:text="Button" /> </RelativeLayout>