RecyclerView实现九宫格和点击事件
来源:互联网 发布:申通面单打印软件 编辑:程序博客网 时间:2024/06/01 09:18
想要实现的效果如下:
开始界面:
点击界面展示:
在屏幕中间弹出一个对话框,效果就如同将图片放大一样。不过当然,这里的图片放大并非真正意义上的拉伸,而是展示出较大的那张图片。
若是不打算用两张图片,也可以自定义大小,这里因为只是简单的demo,也为了让图片效果更加清晰,就没有使用这个方法,有兴趣的话可以去试试。
代码:
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="com.ut.youtuimagedemo.MainActivity"> <android.support.v7.widget.RecyclerView android:id="@+id/recycler" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#eaeaea"> </android.support.v7.widget.RecyclerView></LinearLayout>
grid_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:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.ut.youtuimagedemo.MainActivity"> <android.support.v7.widget.RecyclerView android:id="@+id/recycler" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#eaeaea"> </android.support.v7.widget.RecyclerView></LinearLayout>
package com.ut.youtuimagedemo;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.support.v7.widget.GridLayoutManager;import android.support.v7.widget.LinearLayoutManager;import android.support.v7.widget.RecyclerView;/** * Created by Giousa on 2016/3/23. */public class MainActivity extends AppCompatActivity { private RecyclerView mRecyclerView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); initData(); } private void initView() { mRecyclerView = (RecyclerView) findViewById(R.id.recycler); } private void initData() { GridLayoutManager layoutManager = new GridLayoutManager(this,3); layoutManager.setOrientation(LinearLayoutManager.VERTICAL); mRecyclerView.setLayoutManager(layoutManager); mRecyclerView.setAdapter(new MyAdapter(this)); mRecyclerView.setRecyclerListener(new RecyclerView.RecyclerListener() { @Override public void onViewRecycled(RecyclerView.ViewHolder holder) { } }); }}
MyAdapter:
package com.ut.youtuimagedemo;import android.app.AlertDialog;import android.content.Context;import android.graphics.drawable.BitmapDrawable;import android.graphics.drawable.Drawable;import android.support.v7.widget.RecyclerView;import android.util.Log;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;import java.io.InputStream;/** * Created by Giousa on 2016/3/23. */public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ListHolder>{ private Context mContext; int iconA[] = {R.drawable.a00,R.drawable.a01,R.drawable.a02,R.drawable.a03,R.drawable.a04, R.drawable.a05, R.drawable.a06,R.drawable.a07,R.drawable.a08,R.drawable.a09, R.drawable.a10, R.drawable.a11}; int iconB[] = {R.drawable.b00,R.drawable.b01,R.drawable.b02,R.drawable.b03,R.drawable.b04, R.drawable.b05, R.drawable.b06,R.drawable.b07,R.drawable.b08,R.drawable.b09, R.drawable.b10, R.drawable.b11}; public MyAdapter(Context context) { this.mContext = context; } @Override public ListHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = View.inflate(parent.getContext(), R.layout.grid_item, null); return new ListHolder(view); } @Override public void onBindViewHolder(ListHolder holder, int position) { holder.setData(position); } @Override public int getItemCount() { return iconA.length; } View.OnClickListener onClickListener = new View.OnClickListener() { @Override public void onClick(View v) { int position = (int) v.getTag(); Log.d("已被点击", "位置:" + position); final AlertDialog dialog = new AlertDialog.Builder(mContext).create(); ImageView imgView = getView(position); dialog.setView(imgView); dialog.show(); // 点击图片消失 imgView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub dialog.dismiss(); } }); } }; private ImageView getView(int position) { ImageView imgView = new ImageView(mContext); imgView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); InputStream is = mContext.getResources().openRawResource(iconB[position]); Drawable drawable = BitmapDrawable.createFromStream(is, null); imgView.setImageDrawable(drawable); return imgView; } class ListHolder extends RecyclerView.ViewHolder { ImageView icon; public ListHolder(View itemView) { super(itemView); itemView.setOnClickListener(onClickListener); icon = (ImageView) itemView.findViewById(R.id.pic); } public void setData(int position){ itemView.setTag(position); icon.setImageResource(iconA[position]); } }}
Demo下载链接
1 2
- RecyclerView实现九宫格和点击事件
- RecyclerView实现点击事件
- RecyclerView实现简单点击事件
- RecyclerView + 九宫格图片 + ViewPager + PhotoView 实现列表图片点击放大并能缩放思路
- RecyclerView实现点击和长按事件的监听方法
- RecyclerView添加点击和长按事件的简单实现
- android九宫格实现和执行不同点击
- RecyclerView实现Item点击事件方法一
- RecyclerView实现Item点击事件方法二
- RecyclerView的点击事件及实现
- RecyclerView的Item点击事件实现总结
- RecyclerView Item点击事件实现 类似GridView
- recyclerview简析,点击事件实现简析
- RecyclerView的item点击事件(点击和长按)的两种实现
- Android开发之RecyclerView实现点击事件和长按事件
- RecyclerView 使用 点击事件和长按
- RecyclerView 添加头部和尾部,并实现Item的点击事件
- RecyclerView 初次体验,实现增加删除条目及item长按和点击事件
- HRBUST 2085 囧 分型法
- android.net.http.AndroidHttpClient Android6.0 API23以后失效
- copssh的安装与卸载 不能正常启动问题解决
- 使用WCF来实现一个ShadowSocks客户端(三)
- SQL 时间查询整理
- RecyclerView实现九宫格和点击事件
- 数据库优化
- 带权树_weighttree_中后序建树
- 简单工厂、工厂方法、抽象工厂、策略模式、策略与工厂的区别
- 好的MFC库
- Binder
- PHP之预防sql注入
- R语言画图入门
- android 学习RxJava+Retrofit的资料