基于RecyclerView的图片浏览器
生活随笔
收集整理的這篇文章主要介紹了
基于RecyclerView的图片浏览器
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔
文章目錄
- 前言
- 一、作業要求
- 二、具體實現
- 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
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的方法,成功書寫了新的監聽.
總結
以上是生活随笔為你收集整理的基于RecyclerView的图片浏览器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微信公众号(服务号)接入开发之微信授权登
- 下一篇: Mac修改默认的电子邮箱客户端