Android核心基础(快速入门)

Android核心基础(快速入门)

一、Android相关背景知识


二、Android系统体系结构

 Android的系统架构采用了分层的设计,分为四层,从低层到高层如下:

  • (内核层)Linux Kerner 内核  

      Android的核心系统服务依赖于Linux内核,如安全性,内存管理,进程管理,网络协议栈和驱动模型。

      Linux 内核也同时作为硬件和软件栈之间的抽象层。

  • (系统运行库层)Libraries 核心代码库   Android Runntime 运行时

       该层主要分为Libaries程序库和Android Runtime库

      1. 程序层

    Android 包含一些C/C++库,这些库能被Android 系统中不同的组件使用。

    它们通过Android 应用程序框架为开发者提供服务。以下是一些核心库:

    1.SurfaceManager:对显示子系统的管理,并且为多个应用程序提供了2D 和3D 图层的无缝融合。

    2.媒体库:该库支持多种常用的音频、视频格式回放和录制,同时支持静态图像文件,编码格式包括:MPEG4, H.264, MP3, AAC, AMR, JPG, PNG。

    3.SQLite: 一个对于所有应用程序可用,功能强劲的轻型关系型数据库引擎。

    4.OpenGL ES:该库可以使用硬件3D 加速(如果可用)或者使用高度优化的3D软加速。

    5.FreeType:位图(bitmap)和矢量(vector)字体显示。

    6.WebKit:一个最新的web浏览器引擎,支持Android浏览器和一个可嵌入的web视(WebView)。

    7.SGL:底层的2D 图形引擎

    8.SSL:SSL(Secure Sockets Layer 安全套接层),在传输层对网络连接进行加密,为网络通信提供安全及数据完整性的一种安全协议。

    9.Libc:一个标准C 系统函数库( libc )。
     
     2.Android Runtime 库

     1.Core Libraries:该核心库提供了Java 编程语言核心库的大多数功能。
    
     2.Dalvik Virtual Machine:每一个Android 应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik 虚拟机实例。
    
     3.Dalvik: 虚拟机依赖于linux 内核的一些功能,比如线程机制和底层内存管理机制。
    
  • (应用程序框架层)Application Framework 应用程序框架层

       Android 系统中的每个应用都依赖于该框架提供的一系列服务和系统,其中包括:

    1.活动管理器( Activity Manager) :用来管理应用程序生命周期并提供常用的导航回退功能。

    2.丰富而又可扩展的视图(Views):可以用来构建应用程序, 它包括列表(lists),网(grids)文本框(textboxes),按钮(buttons),甚至可嵌入的web 浏览器。

    3.内容提供器(Content Providers):使得应用程序可以访问另一个应用程序的数据(如联系人数据库),或者共享它们自己的数据。

    4.资源管理器(Resource Manager):提供非代码资源的访问,如本地字符串,图形,和布局文件( layoutfiles )。

    5.通知管理器(Notification Manager):使得应用程序可以在状态栏中显示自定义的提示信息。

  • (应用层)Application 应用程序层

       包括系统内置的应用和用户自己安装的应用,它们都是使用Java语言编写的。
      


三、Android工程目录结构

 1.❤src:Java源代码存放目录

 2.❤gen目录:自动生成的文件夹,里面保存的是res资源文件的引用。(✿ R.java、BuildConfig.java)

 3.assets文件夹:存放资源文件,这些资源文件会被原封不动的打包到apk中。

 4.bin目录:编写生成的临时文件或二进制文件

 5.Libs文件夹:代码的第三方Jar包,会自动的被添加到Android Dependencies目录下。

 6.❤res目录: 

             drawable-ldpi文件夹   low     存放低分辨率小图

             drawable-mdpi文件夹   middle  存放中等分辨率图片

             drawable-hdpi文件夹   high    存放高分辨率图片

             drawable-xhdpi文件夹          存放加大高分辨率图片

             drawable-xxhdpi文件夹         存放加加大高分辨率图片

             layout文件夹:存放XML文件编写的布局 ✿

             values文件夹:存放应用使用到的各种数据类型,不同的数据类型存放在不同文件中,

                          比如:

                              Strings.xml 定义字符串和数值

                              Colors.xml  定义颜色和颜色字符串数值

                              dimens.xml  定义尺寸数据

                              styles.xml  定义样式

   7.❤AndroidManifest.xml 项目清单文件:用来配置四大组件、声明权限,配置应用版本等参数

四、Android应用程序开发流程

1.创建项目,在Res目录下的layout文件下的activity_man.xml中编写布局

2.在src目录下的MaiActivity.java文件,编写代码findViewById()找到关心控件

3.设置业务逻辑 例如:按钮的点击事件处理

4.检查是否需要添加项目清单文件的权限


五、常见的布局方式

  • 线性布局LinearLayout

     是根据指定朝向orientation,水平Horizontal,或者垂直Vertical,方向排列的布局
    
     特点:可以给子控件按照权重weight属性分配空间
    
     ----------------------------
    
      设置布局里面容器的对齐方式
    
      android:gravity
    
      setGravity(int) 
    
     ----------------------------
    
      设置布局里面排列方式
    
      android:orientation 
    
      setOrientation
    
      horizontal 水平排列
    
      vertical 垂直排列
    
      ----------------------------
    
      注意事项:
    
      android:layout_gravity 子元素在LinearLayout里面的对齐方式
    
      android:layout_weight  子元素在LinearLayout里面所占有的权重
    
      -----------------------------
    
      说明:
    
      android:gravity  一般用在布局文件上面,表示布局文件里面的控件的显示效果
    
      android:layout_gravity 一般用在控件上面,只表示该控件的显示效果
    
      ----------------------------------
    
  • 相对布局RelativeLayout

     允许子元素指定它们相对于其父元素或兄弟元素的位置,这是实际布局中最常用的布局方式之一
    
     特点:以某个控件为参考,来放置其他控件的位置
    
     ---------------------------------------------
    
     android:layout_toRightOf 控制控件的 右侧
    
     android:layout_toLeftOf  控制控件的 左侧
    
     android:layout_above     控制控件的 上方
    
     android:layout_below     控制控件的 下方
    
     ---------------------------------------------
    
     android:layout_alignTop         控制控件的 上边界对齐
    
     android:layout_alignBottom      控制控件的 下边界对齐
    
     android:layout_alignLeft        控制控件的 左边界对齐
    
     android:layout_alignRight       控制控件的 右边界对齐
    
     ---------------------------------------------
    
     android:layout_centerHorizontal   控制是否位于  水平居中位置
    
     android:layout_centerVertical     控制是否位于  垂直居中位置
    
     android:layout_centerInParent     控制是否位于  中央位置
    
     android:layout_alignParentBottom  控制是否位于  底端对齐
    
     android:layout_alignPreantLeft    控制是否位于  左边对齐
    
     android:layout_alignPreantRight   控制是否位于  右边对齐
    
     android:layout_alignPreantTop     控制是否位于  顶端对齐
    
     ---------------------------------------------
    
  • 表格布局TableLayout(被GridView替代)

     里面放<TableRow>标签表示一行,里面的子节点可以使用weight属性
    
     注意:TableLayout 里面有个 TableRow用于行数的控制
    
     ------------------------------------------
    
      序列号从0开始,多个序列用逗号分隔
    
      android:collapseColumns="0"  隐藏的列 序列号
    
      android:shrinkColums ="1,2" 收缩的列
    
      android:stretchColums ="3"  拉伸的列
    
  • 帧布局FrameLayout

     可以理解为div盒子,一层覆盖一层,后面的可以覆盖前面的
    
     子节点可以用Layout_gravity属性,控制自己的位置,也可以用gravity
    
     控制子节点的内容显示位置,比如(TextView中文本显示的位置)
    
     android:foreground 设置帧布局容器的前景图像
    
     android:foregroundGravty 定义绘制前景图像的 gravity 属性
    
     ---------------------------------
    
     注意:
    
         android:width  控件的宽度
    
         android:heigth 控件的高度
    
         android:layout_width 控件里面内容的宽度
    
         android:layout_heigth 控件里面内容的高度
    
  • 绝对布局AbsoluteLayout(被Google废除)

     废弃,不推荐使用。在一些平板固定的屏幕上可能会使用到该布局。
    
     layout_x    该控件的X轴 坐标
    
     layout_y    该控件的Y轴 坐标
    
  • android:layout_gravity 与 android:gravity 的区别

       gravity 在初中物理当中是重力加速度g g=9.8N/kg (通常情况下:计算方便为10N/kg)
    
       android:layout_gravity 表示的是当前的View或者ViewGroup在 ViewGroup当中的位置
    
       android:gravity 表示的是当前的 View 或者 ViewGroup的内容所在的位置
    

控件属性解释:

 android:layout_width 或 android:layout_height属性有三个固定的常量值:

     wrap_content 包裹类型,控件内容有多大就尽量给分配多大的空间;

     match_parent 是填充父控件类型,使用该类型的控件尺寸跟父控件的尺寸保持一样大。

     fill_parent  是填充父控件类型,已经被废弃,使用match_parent代替;

     控件的尺寸除了这三种常量外还可以输入自定的尺寸


 android:id="@+id/et_num"属性是为了给每一个控件分配一个编号id,

 该id会记录在R类的子类id类中,这样方便于我们在代码中通过R.id 获取到控件的引用。

 “@”后面跟的“+”号意思是该id对应的值et_num需要新添加到R类中,而不是引用该值。
  • Button 按钮

    <Button
    android:id="@+id/bt_call"  //给控件起一个名字,供findViewById使用
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_centerHorizontal="true" //水平居中
    android:layout_centerVertical="true"   //垂直居中
    android:text="呼叫110" />
    
  • TextView 显示文本的控件

    <TextView 
    android:layout_width="300px"
    android:layout_height="300px"
    android:layout_gravity="center"
    android:background="#ff0000"   //背景颜色  />
    
  • ImageView 显示图片的控件

    <ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/qq"  //设置图片资源 />
    
  • EditText 文本输入框

    <EditText
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" />
    
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值