当前位置:   article > 正文

安卓开发学习笔记_安卓开发笔记

安卓开发笔记

安卓开发学习笔记

安卓开发基础知识篇

Android绪论

  • Android简介
    • Android
      • 操作系统、中间件、核心应用
      • 各种手机厂商的操作系统基于Android
      • 主流语言:Kotlin、Java
    • IOS
      • 开发语言:Objective-C、swift
  • Android系统架构
    • Application(第一层)
    • Application Framework(第二层)
    • Libraries | Android Runtime(第三层)
    • Linux Kernel(第四层)
  • Android应用领域
    • 设备:智能手机、平板、智能电视
    • Android Wear
  • Android环境搭建
    • Android Studio
      • JDK
      • SDK:软件开发工具包

第一个安卓程序

〇、内容大纲

  • 创建安卓应用程序
  • 安卓项目结构
  • 使用安卓模拟器
  • 运行安卓应用
  • HelloWorld扩展

一、创建安卓应用程序

  • Project与Module

    • Project——项目
    • Module——模块
    • 一个Project包括很多Module
  • 创建界面

    • Application Name不是项目名称,而是这个应用的名字。
    • 输入域名自动生成包名,包名不能输入中文。
  • Activity

    • 根据需要选择一些模板
  • 手机模拟器端可以看到预览效果,并且显示文字“Hello World!”

    • 我们并没有输入文字,这是怎么出现的呢?

    • 当我们在创建项目的时候会默认生成一个XML布局文件activity_main.xml

      这个XML文件存放在 res\layout 下。

      这个XML文件默认添加一段代码:

      <Textview
      	android:layout_width="match_parent"
      	android:layout_heizht="wrap_content"
      	android:text="Helle werld!"
      	android:id="@+id/textview" />
      
      • 1
      • 2
      • 3
      • 4
      • 5

二、安卓项目结构

  • 一些图标的讲解
    • 安卓图标,显示安卓开发中常用的工程文件(建议使用的结构)
      外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    • 项目图标,显示整个项目中的所有工程文件
      外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    • –下列以安卓结构为例分析各个节点的含义–

    • manifests,第一个节点,显示安卓的全局描述文件
      外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    • java,第二个节点,显示java的源代码文件
      外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    • res,第三个节点,显示一些资源文件
      外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

      常用的布局文件,一些图片资源文件等等

    • Gradle Scripts 节点,与安卓应用源代码没有关系
      外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • manifests 节点
    • 一般只存在一个XML全局描述文件
      外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    • AndroidManifest.xml XML文件内容

      <?xml version="1.0" encoding="utf-8"?>
      <manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.example.myfirstapplication">
      
          <application
              android:allowBackup="true"
              android:icon="@mipmap/ic_launcher"
              android:label="@string/app_name"
              android:roundIcon="@mipmap/ic_launcher_round"
              android:supportsRtl="true"
              android:theme="@style/Theme.MyFirstApplication">
              <activity
                  android:name=".MainActivity"
                  android:exported="true"
                  android:label="@string/app_name"
                  android:theme="@style/Theme.MyFirstApplication.NoActionBar">
                  <intent-filter>
                      <action android:name="android.intent.action.MAIN" />
      
                      <category android:name="android.intent.category.LAUNCHER" />
                  </intent-filter>
              </activity>
          </application>
      
      </manifest>
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
      • 24
      • 25
    • AndroidManifest.xml XML文件内容解释

      前三行自动生成,可以不用管。

      application 标签,用来配置整个应用的属性。

      application 标签包含一些 activity 标签,用来配置项目中所应用的 activity

      一般情况下只默认创建一个 MainActivity

      intent-filter 标签用来将所在 activity 配置为应用程序的入口。

      例如在如上xml描述中,当程序运行时,会从被 intent-filter 标记的 MainActivity 进入。

  • java 节点
    • 主要用于显示安卓应用当中所有的包和安卓源文件。
    • onCreate方法很重要。
    • 很重要的一个不可以修改的 R 文件,通过索引引用这个资源。
    • 当我们创建应用时,如果出现了生成 R 文件失败的情况,我们对项目进行清理就可以成功解决这个bug。
  • res 节点
    • 用来显示保存在该节点下的资源文件。
      外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    • drawable 目录:一般用来放置图片文件。

      9 Patch 文件

    • layout 目录:存储安卓程序当中的布局文件。

      外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 用于控制布局显示什么内容。

    • mipmap 目录:主要是保存项目中应用的启动图标。

三、使用安卓模拟器

  • 模拟手机或者平板等安卓操作系统设备的模拟器。

  • 通过 AVD 作为窗口操作模拟器。

四、运行安卓应用

  • 模拟器运行
    • 启动模拟器
    • 运行程序
  • 手机运行

五、HelloWorld扩展

01 案例分析
  • 实例:编写开心消消乐的开始游戏界面
    image-20220320192435302 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 界面分析

    • ① 文本框组件
    • ②、③ 按钮组件
02 实战演示
  • 第一步:创建新模块

    • Application name:开心消消乐

    • Module name:自动生成,但是要改成汉语拼音

    • 可能会有的错误提示
      Irushd package name: Paekoge segments rmast be of non-zero longth

      修改包名,将最后的 . 删去。

    • 选择空模板

  • 第二步:module创建成功,进行修改

    • 打开布局文件 activity_main.xml
      image-20220320194033803
    • 将代码中的 Hello World 修改为 开心消消乐
    • 然后切换到 Design 视图,手动拖动文本框到水平居中位置。
    • 接下来添加按钮,在设计视图的面板中找到按钮组件,将其拖动到屏幕当中。
    • 在右侧工具栏修改按钮的文字内容。
      外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

用户界面设计基础

〇、内容大纲

  • UI设计相关的概念
  • 控制UI界面
  • 布局管理器

一、UI设计相关的概念

00 UI设计相关的概念
  • 什么是UI设计?
    • UI 即用户界面。
    • UI设计即用户界面设计。
  • 重要的两个概念
    • View
    • ViewGroup
  • 安卓 UI 组件的层次结构
    • 所有的界面都是由 View 类或者 ViewGroup 类以及它们的子类组合而成。
01 View
  • 可以理解为视图。

  • 占据屏幕中的一块矩形区域,负责提供组件绘制和事件处理的方法。

    image-20220320195530727
  • View类位于android.view包中;View类的子类一般都位于android.widget包中。

  • View 类常用属性:在API文档中寻找

    • android:id ,用于为组件设置一个唯一的标识。
    • android:background 设置背景,图片或者颜色值。
    • android:padding 用于设置内边距。
      外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
02 ViewGroup
  • 容器
    image-20220320200454110
  • ViewGroup控制其子组件分布时依赖的内部类
    • ViewGroup.LayoutParams类
    • ViewGroup.MarginLayoutParams类
  • ViewGroup.LayoutParams类
    • 控制布局的高度和宽度
    • android:layout _height,android:layout_width
  • ViewGroup.MarginLayoutParams类
    • 控制子组件的外边距
      image-20220320200734264

二、控制UI界面

  • 选择控制UI界面的方法

    ​ (1) 使用XML布局控制UI界面 (推荐)

    ​ (2) 在Java代码中控制UI界面

    ​ (3) 使用XML和Java代码混合控制混合UI界面

    ​ (4) 开发自定义的View

  • 使用XML布局控制UI界面

    • 即将控制布局界面的代码写在XML文件当中。

    • 方法步骤

      ​ (1) 在Android应用的res/layout目录下编写XML布局文件。

      ​ (2) 在Activity中使用以下Java代码显示XML文件中布局的内容。
      setContentView(R.layout.activity_main); activity_main 表示布局页面的名称。

    • 方法步骤的两步一般会自动生成。

  • 实例:使用XML布局文件实现游戏的开始界面

    • 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    • 创建新模块。

    • 将准备好的背景图片复制到 res\mipmap 目录中。

    • 修改布局文件 activity_main.xml

      ​ (1) 修改布局管理器:将布局管理器修改为帧布局管理器 FrameLayout。

      ​ (2) 设置背景属性,添加图片。

    • 设置文本框的内容、大小、颜色。

      设置内容使用字符串变量来实现。

    • 在 MainActivity.java 中引用布局文件。

三、布局管理器

00 布局管理器
  • 什么是布局管理器?
    • 用于控制是怎样摆放的。
  • 常用的布局管理器
    • 相对布局管理器:RelativeLayout
    • 线性布局管理器:LinearLayout
    • 帧布局管理器:FrameLayout
    • 表格布局管理器:TableLayout
    • 绝对布局管理器:AbsoluteLayout(高版本已过期)
    • 网格布局管理器:GridLayout
01 相对布局管理器
(1) 基础知识
  • 参考点

    • 需要以哪个组件作为参考点,别的组件相对参考点组件进行摆放。
  • 案例

    image-20220320224845245 image-20220320225127633
  • 通过 RelativeLayout 标签定义相对布局管理器

    • xmlns:android 和 xmlns:tools ,默认如此,写法一致。
    • android:layout_width:用于设置布局宽度。
    • android:layout_height:用于设置布局高度。
    • android:paddingXXX:用于设置内边距。
    • android:gravity:用于设置布局管理器当中各子组件的摆放方式。
    • android:ignoreGravity:用于指定哪些组件不受android:gravity属性影响。
  • 补充提供的属性:ReLativeLayout.LayoutParams

    • 指定组件相对于参考点位置的四个属性

      ​ (1) android:layout_above

      ​ (2) android: layout_below

      ​ (3) android: layout_toLeftof

      ​ (4) android: layout_toRightof

    • 设置组件与布局管理器哪边对齐(布尔类型)

      ​ (1) android: layeut_alignParentBottom

      ​ (2) android: layout__alignParentLeft

      ​ (3) android: layout_alignParentRight

      ​ (4) android: iayout_alignParentTop

    • 设置组件与哪个组件的边界对齐

      ​ (1) android: layout_alignBottom

      ​ (2) android: layout_alignLeft

      ​ (3) android: layout_alignRight

      ​ (4) android: layout_alignTop

    • 设置组件位于布局管理器的哪个位置

      ​ (1) android: layout_centerHorizontal

      ​ (2) android: layout_centerInParent

      ​ (3) android: layout_centerverticai

(1) 实战演示
  • 应用相对布局实现软件更新提示页面。
  • 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡

安卓开发实践笔记

//+++添加部分+++

    @Override
    public void onClick(View v) {
        switch (v.getId()){
                // v.getId()获得当前组件的id值
            case R.id.myClick:
                myClick(v);
                break;
            case R.id.sure:
                btnOperateList(v);
                break;
            case R.id.write:
                btnEditList(v);
                break;
        }
    }

    private void initData(Cursor cursor){
        mDatas.clear();
        while(cursor.moveToNext()){
            DataBean dataBean = new DataBean(cursor.getString(cursor.getColumnIndex("_id")), cursor.getString(cursor.getColumnIndex("name")), cursor.getString(cursor.getColumnIndex("tel")),cursor.getString(cursor.getColumnIndex("groupName")));
            mDatas.add(dataBean);
        }
    }


    /**
     * 编辑、取消编辑
     * @param view
     */
    public void btnEditList(View view) {

        mAdapter.flage = !mAdapter.flage;

        if (mAdapter.flage) {
            write.setText("取消");
            title.setText("批量删除");
            sure.setVisibility(View.VISIBLE);

        } else {
            write.setText("编辑");
            title.setText("通讯录");
            sure.setVisibility(View.GONE);
        }
        mAdapter.notifyDataSetChanged();
    }



    /**
     * 删除选中数据
     * @param view
     */
    public void btnOperateList(View view) {
        if (mAdapter.flage) {

            for (int i = 0; i < mDatas.size(); i++) {
                if (mDatas.get(i).isCheck) {
                    dbHelper.del(Integer.parseInt(mDatas.get(i).id));
                }
            }
            Cursor cursor=dbHelper.query();
            initData(cursor);
            mAdapter = new MyAdapter(MainActivity.this, mDatas);
            MainActivity.this.listView.setAdapter(mAdapter);
            mAdapter.flage=true;
            btnEditList(view);
        }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/685815
推荐阅读
相关标签
  

闽ICP备14008679号