安卓APP开发基础

Posted 行稳方能走远

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了安卓APP开发基础相关的知识,希望对你有一定的参考价值。

安卓工程构建第一个APP运行

嵌入式学习安卓目的其实是为了掌握简单的安卓APP开发,最重要的目的并不是为了开发APP,而是为了了解APP开发的整个过程,方便为安卓开发工程师提供SDK包,也就是如何在手机APP上实现点灯等控制硬件的一系列操作。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
点击Finish,程序构建完毕。

如何启动这个程序?由于自带的模拟器启动较慢,我们先去下载夜神模拟器(或者mumu模拟器,我是用的这个),运行。

eclipse和夜神建立连接之前,需要配置adb的环境变量(因为我们要在Windows的命令行终端使用这个指令):
找到之前我们安装eclipse的路径,找到adb.exe,如下图所示
在这里插入图片描述
复制这个路径,打开Windows环境变量配置界面(右击我的电脑,属性,高级系统设置,环境变量)

在这里插入图片描述

eclipse和mumu模拟器建立连接命令:

adb connect 127.0.0.1:7555

连接成功:
在这里插入图片描述

运行,工程名字上右键,run as android appclication,发现mumu模拟器出现运行界面。
在这里插入图片描述

在这里插入图片描述

  1. 构建容易,包名不能包含中文
  2. 模拟器一般用夜神和mumu,eclipse和夜神建立连接adb connect 127.0.0.1:62001 (127.0.0.1是网络本地地址,也就是连接自己,夜神模拟器的端口号是62001,mumu模拟器端口号是7555)
  3. 连接失败要重启adb adb kill-server adb start-server
  4. 运行,工程名字上右键,run as android appclication

安卓的工程目录文件夹介绍

在这里插入图片描述

  • src: 存放java代码的,有包,有文件

  • gen: 存放自动生成的文件,关心里面的R.java,保存程序的页面,按键,文本等控件的ID,它是自己生成的
    在这里插入图片描述

  • Android:4.4: 存放安卓开发的一些库(UI、蓝牙等),供开发者调用
    在这里插入图片描述

  • asserts: 存放一些资源,配置文件,图片

  • bin: 编译后会生成的一些文件,包括我们关心的apk

  • libs: 依赖库

  • res:
    *drawable前缀:存放app程序要用到的一些图片(高分辨率、低分辨率等)
    在这里插入图片描述
    *layout: 存放布局文件的文件夹
    一般一个activity(安卓页面)对应一个布局(可以拖拽和编程实现界面布局,复杂界面最好采用编程方式,避免出现界面变形,QT也存在这个问题。)
    在这里插入图片描述
    在这里插入图片描述
    *values: 存放一些参数,或者自定义控件的文件

  • AndroidMainfirst.xml: APP的配置
    *权限:网络访问权限,名片夹访问权限,相机访问权限
    *目标机器SDK版本
    *APP的名字
    *APP的图标
    *配置第一个被加载,启动页面

安卓APP启动过程

Laucher(不断检测屏幕触摸)->Androidmanifirst.xml->lauch标签的activity被加载->oncreat被调用->java关联xml布局页面->显示->等待用户触摸等操作

详细参照博文:https://www.jianshu.com/p/4d199e96ec60

安卓布局控件

布局的种类

详见https://blog.csdn.net/wenzhi20102321/article/details/52677595
在这里插入图片描述

布局和页面的关系

显示一张美女图

将提前准备好的图片,选中复制,粘贴到下图目录下。添加一行代码,将图片成功添加到APP中。

在这里插入图片描述

activity_main.xml

<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:background="@drawable/bg"
    tools:context=".MainActivity" >

</RelativeLayout>

在这里插入图片描述

将别人的安卓工程源码导入到eclipse中的方法:
file->import->选中整个文件夹,如下图所示
这里是引用
打开后相应的代码:
在这里插入图片描述

显示两个美女

引入ID、below(指定ID位置下方)的使用方法。
布局关系:
在这里插入图片描述

activity_main.xml

<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"
    tools:context=".MainActivity" >
    
    
    <RelativeLayout 
        android:id="@+id/girl1"
        android:layout_width="match_parent"
        android:layout_height="400dp"
        android:background="@drawable/girl1"
        ></RelativeLayout>
    
    <RelativeLayout 
        android:layout_below="@id/girl1"
        android:layout_width="match_parent"
        android:layout_height="400dp"
        android:background="@drawable/girl2"
        ></RelativeLayout>

</RelativeLayout>

在这里插入图片描述

常用布局之相对布局

RelativeLayout中子控件常用属性:

  • 1、相对于父控件,例如:android:layout_alignParentTop=“true”
    android:layout_alignParentTop 控件的顶部与父控件的顶部对齐;
    android:layout_alignParentBottom 控件的底部与父控件的底部对齐;
    android:layout_alignParentLeft 控件的左部与父控件的左部对齐;
    android:layout_alignParentRight 控件的右部与父控件的右部对齐;

  • 2、相对给定Id控件,例如:android:layout_above=“@id/**”
    android:layout_above 控件的底部置于给定ID的控件之上;
    android:layout_below 控件的底部置于给定ID的控件之下;
    android:layout_toLeftOf 控件的右边缘与给定ID的控件左边缘对齐;
    android:layout_toRightOf 控件的左边缘与给定ID的控件右边缘对齐;
    android:layout_alignBaseline 控件的baseline与给定ID的baseline对齐;
    android:layout_alignTop 控件的顶部边缘与给定ID的顶部边缘对齐;
    android:layout_alignBottom 控件的底部边缘与给定ID的底部边缘对齐;
    android:layout_alignLeft 控件的左边缘与给定ID的左边缘对齐;
    android:layout_alignRight 控件的右边缘与给定ID的右边缘对齐;

  • 3、居中,例如:android:layout_centerInParent=“true”
    android:layout_centerHorizontal 水平居中;
    android:layout_centerVertical 垂直居中;
    android:layout_centerInParent 父控件的中央;

activity_main.xml

<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"
    tools:context=".MainActivity" >
    
    
      <RelativeLayout 
        android:id="@+id/girl2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/testpic32"
        android:layout_centerInParent="true"
        ></RelativeLayout>
      
     

</RelativeLayout>

基础控件之Button,TextView,EditText,ImageView, padding和margin(内外边框)

由于拖拽的方式产生的控件容易跑飞,这里我们采用代码的方式去生成控件。
内外边框参照博文:https://www.cnblogs.com/dongh/p/9584962.html
在这里插入图片描述

<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" >

 
    
    <RelativeLayout 
        android:layout_width="400dp"
        android:layout_height="150dp"
        android:layout_centerInParent="true"
        android:background="#ff0000"        
        >
        
       <ImageView 
       	android:id="@+id/image1"
        android:layout_width="30dp"
        android:layout_height="30dp"
        android:background="#ff0000"
        android:src="@drawable/user"
        android:layout_marginTop="30dp"
        />
        
        <TextView 
            android:layout_toRightOf="@id/image1"
            android:layout_alignBottom="@id/image1"
            android:layout_alignTop="@id/image1"
            android:layout_marginTop="10dp"
            android:id="@+id/user"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="用户"
            android:layout_marginLeft="20dp"
            android:layout_marginRight="10dp"
            android:textSize="20dp"
            android:textColor="#ffffff"
            />
        
        <EditText 
            android:id="@+id/ed1"
            android:layout_width="320dp"
            android:layout_height="40dp"
            android:layout_toRightOf="@id/user"
            />
        
        <TextView 
            android:id="@+id/passwd"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="密码"
            android:layout_marginLeft="20dp"
            android:layout_marginRight="10dp"
            android:layout_marginTop="20dp"
            
            android:textSize="20dp"
            android:layout_below="@id/user"
            android:textColor="#ffffff"
            />
        
         <EditText 
            android:id="@+id/ed2"
            android:layout_width="320dp"
            android:layout_height="40dp"
            android:layout_toRightOf="@id/user"
            android:layout_below="@id/ed1"
            />
         
 
         
           <Button 
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_alignParentRight="true"
             android:layout_marginRight="20dp"
             android:text="取消"
             android:id="@+id/btn2"
             android:layout_below="@id/ed2"
            
             />
        
           <Button 
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_marginRight="30dp"
             android:text="确定"
             android:id="@+id/btn1"
             android:layout_below="@id/ed2"
             android:layout_toLeftOf="@id/btn2"
            
             />
        
    </RelativeLayout>
    
    
</RelativeLayout>

在这里插入图片描述
在这里插入图片描述

相对布局综合小演练-智能家居刷卡界面

在这里插入图片描述

<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:background="@drawable/bg_shopping_menu"
    tools:context=".MainActivity" >

    <RelativeLayout 
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#00ff00"
        >
        
        <TextView 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="智能家居"
            android:textSize="25dp"
            android:layout_marginLeft="15dp"
            android:layout_marginTop="6dp"
            />
        
        <Button 
            android:id="@+id/zhuce"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="注册"
            android:layout_alignParentRight="true"
            android:layout_marginRight="20dp"
            />
        <Button 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="查询信息"
            android:layout_toLeftOf="@id/zhuce"
            />
        
        
    </RelativeLayout>
    
    
    
    <ImageView 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/pic_rf"
        android:layout_centerInParent="true"
        />
    
    <ImageView 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/card"
        android:layout_centerInParent="true"
        android:paddingLeft="120dp"
        />
   
    <Button 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/btn_selector"
        android:text="刷卡"
        android:layout_marginBottom="30dp"
        android:layout_centerHorizontal="true"
        android:layout_alignParentBottom="true"
        />

</RelativeLayout>

运行效果:
在这里插入图片描述

按键美化

方法:在drawable底下新建.xml文件(代码如下面博文中介绍),然后在主xml里面去引用这些美化的xml。
https://blog.csdn.net/tracydragonlxy/article/details/88552262
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

常用布局之线性布局

介绍

之前介绍的相对布局,自由拖拽控件时,摆放的位置是任意的,而线性布局在拖拽时,控件是不能任意放置的。只能在横线(默认)、竖线方向排列控件。

在这里插入图片描述

线性布局orientation、weight、gravity、divider属性

activity_main.xml

<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:background="@drawable/bg_shopping_menu"
    tools:context=".MainActivity" >

    <LinearLayout
        android:layout_width="400dp"
        android:layout_height="100dp"
        android:layout_centerInParent="true"
        android:orientation="horizontal" >

        <LinearLayout
            android:layout_width="0dp"
            安卓开发入门基础

零基础,怎么学习Android安卓APP的开发,需要学习哪些知识

C#用xamarin for VS开发安卓APP,应该学哪些基础的知识

Vcn studio 中文安卓开发工具源码

安卓开发教程 安卓开发怎么入门

hello Android -.gradle