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)这个不重要,后面用到了会细写
Service
是android
系统的四大组件之一,是一种长生命周期的,没有可视化界面,运行于后台的一种服务程序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,操作更方便哦