【Android】使用Android开发应用过程中遇到ViewGroup的简单效以及aw和assets文件夹下的文件(Http协议的底层工作)

简介: 【Android】使用Android开发应用过程中遇到ViewGroup的简单效以及aw和assets文件夹下的文件(Http协议的底层工作)

使用ViewGroup

在Android APP中,所有用户界面元素都由View和ViewGroup对象组成。视图是用户在屏幕上绘制时可以与之交互的对象。ViewGroup是用于存储其他View(和ViewGroup)对象的布局容器!Android为我们提供了View和ViewGroup子类的集合,其中提供了一些常见的输入控件(如按钮和文本字段)和各种布局模式(如线性或相对布局)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="fill_parent" 
              android:layout_height="fill_parent"
              android:orientation="vertical" >
    <TextView android:id="@+id/text"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:text="I am a TextView" />
    <Button android:id="@+id/button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="I am a Button" />
</LinearLayout>

要定义布局,可以在代码中实例化View对象并开始构建树。然而,定义布局的最简单和最有效的方法是使用XML文件,这更符合人们的阅读习惯。XML与HTML相似,因为它使用XML元素的名称来表示视图。因此,元素将在您的界面中创建一个TextView控件,而将为LinearLayout创建一个容器!例如,具有文本视图和按钮的简单垂直布局

简单效果

要实现第一个布局的1:1效果,只需将两个LinearLayouts的权重分别更改为1和1。其用法可以概括为:按比例划分水平方向:将涉及的View的android:width属性设置为0dp,然后设置androidweight属性以设置比例;类似地,在垂直方向上,只需将android:height设置为0dp,然后设置权重属性!您可以编写自己的垂直等比除法来体验简单的用法!

<View  
    android:layout_width="match_parent"  
    android:layout_height="1px"  
    android:background="#000000" />  

② 权重属性的详细信息:
当然,如果我们不将上述设置方法应用于0dp,我们可以直接使用wrap Content和match _在parent的情况下,需要解析weight属性。有两种情况:wrap Content和match _ parent此外,这取决于LinearLayout的方向是水平还是垂直,这决定了哪个方向是等分的

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    
    xmlns:tools="http://schemas.android.com/tools"    
    android:id="@+id/LinearLayout1"    
    android:layout_width="match_parent"    
    android:layout_height="match_parent"    
    android:orientation="horizontal">   
        
    <LinearLayout    
        android:layout_width="0dp"    
        android:layout_height="fill_parent"    
        android:background="#ADFF2F"     
        android:layout_weight="1"/>    
       
        
    <LinearLayout    
        android:layout_width="0dp"    
        android:layout_height="fill_parent"    
        android:background="#DA70D6"     
        android:layout_weight="2"/>    
        
</LinearLayout>  

在这里插入图片描述

raw和assets文件夹下的文件

我相信你对这两个文件夹并不陌生。如果我们不想将文件编译成二进制文件,我们可以将文件放在这两个目录中。两者之间的差异如下:
Res/raw:该文件将映射到R.java文件,该文件可以通过资源ID直接访问,并且不能具有目录结构,即不能创建文件夹
资产:它不会映射到R.java文件。可以通过资产管理器访问。它可以有一个目录结构,也就是说,它可以自己创建文件夹

AssetManager am =  getAssets();  
InputStream is = am.open("filename");

简单的加密处理流程
步骤1。用户注册帐户和密码。验证帐户和密码后(帐户是否重复、密码位数>6等),即帐户和密码有效。注册成功后,我们向服务器提交帐户和本地加密的密码!
步骤2。服务器会将用户提交的帐户和加密密码保存到服务器的数据库中,也就是说,服务器不会保存我们的明文密码(原始)!
步骤3。回到客户端,如果注册或登录成功,您需要将帐户密码保存到SP,并且保存的密码还需要经过加密过程!即明文密码-->再次加密并保存!如果不保存,则每次请求明文密码时,都必须经过主进程,然后向服务器请求加密密码!
步骤4。服务器验证帐户和加密密码。如果成功,它将为客户端分配会话ID,随后的客户端可以通过此会话访问服务器提供的相关服务!
在这里插入图片描述

Http协议的底层工作

我们首先需要知道两个名词:
SYN(同步):TCP/IP建立连接时使用的握手信号
ACK(确认):一个确认字符,用于确认发送的数据已被正确接受
然后是TCP/IP三重握手的概念:
客户端向服务器发送syn包(syn=j)并进入syn_SEND状态,然后等待服务器确认
服务器接收SYN包,确认客户端的SYN(ACK=j+1),同时发送一个SYN包(SYN=k),即SYN+ACK包,服务器进入SYN_RECV状态
客户端接收SYN+ACK分组并向服务器发送ACK(ACK=k+1)确认分组。发送后,客户端和服务器进入建立状态,完成三次握手,然后都开始传输数据

<?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="horizontal"
    android:padding="5dp"
    android:background="#6BBA79">

    <ImageView
        android:id="@+id/img_icon"
        android:layout_width="48dp"
        android:layout_height="48dp"
        android:src="@mipmap/iv_lol_icon1"
        android:focusable="false"/>

    <TextView
        android:id="@+id/tv_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="15dp"
        android:layout_marginTop="15dp"
        android:focusable="false"
        android:text="提莫"
        android:textSize="18sp" />

</LinearLayout>

用户单击浏览器上的url(超链接),web浏览器与web服务器建立连接
建立连接后,客户端向服务器发送请求。请求的格式为:统一资源标识符(URL)+协议版本号(通常为1.1)+MIME信息(多个标头)+空行
收到请求后,服务器将以以下格式给出相应的返回信息:协议版本号+状态行(处理结果)+多个信息头+空白行+实体内容(如返回的HTML)
客户端接收服务器返回的信息,通过浏览器显示,然后与服务器断开连接;当然,如果在一个步骤中发生错误,错误消息将返回给客户端并显示,例如经典的404错误!

   public MyBaseExpandableListAdapter(ArrayList<Group> gData,ArrayList<ArrayList<Item>> iData, Context mContext) {
        this.gData = gData;
        this.iData = iData;
        this.mContext = mContext;
    }

    @Override
    public int getGroupCount() {
        return gData.size();
    }

    @Override
    public int getChildrenCount(int groupPosition) {
        return iData.get(groupPosition).size();
    }

    @Override
    public Group getGroup(int groupPosition) {
        return gData.get(groupPosition);
    }

    @Override
    public Item getChild(int groupPosition, int childPosition) {
        return iData.get(groupPosition).get(childPosition);
    }

    @Override
    public long getGroupId(int groupPosition) {
        return groupPosition;
    }

    @Override
    public long getChildId(int groupPosition, int childPosition) {
        return childPosition;
    }
相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务&nbsp;ACK 容器服务&nbsp;Kubernetes&nbsp;版(简称&nbsp;ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情:&nbsp;https://www.aliyun.com/product/kubernetes
相关文章
|
2天前
|
缓存 网络协议 安全
49. 【Android教程】HTTP 使用详解
49. 【Android教程】HTTP 使用详解
12 1
|
20天前
|
监控 Unix 应用服务中间件
Android-音视频学习系列-(八)基于-Nginx-搭建(rtmp、http)直播服务器
Android-音视频学习系列-(八)基于-Nginx-搭建(rtmp、http)直播服务器
|
21小时前
|
安全 前端开发 中间件
中间件中HTTP/HTTPS 协议
【6月更文挑战第3天】
10 3
|
2天前
|
传感器 物联网
物联网协议概述:MQTT、CoAP 和 HTTP
【6月更文挑战第3天】探索物联网的三大协议——MQTT、CoAP 和 HTTP。MQTT 是高效的消息传递使者,适用于大规模、不稳定网络环境;CoAP 小巧灵活,适合资源有限的设备;HTTP 则是熟悉的网络通信老将。根据不同场景选择合适的协议,让物联网设备有效交流。示例代码展示它们的使用方式。
20 0
|
5天前
|
网络协议 开发者 UED
【计算巢】HTTP/2 与 HTTP/3:下一代 Web 协议的优势
【5月更文挑战第31天】HTTP/2 & HTTP/3,两大网络协议超级英雄,通过二进制分帧、多路复用提升效率,QUIC协议让HTTP/3实现更快连接与低延迟。代码示例展示HTTP/2高效请求,它们为用户带来更快加载速度,改善体验,尤其利于高延迟应用。对开发者意味着更高性能,为网站注入超级引擎。未来,它们将在更多领域发挥作用,点亮数字世界。
|
5天前
|
Oracle Java 关系型数据库
http 协议深入介绍(二)
http 协议深入介绍(二)
|
5天前
|
网络协议 前端开发 应用服务中间件
http 协议深入介绍(一)
http 协议深入介绍(一)
|
7天前
|
缓存 安全 网络协议
HTTP协议中Via的用法
【5月更文挑战第29天】Web请求通过代理服务器的情况,强调了随着代理的普及,追踪报文流以解决网络问题的重要性。
|
8天前
|
存储 安全 前端开发
HTTP 协议 与HTTPS
HTTP 协议 与HTTPS
|
8天前
|
存储 前端开发 JavaScript
应用层协议 HTTP
应用层协议 HTTP