Android基础入门1

来源:互联网 发布:大连华天软件 编辑:程序博客网 时间:2024/06/05 17:00
Android四大组件
Activity
Service
BroadcastReceiver
ContentProvider
Android UI
基本控件
自定义控件
布局
View容器
Fragment
Android多线程
Android网络开发
Android存储
SharedPreferences
SD卡外部存储
IO流
SQLite Database
Android动画
Android资源
Android国际化


Android版本与API对应关系
API  8   <==>  Android2.2
API  10  <==>  Android2.3.3
........................
API 19   <==>  Android4.4.2
API 23   <==>  Android6.0
API 24   <==>  Android7.0
API 25   <==>  Android7.1.1


Android Studio的安装


需要正确地安装JDK,注意版本,路径(无空格,无中文)


刚安装的Android Studio目录下的bin目录。找到idea.properties文件,在最后添加一句
disable.android.first.run=true


Android Studio是通过ADB服务连接你的设备。
ADB服务监听的5037端口




创建第一个Android项目
注意
1.主包名是用来唯一标识应用的,通常是公司域名的倒置。
2.选一个最小执行的SDK版本,为了保证应用的兼容性,尽可能降低此版本。


Android的设计采用代码与界面布局相分离的原则。
布局文件使用xml文件,独立设计。




配置IDE环境
1.主体样式
Settings→Appearance→Theme
2.字体调整
Settings→Editor→Colors & Fonts→Font (Scheme要另存才能编辑)


3.快捷键设置
Settings→Keymap
搜索Completion查找代码补全
代码提示设置不区分大小写
settings→editor→general→code completion


4.自动导包
Editor→General→Auto import


5.显示行号
Editor→General→Apearance


6.鼠标悬停显示文档
Editor→General→show quickly doc...




常用快捷键
Alt+/                 代码补全(自行修改为与Eclipse相同)
Ctrl+/                注释或取消注释
Ctrl+shift+/          块注释或取消注释
Ctrl+shift+F          代码格式化(需要关闭输入法)
Ctrl+D                删除一行
Ctrl+鼠标             到达定义处
Alt+Enter             错误提示修正列表




安装模拟器或真机设备
1.原生模拟器
有最新镜像支持,拥有最多的资源,但对老式电脑运行比较缓慢。
2.第三方模拟器
通常支持在线安装,有的甚至需要在线运行,特点是运行速度快。
3.真机设备
运行速度最快,并且是最真实的运行体验。针对于不同机型进行适配时需要很多款手机。


真机需要安装USB驱动,需要打开USB调试功能,运行程序时需要用户授权。




Android项目结构


manifests(项目清单)
项目的整体说明(AndroidManifest.xml)   Android系统的配置文件都是XML文件,使用标签描述对象。
单标签闭合
<TextView xxxxxxxxx属性 />
双标签闭合
<item>xxxxxxx</item>
java(源码)
所有的类
res(资源)
drawable
drawable对象
图片(BitmapDrawable)
mipmap
存入图片,性能在新版中优化加载
各分目录中存放不同分辨率的图片,文件名相同
layout
布局文件,是存放XML文件,布局里是指示如何摆放控件的配置文件
每个控件都是一个View对象
values
字符串,尺寸,颜色,主题风格等常量




在XML文件中的根节点必须有这个属性: xmlns:android="http://schemas.android.com/apk/res/android"
xmlns = xml namespace  取值固定为:http://schemas.android.com/apk/res/android
android是命名空间的名字,后面属性一般都带有android:前缀。


在字符串资源文件中,strings.xml
<string name="hello">Hello World!</string>


在布局文件中引用此资源@string/hello




Android中的颜色资源
#RGB      #F00
#RRGGBB   #FF0000代表红色
#ARGB     #FF00
#AARRGGBB


Android的量度单位
px 物理像素
dp/dip 与屏幕密度有关的相对像素。
在160dpi的屏幕上,1dp=1px  
在320dpi的屏幕上,1dp=2px
在480dpi的屏幕上,1dp=3px
mm
in 
pt   物理像素点
sp   常用于修饰字体,与屏幕密度有关的相对单位。




Android的资源全部经编译索引成一个ID号,存入在R.java文件中。
此文件是自动生成的,一般不允许查看,更不允许修改。
Android的资源ID分门别类地存放在R里面的各个内部类中。






Android命令行的使用
需要配置Path系统变量
SDK目录的tools、platform-tools两个子目录添加到PATH变量中


关闭adb服务 adb kill-server
启动adb服务 adb start-server
查询设备在线 adb devices
查询系统中安装的Android平台android list targets
查询系统中已经安装的模拟器android list avd
AVD(模拟器)所在位置是由环境变量ANDROID_SDK_HOME决定的
安装应用程序 adb install -r 应用程序.apk
例如:adb -s emulator-5554 install org.guandan_1.4_liqucn.com.apk
卸载apk包 adb uninstall apk包的主包名
登录Linux Shell    adb -s 192.168.112.101:5555 shell




界面布局
1.LinearLayout:线性布局

所有的控件都按照线性排列,有两个方向:水平方向、竖直方向


Android的布局管理


布局的作用
视图容器组件负责管理其子控件在屏幕中显示的位置和大小




LinearLayout:线性布局
所有的控件都按照线性排列,有两个方向:水平方向、竖直方向
几个需要注意的属性
layout_gravity:指控件自身相对于父容器的位置
gravity: 是指控件内部的内容相对于控件的边缘所处的位置
layout_weight:是指控件所占空间的比重


FrameLayout:框架布局
也叫层布局和帧布局,控件自动显示在父容器的左上角,后面的覆盖前面的。类似于Photoshop的图层。
添加id属性以便编程使用,方便在类中引用此对象,
比如: android:id="@+id/tv5"     @+id/名字   是让系统自动你所起的这个名字创建ID号。
属性margin是外边缘的边距,padding是内填充距离


RelativeLayout:相对布局
每个控件的位置是由其他控件或容器的相对位置决定的。这个布局是应用最广泛的。
将部分布局代码放在另外一个单独文件中,然后在使用的时候引用
布局之间可以使用<include layout="@layout/linearlayoutdemo" />包含不同的布局文件。


TableLayout:表格布局
使用TableRow表示一行,每个控件都是一列内容,表格布局最大的特点是列对齐。


AbsoluteLayout:绝对布局
使用绝对坐标来决定控件的显示位置,它不能灵活地适配各种屏幕,已经不推荐使用了。


GridLayout:网格布局
GridLayout是Android4.0新增加的网格布局管理器,类似于HTML中的table标签,每个控件都是一个单元格。
使用android:layout_gravity=“fill“   扩展组件






引用其他布局
使用<include layout="@layout/其他布局文件名" />
将两个或两个以上的布局组合起来。








如何去掉状态栏和标题栏,即全屏显示
如果直接继承自Activity类,则
   requestWindowFeature(Window.FEATURE_NO_TITLE);  //去标题栏
   getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);//去状态栏
   setContentView(R.layout.mylayout);
如果使用V7兼容包时,则
  supportRequestWindowFeature(Window.FEATURE_NO_TITLE);  //去标题栏
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.relativelayoutdemo2);




选图片作为界面背景:
1.图片的尺寸要合适。
2.背景图片与文字要有明显的对比。
3.长宽比例要协调。






Activity生命周期
Android没有入口方法,只有生命周期方法。Activity有7个生命周期方法。(可以结合图示来研究)
它是与用户交互的对象。


Activity的状态


Running
处于可见并且可交互的激活状态,即前端运行状态。
Paused
被另一个透明或者Dialog样式的Activity覆盖时的状态,是指部分遮挡。
Stopped
被另一个Activity覆盖、失去焦点并不可见状态,完全不可见。
killed
被系统杀死回收或者没有被启动时的状态




七个生命周期方法:


     protected void onCreate(Bundle savedInstanceState);


     protected void onStart();
     
     protected void onRestart();


     protected void onResume();


     protected void onPause();


     protected void onStop();


     protected void onDestroy();


Log调试
 Logcat通过android.util.Log类的静态方法来查找错误和打印系统日志消息。它是一个进行日志输出的API,我们在android程序中可以随时为某一对象插入一个Log,然后在DDMS中观察Logcat的输出是否正常。Android.util.Log常用的方法有以下5个:
Log.v
Log.d
Log.i
Log.w
Log.e
        分别对应VERBOSE\DEBUG\INFO\WARN\ERROR,当进行调试时,他们的区别并不大,只是显示颜色不同,可以控制要显示的某一类错误。






Android的事件响应


什么是事件监听器?
Android系统是以事件为驱动的,某种事件可以激活某段程序的执行。
事件监听器是一个实现了某种监听接口的类的对象
监听接口通常会在相关类的内部定义
给某个控件安装事件监听器,它就有了事件响应的能力


创建一个新的模块:
在Android Studio里面一个模块相当于Eclipse中的一个项目,它是独立运行一个单独的App。




创建新的Activity对象步骤:
创建布局文件
创建Activity类
重写onCreate方法
在onCreate方法中调用setContentView将布局加载
若想让此Activity成为启动界面:
在AndroidManifest.xml中注册此Activity类
在Activity标签中加上以下代码:


写一个新的Actitivy类,需要在Manifest文件中注册(Android的四大组件都要求注册才能使用)
        <activity android:name=".PageOne">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
以上代码可以保障此Activity是一个启动界面


事件监听器的实现方式
按钮的点击事件接口是View.OnClickListener


1.外部类实现事件监听器
2.内部类实现事件监听器
3.本类(Activity)实现事件监听器
4.匿名内部类对象实现事件监听器


另一种的事件处理(控件的onClick属性指定事件处理方法)


控件的onClick属性来指定事件处理的方法 
在Activity中创建这个方法
如果有多个控件都使用这个属性,并且都使用同一个事件处理方法
传入的View对象可以调用view.getId()使用ID号区分各控件



页面的跳转


引言:Android的三大组件(Activity、Service和BroadcastReceiver)之间调用需要一个Intent对象。Intent对象就是意图,告诉Android系统,我要如何操作。它可以用来传递信息,起到一个信使的作用。
页面的跳转需要建立第二个页面。
带数据的页面跳转,将第一页面中的数据在跳转的过程中由Intent对象携带到第二页面。


创建第二个页面:
1.创建布局文件。
2.创建Activity类,在onCreate方法中加载布局文件。
3.在Manifest配置文件中注册Activity类。


携带数据的页面跳转:
1)由Intent对象携带数据,传递给启动界面。


                Intent intent = new Intent(this,PageTwo.class);
                //携带数据的页面跳转
                //获取数据
                String name = txt1.getText().toString();
                String pwd = txt2.getText().toString();
                //装载数据
                intent.putExtra("username",name);
                intent.putExtra("password",pwd);


                startActivity(intent);


2)在第二页面中可以直接获取Intent对象,通过这个对象,取出数据。


        Intent intent = getIntent();
        String name = intent.getStringExtra("username");
        String pwd = intent.getStringExtra("password");


        displayView.setText("您好!"+name+"\n您的密码是:"+pwd);



带返回值的页面跳转
当跳转页面时调用startActivityForResult()
当使用startActivityForResult()方法跳转页面时,当调用完毕即跳转到的新的页面关闭时,回头再调用
protected void onActivityResult(int requestCode, int resultCode, Intent data)


Toast提示框的使用
Toast.makeText(this,"你关闭了第二个页面,现在返回第一个页面",Toast.LENGTH_SHORT).show();






Activity的四种启动模式


在Manifest文件中,<activity>标签的一个属性launchMode


standard:  这是默认的模式。各Activity压入任务栈中,可以无限多生成新的Activity对象,甚至允许自己跳转到自己页面。


singleTop:栈顶唯一,不允许自己跳转到自己,即在这种情况下,不会产生新的对象。


singleTask:任务栈唯一,当经过几轮跳转到自身页面时,如果发现任务栈中已经有了该类对象,不会再产生新的对象,而是直接将此对象提到栈顶,原先在其上的其他页面将全部被顶出(销毁)。


singleInstance:单实例模式,在整个任务栈中,只允许保留一个实例。如果发现了任务栈中已经有了该类对象,不会再产生新的对象,而是直接将此对象提到栈顶,原先在其上的其他页面对象将依次沉到栈的底部。



android.R -->SDK中提供的资源
D:\dev\Android\sdk\platforms\android-24\data\res\xxx\xxxx


如何从一个布局文件中获取布局容器对象?
答:需要使用一个LayoutInflater对象,将XML文件解析成View对象。
在Activity类中,可以直接调用getLayoutInflater()来获取LayoutInflater对象。
        LayoutInflater inflater = getLayoutInflater();
        GridLayout layout = (GridLayout) inflater.inflate(R.layout.gridlayout_demo,null);
注:第二个参数为null意味着获取的View对象不加入到任何容器中。


原创粉丝点击