基于RecyclerView的图片浏览器

news/2024/10/17 12:22:00/

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、作业要求
  • 二、具体实现
    • 1.布局代码
    • 2.程序代码
  • 总结


前言

基于RecyclerView的图片浏览器

一、作业要求

使用RecyclerView实现一个图片列表,如图1所示,当点击其中的任一个图片时,会在一个新的Activity中显示被点击的图片,如图2所示。


二、具体实现


1.布局代码

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"		tools:context=".MainActivity"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="xxx的homework展示"android:textSize="20sp"android:textColor="@color/white"/><androidx.recyclerview.widget.RecyclerViewandroid:id="@+id/recycler_view"android:layout_width="match_parent"android:layout_height="wrap_content" />
</LinearLayout>

其中,orientation="vertical"是LinearLayout布局中不可缺少的重要属性,并且如果想要后面的内容在布局中是其他空间centre,也可以使用layout_gravity

recyclerview_item.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:orientation="vertical"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_margin="10dp"tools:ignore="UseCompoundDrawables"><ImageViewandroid:id="@+id/image"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center_horizontal"android:transitionName="sharedView"tools:ignore="ContentDescription" /><TextViewandroid:id="@+id/name"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center_horizontal"android:textSize="20sp"android:textColor="@color/black"        />
</LinearLayout>

activity_newitem.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><!--注意这里的sharedView--><ImageViewandroid:id="@+id/image1"android:layout_width="match_parent"android:layout_height="match_parent"android:src="@mipmap/ic_launcher"android:transitionName="sharedView"tools:ignore="ContentDescription" />
</LinearLayout>

2.程序代码

newitem.java

package com.example.homework_forth;
import android.os.Bundle;
import android.widget.ImageView;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
public class newitem extends AppCompatActivity {private ImageView image1;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_newitem);image1 = findViewById(R.id.image1);image1.setOnClickListener(view -> ActivityCompat.finishAfterTransition(newitem.this));}
}

MainActivity.kt

package com.example.homework_forth
import android.os.Bundle
import android.view.View
import androidx.appcompat.app.AppCompatActivity
import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.RecyclerView
class MainActivity : AppCompatActivity() {private val coreList = ArrayList<core>()override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)initCore()val recyclerView = findViewById<View>(R.id.recycler_view) as RecyclerViewval layoutManager = GridLayoutManager(this,3)recyclerView.layoutManager = layoutManagerval adapter = coreAdapter(coreList)recyclerView.adapter = adapter}private fun initCore() {for (i in 0..1) {val Aiden = core("Aiden", R.drawable.p1pic)coreList.add(Aiden)val Mia = core("Mia", R.drawable.p2pic)coreList.add(Mia)val Jackson = core("Jackson", R.drawable.p3pic)coreList.add(Jackson)val Jacob = core("Jacob", R.drawable.p4pic)coreList.add(Jacob)val Emily = core("Emily", R.drawable.p5pic)coreList.add(Emily)val Emma = core("Emma", R.drawable.p6pic)coreList.add(Emma)val lucky = core("lucky", R.drawable.p7pic)coreList.add(lucky)val Noah = core("Noah", R.drawable.p8pic)coreList.add(Noah)val Lucas = core("Lucas", R.drawable.p9pic)coreList.add(Lucas)val Caden = core("Caden", R.drawable.p0pic)coreList.add(Caden)}}}

core.kt

package com.example.homework_forth
class core( val name : String, val imageId : Int)

coreAdapter.java

package com.example.homework_forth;
import android.app.Activity;
import android.app.ActivityOptions;
import android.content.Intent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import androidx.recyclerview.widget.RecyclerView;
import java.util.List;
public class coreAdapter extends RecyclerView.Adapter<coreAdapter.ViewHolder> {private final List<core> mcoreList;public  coreAdapter (List <core> coreList){mcoreList = coreList;}static class ViewHolder extends RecyclerView.ViewHolder{View coreView;ImageView Image;TextView Name;public ViewHolder (View view){super(view);coreView = view;Image = (ImageView) view.findViewById(R.id.image);Name = (TextView) view.findViewById(R.id.name);}}@Overridepublic ViewHolder onCreateViewHolder(ViewGroup parent, int viewType){View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.recyclerview_item,parent,false);final ViewHolder holder = new ViewHolder(view);holder.coreView.setOnClickListener(view1 -> view1.getContext().startActivity(new Intent(view1.getContext(),newitem.class),ActivityOptions.makeSceneTransitionAnimation((Activity) view1.getContext(), view1,"image").toBundle()));return holder;}@Overridepublic void onBindViewHolder(ViewHolder holder, int position){core Core = mcoreList.get(position);holder.Image.setImageResource(Core.getImageId());holder.Name.setText(Core.getName());}@Overridepublic int getItemCount(){return mcoreList.size();}
}

总结

最开始使用recyclerview布局完成后,对于监听事件重写一直出错,导致无法在虚拟机上运行,最后出现闪退现象,在多次查资料,看实验文件之后,结合intent跳转activity的方法,成功书写了新的监听.


http://www.ppmy.cn/news/150216.html

相关文章

Android图片浏览器

当手机开机、插拔USB连接时&#xff0c;Android系统会启动MediaScanner&#xff0c;扫描SD卡和内存里面的文件&#xff0c;扫描的结果保存在data/data/com.android.providers.media/databases/external.db下。通过DDMS可以找到&#xff0c;数据库中包含了图片、视频、音乐等文件…

网页图片浏览

基本功能&#xff1a;输入图片的url然后点击按钮加载出来图片 activity_main.xml <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android" xmlns:tools"http://s…

ViewPager2 滑动图片浏览

1. 基于 "Gallery 简易图片浏览" 添加 Gallery 简易图片浏览https://blog.csdn.net/u011193452/article/details/127006679 2. ViewPager 适配器 2.1 适配器布局文件 pager_photo_view.xml <?xml version"1.0" encoding"utf-8"?> <…

简单图片浏览器

本示例用于循环显示GIF图片&#xff0c;调用Python的标准库tkinter&#xff0c;如果要做更高端的图像处理应该采用PIL库。 import tkinter as tk,os #导入库 class Application(tk.Frame): #定义GUI的应用程序类&#xff0c;派生于Frmaedef __init__(self,masterNone): #构…

Gallery 简易图片浏览

1. build.gradle, AndroidManifast.xml, 配置文件添加引用 1.1 dependencies 中添加引用库 dependencies {//http 请求implementation com.android.volley:volley:1.2.1//上拉刷新implementation androidx.swiperefreshlayout:swiperefreshlayout:1.1.0//加载网络地址图片impl…

照片浏览

照片浏览器&#xff1a; 1&#xff0c;SDPhotoBrowser 链接&#xff1a; https://github.com/gsdios/SDPhotoBrowser 介绍&#xff1a;中国人提供的源码&#xff0c;是在sdimage上进行开发的&#xff1b;可以查看网络图片&#xff0c;并且有图片缓存功能&#xff0c;加载一次后…

XnViewMP图片浏览器

今天小编给大家带来的是XnViewMP图片浏览器&#xff0c;这是一款非常棒的完全免费图片浏览器&#xff0c;同时支持多种语言&#xff0c;并且是纯绿色免安装&#xff0c;即下即用。软件支持100多种图片格式&#xff0c;还具有浏览器、幻灯片、屏幕捕捉、缩略图制作、批处理转换、…

页面图片浏览

在页面上浏览图片&#xff0c;实现图片的拖放 <html><head><meta http-equiv"Content-Type" content"text/html; charsetgb2312"><title>位图浏览器</title><style type"text/css"><!--#pic { width:…