您的位置:首页 > 其它

RecyclerView实现九宫格和点击事件

2016-03-23 14:52 260 查看
想要实现的效果如下:

开始界面:



点击界面展示:



在屏幕中间弹出一个对话框,效果就如同将图片放大一样。不过当然,这里的图片放大并非真正意义上的拉伸,而是展示出较大的那张图片。

若是不打算用两张图片,也可以自定义大小,这里因为只是简单的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>


MainActivity:
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下载链接
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: