当前位置: 首页 > news >正文

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

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

内容参考于:图灵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"><RelativeLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center"><TextViewandroid:id="@+id/tv1"android:layout_width="match_parent"android:layout_height="wrap_content"android:textSize="30sp"android:gravity="center"android:text="这里是第一页"/><Buttonandroid: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"><RelativeLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center"><TextViewandroid:id="@+id/tv2"android:layout_width="match_parent"android:layout_height="wrap_content"android:textSize="30sp"android:gravity="center"android:text="这里是第二页"/><Buttonandroid: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 {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_tiaozhuan1);Button button = findViewById(R.id.btn1);button.setOnClickListener(new View.OnClickListener() {@Overridepublic 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 {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_tiaozhuan2);Button button = findViewById(R.id.btn2);button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {finish();}});}
}

然后修改清单文件

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

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

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

效果点击下图红框的按钮

回来到下图的界面(Activity)

点击下图红框的按钮

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

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

首先创建一个Empty Activity

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

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

<ListViewandroid: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.mrgr.cn/news/32896.html

相关文章:

  • react 中 useEffect Hook 作用
  • java实现代码沙盒(docker-java)
  • 国产系统给在线的Word文件创建表格
  • blenderFds代码解读
  • Spring Boot中的自动装配机制
  • Redhat7.9 安装 KingbaseES 金仓数据库 V9单机版(静默安装)
  • C++11标准模板(STL)- 常用数学函数 - 计算e的给定幂 (ex)(std::exp, std::expf, std::expl)
  • hadoop大数据平台操作笔记
  • 酒桌上有三种人,从来不敬酒,反而不能小瞧,他们智商很高
  • JavaWeb_Servlet 学习指南
  • 小时候看的多啦A梦中的哪些是与人工智能相关的道具,现在已经实现了
  • React组件如何暴露自身的方法
  • TestDeploy v3.0构思
  • Hadoop的安装和使用
  • 数据库系统基础概述
  • linux操作系统的基本命令
  • javascript数组的常用方法汇总
  • python-SZ斐波那契数列/更相减损数
  • [数据结构]动态顺序表的实现与应用
  • 怎么制作视频教程?新手速成剪辑教程来袭
  • nvm切换版本失败踩坑
  • 【Linux】网络基础
  • IO 多路转接之 select
  • 【浅水模型MATLAB】尝试复刻SCI论文中的溃坝流算例
  • 两个有序序列的中位数
  • C++ 11