前端开发者快速入门安卓开发(安卓嵌入式开发课程经验总结)

2023-11-02

1.安卓开发结构

安卓开发和前端有异曲同工之处,只是js换成了Java,它的界面层是xml格式的,布局全部放在layout下
在这里插入图片描述

2.xml

以layout为根标签节点,一般有linearlayout(线性布局)和RelativeLayout(相对布局)两种,线性布局有点像前端的flex伸缩布局,相对布局相当于position:relative;
layout有个属性android:orientation就是对齐方向,类似于flex-direction

    android:layout_width="match_parent"
    android:layout_height="match_parent"

这个是设置高度和宽度,match_parent相当于css里的100%,wrap_content就是不设置宽高,自适应内容的宽高

        android:layout_gravity="center"

gravity是设置对齐用的,叫重力也挺形象的,这个相当于前端的各种align

android:id="@+id/id名"

这个是用来标记id,不过这个id和前端略有区别,它这边不能用css所以这个id的作用主要是方便Java里动态绑定xml的内容,类似于前端中的dom操作。

android:layout_marginTop="10dp"

安卓开发也是border(边框)、margin(外边距)和padding(内边距),注意手机为了适应性好,一般使用dp作为单位

android:text="xxx"
android:textSize="20sp"
android:textColor="#00ccff"

text就是这个标签的文本内容,textsize就是前端的fontsize,textcolor就是前端的color

android:onClick="onClick"

就是@onclick点击调用java里的onclick函数。

3.java

Intent intent = new Intent(ChooseDifficulty.this,Main2Activity.class);
intent.putExtra("path", pathImage);
startActivity(intent);

intent有很多很多作用,可以调用图库等功能,但最主要的还是使用它作为页面跳转的工具,putExtra将参数传出去,最后必须要startactivity使intent执行。

@Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {}

特殊的intent可能会在startactivity时调用这个函数

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.getSupportActionBar().hide();//去掉绿顶
        setContentView(R.layout.activity_choose_difficulty);
        }

这里oncreate相当于vue中的create钩子,就是在界面运行前先进性这个函数经行赋值之类的初始化操作。setContentView是将Java和xml进行绑定。

使用xml的标签

开发过程中经常会绑定使用xml内容,使用前先要在java里定义一个,比如:

private Button mBtnDif1;

你要使用的标签是button你就定义button你要是用view你就定义view,

mBtnDif1 = (Button) findViewById(R.id.Dif1);

用findviewbyid函数经行绑定,因为这个函数的返回值是view,所以使用的时候要进行一次类型转换。后面的R.id后的Dif1就是标签的id名,R.id是固定格式。

mBtnDif1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {}
            }

这个是用来设置点击事件的监听器,一旦点击就会执行里面onclick被重写的代码

   Handler handler=new Handler(){
        @Override
        public void handleMessage(@NonNull Message msg) {

只要执行了handler.sendEmptyMessage()函数就会执行handle可以做到异步操作。

Bitmap

在我们这次的开发中我第一次遇到这个图片格式叫bitmap,这个格式可以按像素去分割图片,可以以坐标和长款去截取图片的一部分去显示,用createBitmap函数生成截取的部分图片。

Bitmap.createBitmap(bitmap(这个是原本大小的图), xValue(x坐标), yValue(y坐标),pieceWidth(宽度), pieceHeight(高度))

用setbitmap将bitmap设置入view里

view.setImageBitmap()

4.开发注意

1.安卓开发不同版本代码会有所差异,如果检查多次没有发现问题,可能就是安卓版本问题!
2.调用图库,文件管理,拍照等功能时,记得要让用户设置权限,不然无法打开。
例如我们开发拼图游戏时需要调用图库

 if (ContextCompat.checkSelfPermission(ChooseDifficulty.this, Manifest.permission.WRITE_EXTERNAL_STORAGE)!= PackageManager.PERMISSION_GRANTED){//判断用户是否已经授权
                    ActivityCompat.requestPermissions(ChooseDifficulty.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},1);//向用户申请授权。
                    。。。//代码
                }else {
					。。。//代码
				}

3.putextra里面传的值不能为空,空的话会报空指针错误。很多情况的空指针错误都是某些传参值为空导致的

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

前端开发者快速入门安卓开发(安卓嵌入式开发课程经验总结) 的相关文章

随机推荐

  • 基于已搭建的项目完成用户管理模块

    一 创建所需数据库并添加记录 二 将资料中的所需页面内容加载到项目当中的webapp目录下 三 在各包中创建相关的类及接口 1 实体类创建 UserInfo 实体类 映射数据库字段 字段建议一致 2 在dao层接口定义用户管理模块的增删改查
  • matlab不同数据类型的读取(加载)和保存(写入)策略

    本文侧重于提供保存和读取最佳策略 分析适用场景 matlab的具体语法可以通过doc或help查询详细文档及示例 持续更新中 cell 矩阵 等不同数据类型的matlab内部读取和python交互读取策略 matlab内部读取 通用读写函数
  • 决策树(信息熵、信息增溢、GINI)的计算

    如何构建决策树 我需要选择什么属性来度量 这里我们需要通过计算才能更好的构建一棵决策树 有以下二分类问题训练样本 outlook temperat humidity windy play sunny hot high FALSE no su
  • 错误: 尝试打开文件xxxx-1.0-SNAPSHOT.jar时出现意外错误

    错误 尝试打开文件xxxx 1 0 SNAPSHOT jar时出现意外错误 解决方法 1 请看 395条消息 Linux jar报错处理 Exception in thread main java lang No Error Invalid
  • 牛客网输入输出练习(python/C++)

    牛客网输入输出练习 ACM模式 python c 1 A B 输入无行数 python解答 c 解答 2 A B 给定行数的输入 python解答 c 解答 3 A B 指定条件结束 python解答 c 解答 4 A B 给定长度的数组求
  • 2017年学习计划

    1 掌握一个画项目结构图的工具 2 熟练掌握c c 语言 3 完成HomeLife的开发 4 掌握linux的基本使用
  • ubuntu: 查看CPU信息

    cat proc cpuinfo 如果有多块CPU 就会一并显示出来
  • 单片机IO模拟串口协议

    一 前言 嵌入式硬件平台调试中常用的debug方法是看串口打印定位问题 但有时候会遇到单片机没有串口外设或者串口引脚被占用的情况 这时候也可以在代码里操作空闲的IO输出不同个数的脉冲来达到调试的效果 但是要用逻辑分析仪抓线逐个看波形比较费劲
  • 几种常见数据库连接池的使用比较

    笔者曾经主持以及经历的几个产品及项目中 包括了各种数据库及应用服务器 基本上几种常见的数据库连接池都用到了 根据使用的情况把这些连接池比较一下吧 感觉在介绍之前有必要阐述一下连接池的几个概念 有助于后边一些文字的理解 最原始的数据库使用就是
  • 数据结构--C语言实现链式二叉树--详解

    文章目录 二叉树基本知识 相关术语 二叉树性质 二叉树遍历编辑 二叉树基本操作 一 结点定义 关于结构体名和结构体名是指针的定义区别 二 二叉树的创建 先序序列构造二叉树 三 先左后右的递归遍历算法 1 中序序列遍历二叉树 2 先序序列遍历
  • 解决控制台Could not resolve view with name ...

    看效果 关于 Could not resolve view with name xxx in servlet with name spring mvc 的解决方法 1 原因之一 没有写 ResponseBody RequestMapping
  • NETCore入门系列(目录)

    文章目录 NETCore入门系列 目录 相关资源 NETCore入门系列 目录 1 NETCore入门系列 NETCore读取配置文件 cshtml中文乱码 2 NETCore入门系列 读取appsetting json配置文件内容 3 N
  • 【学习笔记】李宏毅2020ML&DL课程 1_8 - 8_8 Attack ML model

    Attack ML model 2 8 攻击网络 即找一张图片 使得loss cross entropy loss 越大越好 此时网络的参数训练完了 要被冻住 不能改变 而是只改变输入 使我们找到这样一张图片 能够让结果 越错越好 离正确答
  • element admin从入门到精通

    1 官方文档 https panjiachen gitee io vue element admin site zh guide 2 下载安装 集成版本 选择i8n分支 进入中文版 git clone https github com cn
  • 【javaSE】 枚举与枚举的使用

    文章目录 枚举的背景及定义 枚举特性总结 枚举的使用 switch语句 常用方法 示例一 示例二 枚举优点缺点 枚举和反射 枚举是否可以通过反射 拿到实例对象呢 枚举总结 总结 枚举的背景及定义 枚举是在JDK1 5以后引入的 主要用途是
  • Android 解决“Could not resolve all artifacts for configuration ‘:classpath‘”报错问题

    在开发的过程中 同步代码的时候 突然出现这个报错信息 Caused by org gradle api internal artifacts ivyservice DefaultLenientConfiguration ArtifactRe
  • GAMES101课程学习笔记—Lec 10~12:Geometry 几何、隐式与显式、曲线与曲面、网格

    1 几何的表达方式 几何表达分为显式和隐式 1 1 隐式几何 举个例子 用空间中一个点来表示面 隐式的几何不会告诉我们这些点在哪里 而会告诉我们这些点满足的函数关系隐式的表达很难直接看出它的形状是什么 但是判断点的位置关系 在内在外在表面
  • PyQt主窗口、对话框

    PyQt的各类窗口 一 主窗口 QMainWindow 1 窗口样式 2 窗口模态 二 对话窗口 QDialog 1 消息窗口 QMessageBox 2 输入窗口 QInputDialog 3 字体窗口 QFontDialog 4 文件窗
  • python编程题题库及答案

    1 Python编程题怎么写 2 python编程问题 3 Python编程题求助 Python编程题怎么写 1 根据题意 头的总数为35 用变量head来记录头的总数 head 35 而腿的总数为94 用变量foot来记录腿的总数 foo
  • 前端开发者快速入门安卓开发(安卓嵌入式开发课程经验总结)

    目录 1 安卓开发结构 2 xml 3 java 使用xml的标签 Bitmap 4 开发注意 1 安卓开发结构 安卓开发和前端有异曲同工之处 只是js换成了Java 它的界面层是xml格式的 布局全部放在layout下 2 xml 以la