StickerAdapter.java
5.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
package com.cnlive.cnUploadDemo.sticker;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import com.cnlive.cnUploadDemo.R;
import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiskCache;
import com.nostra13.universalimageloader.cache.disc.naming.HashCodeFileNameGenerator;
import com.nostra13.universalimageloader.cache.memory.impl.LruMemoryCache;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.nostra13.universalimageloader.core.assist.QueueProcessingType;
import com.nostra13.universalimageloader.core.decode.BaseImageDecoder;
import com.nostra13.universalimageloader.core.download.BaseImageDownloader;
import com.nostra13.universalimageloader.utils.StorageUtils;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
/**
* Created by Lynn on 6/13/2017.
*/
public class StickerAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private static final String DEFAULT_PATH = "assets://";
public DisplayImageOptions mImageOptions = new DisplayImageOptions.Builder()
.cacheInMemory(true)
.showImageOnLoading(null)
.build();
private Context mContext;
private ImageClick mImageClick = new ImageClick();
private List<String> mImagePathList = new ArrayList<>();
private OnStickerItemClick mOnStickerItemClick;
public StickerAdapter(Context context) {
super();
this.mContext = context;
initImageLoader();
}
public void setOnStickerItemClick(OnStickerItemClick click) {
mOnStickerItemClick = click;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view;
view = LayoutInflater.from(parent.getContext()).inflate(R.layout.sticker_item, parent, false);
ImageHolder holder = new ImageHolder(view);
return holder;
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
ImageHolder imageHolder = (ImageHolder) holder;
String path = mImagePathList.get(position);
ImageLoader.getInstance().displayImage(DEFAULT_PATH + path, imageHolder.image, mImageOptions);
imageHolder.image.setTag(path);
imageHolder.image.setOnClickListener(mImageClick);
}
@Override
public int getItemCount() {
return mImagePathList.size();
}
@Override
public int getItemViewType(int position) {
return 1;
}
private void initImageLoader() {
File cacheDir = StorageUtils.getCacheDirectory(mContext);
int MAXMEMONRY = (int) Runtime.getRuntime().maxMemory();
DisplayImageOptions defaultOption = new DisplayImageOptions.Builder()
.cacheInMemory(true)
.cacheOnDisk(true)
.build();
ImageLoaderConfiguration configuration = new ImageLoaderConfiguration.Builder(mContext)
.memoryCacheExtraOptions(480, 800)
.defaultDisplayImageOptions(defaultOption)
.diskCacheExtraOptions(480, 800, null)
.threadPoolSize(3)
.threadPriority(Thread.NORM_PRIORITY - 2)
.tasksProcessingOrder(QueueProcessingType.FIFO)
.denyCacheImageMultipleSizesInMemory()
.memoryCache(new LruMemoryCache(MAXMEMONRY / 5))
.diskCache(new UnlimitedDiskCache(cacheDir))
.diskCacheFileNameGenerator(new HashCodeFileNameGenerator())
.imageDownloader(new BaseImageDownloader(mContext))
.imageDecoder(new BaseImageDecoder(false))
.defaultDisplayImageOptions(DisplayImageOptions.createSimple())
.build();
ImageLoader.getInstance().init(configuration);
}
public void addStickerImage(String folderPath) {
mImagePathList.clear();
try {
String[] files = mContext.getAssets().list(folderPath);
for (String name : files) {
mImagePathList.add(folderPath + File.separator + name);
}
} catch (IOException e) {
e.printStackTrace();
}
this.notifyDataSetChanged();
}
public class ImageHolder extends RecyclerView.ViewHolder {
public ImageView image;
public ImageHolder(View itemView) {
super(itemView);
this.image = (ImageView) itemView.findViewById(R.id.sticker_img);
}
}
/**
* 选择贴图
*/
private final class ImageClick implements View.OnClickListener {
@Override
public void onClick(View view) {
String data = (String) view.getTag();
if (mOnStickerItemClick != null)
mOnStickerItemClick.selectedStickerItem(data);
}
}
public interface OnStickerItemClick {
void selectedStickerItem(String path);
}
}