移动开发作业二:Activity的跳转

141 阅读2分钟

这是我「安卓开发课」的第二个作业

1.任务需求

1、请在基础门户页面(作业1)的某个tab页面中添加recycleview,例如:新闻列表页面;

2、请在上一列表页面的基础上进行点击跳转设计。比如,某一tab页是新闻列表,则点击某一行能跳转到新闻详情页面。

2.项目实践思路

1.改写上次的MyAdapter.class文件:对RecyclerView进行点击触发的行动编写

2.编写对应跳转的页面和类,例如FruitActivity.class类和fruit_layout.xml

3.修改AndroidManifest.xml,对新加入的页面类进行注册,不然无法完成跳转

3.项目核心代码

3.1 MyAdapter.class:在onCreateViewHolder中添加代码,主要是setOnClickListener方法,根据点击的item进行跳转和弹窗。

如果点击的是整个item,背景颜色改变为橙,并提示你点击的是整个view,进行跳转;如果点击的是图片,背景颜色改变为蓝,并提示你点击的是图片,进行跳转;

@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    View view = LayoutInflater.from(parent.getContext())
            .inflate(R.layout.fruit_item, parent, false);
    ViewHolder holder = new ViewHolder(view);
    holder.fruitView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            int position = holder.getAdapterPosition();
            Fruit fruit = mFruitList.get(position);
            holder.itemView.setBackgroundColor(Color.parseColor("#f4c542"));
            Toast.makeText(view.getContext(), "you clicked " + fruit.getName() + " view", Toast.LENGTH_LONG).show();
            if (fruit.getName().equals("Apple")) {
                Intent intent = new Intent(view.getContext(), AppleActivity.class);
                view.getContext().startActivity(intent);
            } else if (fruit.getName().equals("Banana")) {
                Intent intent = new Intent(view.getContext(), BananaActivity.class);
                view.getContext().startActivity(intent);
            } else if(fruit.getName().equals("Pear")) {
                Intent intent = new Intent(view.getContext(), PearActivity.class);
                view.getContext().startActivity(intent);
            } else if (fruit.getName().equals("Orange")) {
                Intent intent = new Intent(view.getContext(), OrangeActivity.class);
                view.getContext().startActivity(intent);
            } else {
                Toast.makeText(view.getContext(), "you clicked view invalid", Toast.LENGTH_LONG).show();
            }
        }
    });
    holder.fruitImg.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            int position = holder.getAdapterPosition();
            Fruit fruit = mFruitList.get(position);
            holder.itemView.setBackgroundColor(Color.parseColor("#7EC0EE"));
            Toast.makeText(view.getContext(), "I clicked " + fruit.getName() + " image", Toast.LENGTH_LONG).show();
            if (fruit.getName().equals("Apple")) {
                Intent intent = new Intent(view.getContext(), AppleActivity.class);
                view.getContext().startActivity(intent);
            } else if (fruit.getName().equals("Banana")) {
                Intent intent = new Intent(view.getContext(), BananaActivity.class);
                view.getContext().startActivity(intent);
            } else if(fruit.getName().equals("Pear")) {
                Intent intent = new Intent(view.getContext(), PearActivity.class);
                view.getContext().startActivity(intent);
            } else if (fruit.getName().equals("Orange")) {
                Intent intent = new Intent(view.getContext(), OrangeActivity.class);
                view.getContext().startActivity(intent);
            } else {
                Toast.makeText(view.getContext(), "you clicked image invalid", Toast.LENGTH_LONG).show();
            }
        }
    });
    return holder;
}

3.2 四个对应的UI和对应的类,以apple为例,其他可见源码 例如:apple_layout.xml 和 AppleActivity.class代码: AppleActivity.class:

package com.zhj.myapplication.fruitActivity;

import android.app.Activity;
import android.os.Bundle;

import androidx.annotation.Nullable;

import com.zhj.myapplication.R;

/**
 * Description:
 */
public class AppleActivity extends Activity {
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.apple_layout);
    }
}

apple_layout.xml:

<?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">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="你看到了大苹果!!!"
        android:textSize="40dp"
        android:textColor="@color/black"
        android:layout_marginTop="300dp"
        android:layout_marginLeft="10dp"/>
</LinearLayout>

3.3 修改AndroidManifest.xml,主要是对前面的四个FruitActivity.class进行注册

<activity android:name=".fruitActivity.AppleActivity"
    android:exported="true">
</activity>
<activity android:name=".fruitActivity.OrangeActivity"
    android:exported="true">
</activity>
<activity android:name=".fruitActivity.PearActivity"
    android:exported="true">
</activity>
<activity android:name=".fruitActivity.BananaActivity"
    android:exported="true">
</activity>

4.效果展示

1.启动项目 image.png

2.点击发现 image.png

3.点击apple,进行跳转(不点image):会看到消息提示 image.png

4.点击返回键,返回到观察界面:看到背景进行了改变 image.png

5.再测试点击其他水果图片 image.png

6.返回,观察点击图片后的颜色 image.png

5.源码地址

Address:mini-wechat作业二——gitee