Android基本概念及控件

Android是Google公司基于Linux平台开发的主要应用于智能手机及平板电脑的操作系统。

ART模式与Dalvik模式最大的不同在于:在启用ART模式后,系统在安装应用程序的时候会进行一次预编译,并先将代码转换为机器语言存储在本地,这样在运行程序时就不会每次都进行一次编译,执行效率也大大提升。
布局资源(调用java代码并注册)

setContentView(R.layout.id);

字符串资源 

getResources().getString(R.string.id)

 

  1. Dalvik虚拟机属于Android系统架构中的哪一层?(. 核心类库层  )
  2. Android中短信、联系人管理、浏览器等属于Android系统架构中的哪一层?( 应用程序层 )

Android体系结构【每层有什么】

1.应用程序层(application)是一个核心应用程序的集合,所有安装在手机上的应用程序都属于这一层。

2.应用程序框架层(application framework)主要提供了构建应用程序时用到的各种API。

3.核心类库(libraries)包含了系统库及Android运行时库(Android runtime)

4.Linux内核层(Linux kernel)为Android设备的各种硬件提供底层驱动。

Dalvik虚拟机

Android通过Dalvik虚拟机运行JAVA程序。其指令集基于寄存器架构,通过执行特有的dex文件来实现对象生命周期管理、堆栈管理线程管理安全异常管理、垃圾回收等重要功能。
每一个Android应用程序在底层都会对应一个独立的 Dalvik虚拟机实例,其代码在虚拟机的解释下得以执行。Dalvik虚拟机编译文件的过程如图1-4所示。

在图1-4中,Java 源代码经过JDK编译器编译成class文件之后,Dalvik 虚拟机中的Dx工具会将部分class文件转换成dex 又I千(dex 文件包含多个类)。为了在运行过程中进一步提高性能,dex文件还会进一步优化为odex 文件。
需要注意的是,每个Android 应用程序都运行在一个Dalvik虚拟机实例中,而每一个Dalvik虚拟机实例都是一个独立的进程空间,每个进程之间可以通信。Dalvik 虚拟机的线程机制、内存分配和管理等都是依赖底层操作系统实现的。


控件

1.TextView

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="@color/black"
        android:textSize="30sp"
        android:gravity="center"
        android:textStyle="italic"
        android:text="显示内容斜体"/>

</LinearLayout>

2.EditText

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/te2">
    <EditText
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:hint="请输入密码"
        android:textColorHint="@color/black"
        android:password="true"
        />
</LinearLayout>

 

3.ImageView

4.Button

三种点击方式

①布局文件中指定onClick属性的值

在Activity中实现方法名须一致。 

    <Button
        android:id="@+id/btn1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="firstway"
        android:onClick="click"/>

//Activity中

public class te2 extends AppCompatActivity {
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.te2);
        Button button = findViewById(R.id.btn1);
    }
    public void click(View view){
        Toast.makeText(te2.this,"hello",2000).show();
    }
}

②匿名内部类

    <Button
        android:id="@+id/btn2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="secondway"
        />

//Activity中设置监听器
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.te2);
        Button button = findViewById(R.id.btn2);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Toast.makeText(te2.this,"2rd",3000).show();
            }
        });
    }

③使用Activity实现OnClickListener接口

public class te2 extends AppCompatActivity implements View.OnClickListener{
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.te2);
       Button button1 = findViewById(R.id.btn1);
        Button button2 = findViewById(R.id.btn2);
        button1.setOnClickListener(this);
        button2.setOnClickListener(this);
    }
    public void onClick(View view){
        if(view.getId()==R.id.btn1)
            Toast.makeText(te2.this,"我是1",2000).show();
        if (view.getId()==R.id.btn2)
            Toast.makeText(te2.this,"我是2",2000).show();
}
}

5.RadioButton 单选

监听:isChecked判断是否选中

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
  >
    <RadioGroup
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/radio"
        >
        <RadioButton
            android:id="@+id/girl"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="女"/>
        <RadioButton
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="男"/>
    </RadioGroup>
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:textSize="20sp"
        android:id="@+id/tv"/>

</LinearLayout>
public class RudioButton extends AppCompatActivity {
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_rudio_button);

        // 找到RadioGroup和TextView的实例
        RadioGroup radioGroup = findViewById(R.id.radio);
        TextView tv = findViewById(R.id.tv);

        // 在radioGroup实例上设置监听器
        radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                if (checkedId == R.id.girl) {
                    tv.setText("女生");
                } else {
                    tv.setText("男生");
                }
            }
        });
    }
}

6.CheckBox多选

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <CheckBox
        android:id="@+id/badminton"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="羽毛球"
    />
    <CheckBox
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/basketball"
        android:text="篮球"/>
    <CheckBox
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/pingpang"
        android:text="乒乓"/>
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/hobby"
        android:textSize="30sp"/>
</LinearLayout>
package com.example.bok;

import android.os.Bundle;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.TextView;

import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;



public class hobby extends AppCompatActivity implements CompoundButton.OnCheckedChangeListener {
    private TextView hobby;
    private String hobbys ;
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.checkbox);
        CheckBox checkBox1 = findViewById(R.id.badminton);
        CheckBox checkBox2 =findViewById(R.id.basketball);
        CheckBox checkBox3 =findViewById(R.id.pingpang);
        checkBox1.setOnCheckedChangeListener(this);
        checkBox2.setOnCheckedChangeListener(this);
        checkBox3.setOnCheckedChangeListener(this);
        hobby=findViewById(R.id.hobby);
        hobbys = new String();
    }

    @Override
    public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
        String motion = compoundButton.getText().toString();

        if (b)
        {
            if(!hobbys.contains(motion)){
                hobbys=hobbys+motion;
                hobby.setText(hobbys);
            }}
            else {
                if(hobbys.contains(motion)){
                    hobbys=hobbys.replace(motion,"");
                    hobby.setText(hobbys);
                }
            }
        }
    }

7. ListView 列表+纵向滚动

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/924028.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【JavaEE初阶 — 网络编程】Socket 套接字 & UDP数据报套接字编程

1. Socket套接字 1.1 概念 Socket 套接字&#xff0c;是由系统提供用于网络通信的技术&#xff0c;是基于TCP / IP协议的网络通信的基本操作单元。基于 Socket 套接字的网络程序开发就是网络编程。 1.2 分类 Socket套接字主要针对传输层协议划分为如下三类&#x…

Leecode刷题C语言之交替组②

执行结果:通过 执行用时和内存消耗如下&#xff1a; 代码如下&#xff1a; int numberOfAlternatingGroups(int* colors, int colorsSize, int k) {int res 0, cnt 1;for (int i -k 2; i < colorsSize; i) {if (colors[(i colorsSize) % colorsSize] ! colors[(i - …

科技惊艳:RFID技术引领被装物联网信息化革新

被装物联网信息化监控系统是一项错综复杂却成效斐然的解决方案&#xff0c;它巧妙地将物联网技术的先进性与装设备资源管理的实际需求相融合&#xff0c;实现了对被装设备资源的即时追踪、智能化调控以及资源的最优化配置。以下是对被装物联网的深度剖析与高端解读&#xff1a;…

360推出全新的生成式 AI 搜索产品:纳米搜索,要重塑搜索产品

【大力财经】直击互联网最前线&#xff1a;360 集团在 2024 年 11 月 27 日开发布会&#xff0c;重磅推出了一款全新的生成式 AI 搜索产品——纳米搜索&#xff0c;并且已经上架到苹果 App Store 以及应用宝等安卓应用商店&#xff0c;直接与百度、阿里夸克、秘塔 AI、Perplexi…

Android Deep Links 深度链接解析

在实现 Android 应用链接之前&#xff0c;请务必了解您可以在 Android 应用中创建的不同类型的链接&#xff1a;深层链接、网页链接和 Android 应用链接。 Android Deep Links 深度链接解析 一、什么是Deep Links&#xff1f;二、Deep Links的优势三、Deep Links的实现方式1. …

setter方法注入(Java EE 学习笔记07)

属性setter方法注入是Spring最主流的注入方法&#xff0c;这种注入方法简单、直观&#xff0c;它是在被注入的类中声明一个setter方法&#xff0c;通过setter方法的参数注入对应的值。 案例&#xff1a; ① 创建User2实体&#xff0c;配置setter方法 package com.lq.entities…

英语知识网站:Spring Boot技术构建

6系统测试 6.1概念和意义 测试的定义&#xff1a;程序测试是为了发现错误而执行程序的过程。测试(Testing)的任务与目的可以描述为&#xff1a; 目的&#xff1a;发现程序的错误&#xff1b; 任务&#xff1a;通过在计算机上执行程序&#xff0c;暴露程序中潜在的错误。 另一个…

2025蓝桥杯(单片机)备赛--扩展外设之UART1的原理与应用(十二)

一、串口1的实现原理 a.查看STC15F2K60S2数据手册: 串口一在590页&#xff0c;此款单片机有两个串口。 串口1相关寄存器&#xff1a; SCON:串行控制寄存器&#xff08;可位寻址&#xff09; SCON寄存器说明&#xff1a; 需要PCON寄存器的SMOD0/PCON.6为0&#xff0c;使SM0和SM…

利用Python爬取12306网站车次信息

前言 随着互联网技术的发展,网络爬虫成为了获取公开数据的强大工具之一。对于经常需要查询火车票信息的人来说,能够自己编写一个爬虫程序来自动获取并整理这些信息,无疑是一个非常实用的技能。本文将详细介绍如何使用Python爬取12306网站上的车次信息,包括获取站点对应城市…

React Hooks中use的细节

文档 useState useState如果是以函数作为参数&#xff0c;那要求是一个纯函数&#xff0c;不接受任何参数&#xff0c;同时需要一个任意类型的返回值作为初始值。 useState可以传入任何类型的参数作为初始值&#xff0c;当以一个函数作为参数进行传入的时候需要注意&#xff…

2024 TIP 论文 robust-ref-seg 复现过程

本篇是 2024 年 TIP 论文 Toward Robust Referring Image Segmentation 的复现过程。 特点是对不存在的目标不会进行错误分割&#xff0c;鲁棒性较高&#xff0c;其结果如图&#xff1a; 配置环境 根据论文给出的链接 robust-ref-seg 配置环境。 下载数据集 按照 README 指…

数据结构(初阶6)---二叉树(遍历——递归的艺术)(详解)

二叉树的遍历与练习 一.二叉树的基本遍历形式1.前序遍历(深度优先遍历)2.中序遍历(深度优先遍历)3.后序遍历(深度优先遍历)4.层序遍历&#xff01;&#xff01;(广度优先遍历) 二.二叉树的leetcode小练习1.判断平衡二叉树1&#xff09;正常解法2&#xff09;优化解法 2.对称二叉…

k8s集群增加nfs-subdir-external-provisioner存储类

文章目录 前言一、版本信息二、本机安装nfs组件包三、下载nfs-subdir-external-provisioner配置文件并进行配置1.下载文件2.修改配置 三、进行部署备注&#xff1a;关于镜像无法拉取问题的处理 前言 手里的一台服务器搭建一个单点的k8s集群&#xff0c;然后在本机上使用nfs-su…

C++ For Hot100

数组&#xff1a;数组是存放在连续内存空间上的相同类型数据的集合。 1. 两数之和 - 力扣&#xff08;LeetCode&#xff09; class Solution { public:vector<int> twoSum(vector<int>& nums, int target) {vector<int> v;for(int i 0;i<nums.size…

高校宿舍节能用电现状及智慧监管平台构建

0 引言 在节能减排的大背景下&#xff0c;高校通过精细化宿舍用电管理&#xff0c;提升师生的节能节电意识等举措&#xff0c;能够显著提高电能资源的使用效率&#xff0c;并有效预防火灾等安全事故&#xff0c;确保师生的人身安全。因此&#xff0c;当前亟需加强对智慧监管平…

Spring Boot英语知识网站:开发策略

5系统详细实现 5.1 管理员模块的实现 5.1.1 用户信息管理 英语知识应用网站的系统管理员可以对用户信息添加修改删除以及查询操作。具体界面的展示如图5.1所示。 图5.1 用户信息管理界面 5.1.2 在线学习管理 系统管理员可以对在线学习信息进行添加&#xff0c;修改&#xff0…

Jmeter中的前置处理器

5&#xff09;前置处理器 1--JSR223 PreProcessor 功能特点 自定义数据处理&#xff1a;使用脚本语言处理请求数据&#xff0c;实现高度定制化的数据处理和生成。动态数据生成&#xff1a;在请求发送前生成动态数据&#xff0c;如随机数、时间戳等。变量设置&#xff1a;设置…

华为鸿蒙内核成为HarmonyOS NEXT流畅安全新基座

HDC2024华为重磅发布全自研操作系统内核—鸿蒙内核&#xff0c;鸿蒙内核替换Linux内核成为HarmonyOS NEXT稳定流畅新基座。鸿蒙内核具备更弹性、更流畅、更安全三大特征&#xff0c;性能超越Linux内核10.7%。 鸿蒙内核更弹性&#xff1a;元OS架构&#xff0c;性能安全双收益 万…

EG3D: Efficient Geometry-aware 3D Generative Adversarial Networks 学习笔记

1 Contributions 混合显式-隐式网络架构&#xff1a;提出了一种 Tri-plane 的3D表征方法&#xff0c;结合显式体素网格与隐式解码器的优点 速度快&#xff0c;内存效率高&#xff1b; 支持高分辨率生成&#xff0c;保持3D表征的灵活性和表达能力。与纯显式或隐式方法相比&#…

【数据结构OJ】相交链表问题,求相交链表的相交第一个交点

题目如下&#xff08;题目来源力扣&#xff09;&#xff1a; 个人解题思路&#xff1a; 运用双指针&#xff0c;第一次遍历先一起走&#xff0c;当一个走到尾时开始计数&#xff0c;等另一个指针也走到尾时记录下两个指针的路程差&#xff0c;同时比对两个指针指向的地址是否相…