9.安卓逆向-安卓开发基础-安卓四大组件2

news2024/9/21 22:56:57

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动!

内容参考于:图灵Python学院

本人写的内容纯属胡编乱造,全都是合成造假,仅仅只是为了娱乐,请不要盲目相信。

工具下载:

链接:https://pan.baidu.com/s/1rEEJnt85npn7N38Ai0_F2Q?pwd=6tw3

提取码:6tw3

复制这段内容后打开百度网盘手机App,操作更方便哦

上一个内容:8.安卓逆向-安卓开发基础-安卓四大组件1

接着上一个内容继续

实现一个两个Activity跳转

首先创建两个Activity,如下图创建两个Empty Activity

第一个

第二个

达到的效果是从第一个跳转到第二个里面

第一个Activity的布局文件里的代码

<?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:layout_width="match_parent"
 android:layout_height="match_parent"
 tools:context=".tiaozhuan1">

 <RelativeLayout
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:gravity="center"
     >
     <TextView
         android:id="@+id/tv1"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:textSize="30sp"
         android:gravity="center"
         android:text="这里是第一页"/>
     <Button
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:id="@+id/btn1"
         android:textSize="30sp"
         android:layout_centerHorizontal="true"
         android:layout_below="@+id/tv1"
         android:text="点击我跳转到第二页"/>
 </RelativeLayout>

</LinearLayout>

第一个Activity效果:

第二个布局文件里的代码

<?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:layout_width="match_parent"
 android:layout_height="match_parent"
 tools:context=".tiaozhuan2">

 <RelativeLayout
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:gravity="center">
     <TextView
         android:id="@+id/tv2"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:textSize="30sp"
         android:gravity="center"
         android:text="这里是第二页"/>
     <Button
         android:id="@+id/btn2"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_below="@+id/tv2"
         android:layout_centerHorizontal="true"
         android:textSize="30sp"
         android:text="点击返回第一页"/>
 </RelativeLayout>

</LinearLayout>

第二个Activity效果:

跳转的代码

首先是第一个跳转到第二个,获取第一个Activity里面的一个按钮点击的时候调用startActivity函数切换

package com.example.course1;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class tiaozhuan1 extends AppCompatActivity {

 @Override
 protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.activity_tiaozhuan1);
     Button button = findViewById(R.id.btn1);
     button.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View v) {
             Intent intent = new Intent(tiaozhuan1.this, tiaozhuan2.class);
             startActivity(intent);
         }
     });
 }
}

第二个Activity的核心代码获取第一个Activity里的一个按钮然后点击时让它调用finish函数就可以再返回到第一个Activity了

package com.example.course1;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class tiaozhuan2 extends AppCompatActivity {

 @Override
 protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.activity_tiaozhuan2);
     Button button = findViewById(R.id.btn2);
     button.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View v) {
           finish();
         }
     });
 }
}

然后修改清单文件

上图的清单文件点运行时会编译报错,下图红框的文件全报错

报错原因是忘记改下图红框的东西了

改完再点运行,就会正常了

效果点击下图红框的按钮

回来到下图的界面(Activity)

点击下图红框的按钮

会返回到第一个界面(Activity)

接下来做一个列表和搜索列表功能

首先创建一个Empty Activity

然后搜索框也就是输入框之前写过,然后搜索按钮就是个按钮之前也写过,然后列表之前没写过,列表使用ListView

ListView是一种常见的用户界面控件,用于在移动应用程序中展示大量数据。它能够以列表的形式显示数据,并且支持滚动和快速定位到特定条目。ListView 在移动应用开发中非常常见,特别是在 Android 平台上。ListView通常会和适配器(Adapter)一起使用,适配器负责将数据绑定到ListView上

<ListView
     android:id="@+id/listView"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     />

现在的界面和对应代码

然后创建一个类,名字叫 MyAdapter

然后它的内容

// 继承BaseAdapter:MyAdapter类继承自BaseAdapter,这是Android中适配器类的基类,用于将数据与视图绑定在一起。
public class MyAdapter extends BaseAdapter {
	// 成员变量 mData:MyAdapter类包含一个名为mData的List<String>类型的成员变量,用于存储要展示的数据。
private List<String> mData;
	// MyAdapter类有一个构造方法,接受一个List<String>类型的参数 data,用于初始化 mData 成员变量。
public MyAdapter(List<String> data) {
   mData = data;
}
	// mData中数据的数量,即列表项的个数。
@Override
public int getCount() {
   return mData.size();
}
	// 根据位置返回对应的数据项。
@Override
public Object getItem(int position) {
   return mData.get(position);
}
	// 返回指定位置的行ID,通常直接返回position。
@Override
public long getItemId(int position) {
   return position;
}
	// 通过convertView参数 将数据填充到视图中,并返回给列表进行显示
// 这里的position表示列表项在数据源中的位置,convertView表示当前可重用的视图对象,而parent表示列表的父容器。
@Override
public View getView(int position, View convertView, ViewGroup parent) {
   if (convertView == null) {
       convertView = LayoutInflater.from(parent.getContext())
               .inflate(android.R.layout.simple_list_item_1, parent, false);
   }
   TextView textView = convertView.findViewById(android.R.id.text1);
   textView.setText(mData.get(position));
   return convertView;
}
}

然后使用,可以看出下图蓝框里给 ListView 添加了六条数据

package com.example.course1;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.text.Editable;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;

import java.util.Arrays;
import java.util.List;

public class liebiao extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.activity_liebiao);

   EditText editText = findViewById(R.id.editText1);
   Button mButton = findViewById(R.id.button1);
   ListView listView = findViewById(R.id.listView);

   // 安卓开发提供的
//        String[]data = {"数据1","数据2","数据3","数据4","数据5","数据6"};
//        ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, android.R.id.text1, data);
//        listView.setAdapter(adapter);

   // 我们自己实现的

   List<String> datas = Arrays.asList("数据1","数据2","数据3","数据4","数据5","数据6");
   MyAdapter myAdapter = new MyAdapter(datas);
   listView.setAdapter(myAdapter);
}
}package com.example.course1;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.text.Editable;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;

import java.util.Arrays;
import java.util.List;

public class liebiao extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.activity_liebiao);

   EditText editText = findViewById(R.id.editText1);
   Button mButton = findViewById(R.id.button1);
   ListView listView = findViewById(R.id.listView);

   // 安卓开发提供的
//        String[]data = {"数据1","数据2","数据3","数据4","数据5","数据6"};
//        ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, android.R.id.text1, data);
//        listView.setAdapter(adapter);

   // 我们自己实现的

   List<String> datas = Arrays.asList("数据1","数据2","数据3","数据4","数据5","数据6");
   MyAdapter myAdapter = new MyAdapter(datas);
   listView.setAdapter(myAdapter);
}
}

修改资源文件

它会根据getCount函数返回的数字从而确定展示几条数据,如下图,这样可以做分页

如果不会搞 ListView+功能描述,这样的关键字去百度搜索,会找到别的大哥写好的代码,拿来直接用就好,所以百度找来的代码不需要看懂只需要会用就行,后面写多了慢慢就能看懂,没必要非要逼着自己看懂,会用就行

然后是后台(Service)这个不重要,后面用到了会细写

Serviceandroid系统的四大组件之一,是一种长生命周期的,没有可视化界面,运行于后台的一种服务程序

BroadcastReceiver

BroadcastReceiver(广播接收器)是Android系统的四大组件之一,用于监听 / 接收 应用发出的广播消息,并做出响应

应用场景:不同组件之间通信(包括应用内 / 不同应用之间);与 Android 系统在特定情况下的通信(如当电话呼入时、网络可用时);多线程通信

Android广播分为两个角色:广播发送者、广播接收者

Content Provider

Content Provider主要的功能就是存储并检索数据以及向其他应用程序提供访问数据的接口

Android系统为一些常见的数据类型(如音乐、视频、图像、手机通信录联系人信息等)内置了一系列的Content Provider,这些都位于android.provider包下

然后后面要用到Python

Python环境搭建:https://blog.csdn.net/2401_85903292/article/details/140873025 看这个大哥写的,也可以自己找,通过 Python和PyCharm环境搭建关键字找,这里的PyCharm是用来写Python代码的,Python是用来运行Python代码的

上方的代码不全,只有手写的代码

完整代码:

链接:https://pan.baidu.com/s/1W-JpUcGOWbSJmMdmtMzYZg?pwd=q9n5

提取码:q9n5

复制这段内容后打开百度网盘手机App,操作更方便哦


img

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

mysql为什么建议创建字段的时候not null

相信大家在建表或者给表新加字段的时候&#xff0c;一些老司机们都会建议我们&#xff0c;字段要定义为not null&#xff0c;原因呢是一是占用存储空间&#xff0c;另一个是避免出现一些意料之外的错误。当然针对这个问题&#xff0c;大家可能也会在网上去搜下&#xff0c;不过…

C语言中的一些小知识(三)

一、你了解printf()吗&#xff1f; 你知道下面代码的输出结果吗&#xff1f; int a123; printf("%2d \n",a); printf() 函数是 C 语言中用于格式化输出的标准函数&#xff0c;它允许你将数据以特定的格式输出到标准输出设备&#xff08;通常是屏幕&#xff09;。p…

20240921全国计算机二级Python考试(大头博士计算二级)

一、背景需求&#xff1a; 20240921我在上海应用技术大学44号楼考场参加2024年9月的全国计算机二级&#xff08;Python语言程序设计&#xff09;考试。 时隔多年&#xff0c;再次来到大学校园&#xff0c;恍若隔世 扫码找考场在哪里 考场须知 1、进考场&#xff0c;先刷身份证…

有关elementui form验证问题,有值却仍然显示不通过

参考链接 有关elementui form验证问题&#xff0c;有值却仍然显示不通过 - 一棵写代码的柳树 - 博客园 需要保证表单上的 :model" "和prop" "对应的属性相同 el-form 绑定数据:model 和 规则:rules input 绑定 数据表单里的数据 其父组件提供校验所绑定的…

Mybatis的XML实现方法

Mybatis的开发有两种方式&#xff1a; 1、注解 2、XML 使用Mybatis的注解方式&#xff0c;主要是来完成一些简单的增删改查功能。如果需要实现复杂的SQL功能&#xff0c;建议使用XML来配置映射语句&#xff0c;也就是将SQL语句写在XML配置文件中。 Mybatis的XML的实现需要以下…

leetcode练习 二叉树的最大深度

给定一个二叉树 root &#xff0c;返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;3提示&#xff1a; 树中节点的数量在 [0, 104] 区间内。-100 …

java使用ByteBuffer进行多文件合并和拆分

1.背景 因为验证证书的需要&#xff0c;需要把证书文件和公钥给到客户&#xff0c;考虑到多个文件交互的不便性&#xff0c;所以决定将2个文件合并成一个文件交互给客户。刚开始采用字符串拼接2个文件内容&#xff0c;但是由于是加密文件&#xff0c;采用字符串形式合并后&…

fastadmin 部署后前台会员中心出现404错误

访问前台会员中心出现404错误。 解决&#xff1a;nginx访问站点增加伪静态 location / {if (!-e $request_filename){rewrite ^(.*)$ /index.php?s$1 last; break;} }在phpstydy中增加伪静态&#xff0c;如图&#xff1a;

保姆级教程教你如何安装Hadoop,实现Hadoop单机(非分布式)配置

下载Ubutu镜像 前往阿里镜像站https://mirrors.aliyun.com/oldubuntu-releases/releases/16.04.0/?spma2c6h.25603864.0.0.6be57ff3u2zMGR 选择下载ubuntu-16.04-desktop-amd64.iso 下载时间较久&#xff0c;请耐心等待 创建实验用虚拟机 选择创建新的虚拟机 选择典型并下一…

伊犁-linux 硬盘添加,分区,格式化

主要是linux 下操作硬盘分区&#xff0c;格式化 这样1个sata 盘就添加成功了 &#xff01;  继续添加三块 sata1 hda sata hdb sata hdc sata hdd scsi sda 作为启动盘 进行操作系统的引导 如果scsi 往下调整 先敲enter 在用&#xff0d; 号往下 如果是往上调整敲…

win7自带壁纸丢失主题丢失

有时候盗版破解或者其他美化工具会导致win7自带的壁纸丢失&#xff0c;从个性化管理里面无法恢复原始的壁纸&#xff08;如下图&#xff09;&#xff0c;但是由于工作原因公司的电脑又不方便设置第三方的壁纸&#xff0c;所以找了一下解决方案。 经典问题&#xff0c;百度找到的…

华为全联接大会HUAWEI Connect 2024印象(二):昇腾AI端侧推理

此次参加HUAWEI Connect 2024最主要目标是了解昇腾AI端侧推理技术&#xff0c;希望将其融合到我现在嵌入式系统课程中&#xff0c;不过刚开始在一楼找到一个小展台&#xff0c;看到了香橙派Orange Pi。香橙派是深圳迅龙的一个品牌&#xff0c;他们和很多芯片厂商都合作过&#…

创建Application(Qt)模板项目时的 Base class选择

在Qt中&#xff0c;当你使用Qt Creator新建一个Qt Widgets Application项目时&#xff0c;选择Base class是一个重要的步骤&#xff0c;因为它决定了你的主窗口或对话框将继承自哪个类&#xff0c;从而决定了你的应用程序将具有哪些基本的功能和外观。以下是一些常见的Base cla…

毕业设计选题:基于ssm+vue+uniapp的校园商铺系统小程序

开发语言&#xff1a;Java框架&#xff1a;ssmuniappJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;M…

动手学深度学习(李沐)PyTorch 第 1 章 引言

在线电子书 深度学习介绍 安装 使用conda环境 conda create -n d2l-zh python3.8 pip安装需要的包 pip install jupyter d2l torch torchvision下载代码并执行 wget https://zh-v2.d2l.ai/d2l-zh.zip unzip d2l-zh.zip jupyter notebookpip install rise如果不想使用jupyt…

NAT和代理服务

文章目录 NAT和代理服务1、NAT技术背景2、NAT 技术 IP 转换过程3、NAPT4、NAT 技术的缺陷5、代理服务器5.1、正向代理5.1.1、概念5.1.2、工作原理5.1.3、功能特点5.1.4、应用场景 5.2、反向代理5.2.1、概念5.2.2、工作原理5.2.3、应用场景 6、NAT 和代理服务器 NAT和代理服务 …

实景三维+耕地保护:构建耕地资源管理的全闭环新模式

在耕地资源日益珍贵的今天&#xff0c;如何高效、精准地实施耕地保护&#xff0c;成为了我国农业可持续发展与生态文明建设的关键课题。“实景三维耕地保护”的创新模式&#xff0c;能够为这一挑战提供突破性的解决方案&#xff0c;打造一个从前端监测到后端管理的全闭环耕地保…

Global Attention Decoder for Chinese Spelling Error Correction(ACL2021)

Global Attention Decoder for Chinese Spelling Error Correction(ACL2021) 一.概述 作者认为现有的纠错方法大多是基于局部上下文信息进行纠错&#xff0c;没有考虑句子中错词的影响。将注意力放在错误上下文信息上可能会误导并降低CSC(Chinese Spelling Correction)的整体性…

【计算机网络】网络层协议解析

网络层的两种服务IPv4分类编址划分子网无分类地址 IPv4地址应用IP数据报的发送和转发过程主机发送IP数据报路由器转发IP数据报 IPv4数据报首部格式ICMP网际控制报文协议虚拟专用网VPN与网络地址转换NAT 网络层主要任务是实现网络互连&#xff0c;进而实现数据包在各网络之间的传…

快速掌握Matlab R2016a安装,就是这么简单

Matlab R2016a下载方法&#xff1a; Matlab R2016a安装教程&#xff1a; 1、右击下载好的压缩包&#xff0c;选择解压到Matlab R2016a 2、打开文件夹【R2016a_win64】&#xff0c;右击下面的setup.exe&#xff0c;选择【以管理员身份运行】 3、点击选择【使用文件安装密钥】&a…