RecycleView实现各种尺寸图片展示

这篇文章主要为大家详细介绍了RecycleView实现各种尺寸图片展示,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了RecycleView实现各种尺寸图片展示的具体代码,供大家参考,具体内容如下

今天才发现,在一个RecycleView里可以展示各种尺寸的图片,贴图如下:

代码如下:

 package com.hisense.movienow.HorizontalView; import android.content.Context; import android.content.Intent; import android.net.Uri; import android.support.annotation.NonNull; import android.support.v4.view.ViewCompat; import android.support.v7.widget.RecyclerView; import android.util.Log; import java.util.List; /** * Created by wangcm on 2018/11/13. */ public class SimpleRecyclerAdapter extends RecyclerView.Adapter { private static final String TAG = SimpleRecyclerAdapter.class.getSimpleName(); private LayoutInflater mInflater; private List mListOfApps; private int currentPosition = 0; private Context context; public static enum ITEM_TYPE { ITEM_TYPE_MOVIE, ITEM_TYPE_APP, ITEM_TYPE_CHANNEL } List movieCategories; public SimpleRecyclerAdapter(Context context, List mListOfApps){ mInflater = LayoutInflater.from(context); this.context = context; this.mListOfApps = mListOfApps; } public SimpleRecyclerAdapter(Context context, List mListOfApps,List movieCategories){ mInflater = LayoutInflater.from(context); this.context = context; this.mListOfApps = mListOfApps; this.movieCategories = movieCategories; } @SuppressWarnings("unused") public void setData(List mListOfApps){ this.mListOfApps = mListOfApps; } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { if(viewType == ITEM_TYPE.ITEM_TYPE_MOVIE.ordinal()){ return new ViewHolder(mInflater.inflate(R.layout.movie_item_layout,parent,false)); }else if(viewType == ITEM_TYPE.ITEM_TYPE_CHANNEL.ordinal()){ return new ChanneHolder(mInflater.inflate(R.layout.search_channel_item,parent,false)); }else{ return new AppViewHolder(mInflater.inflate(R.layout.home_app_item,parent,false)); } } public int getItemViewType(int position){ if(mListOfApps != null){ if(mListOfApps.get(position).getType() != null && mListOfApps.get(position).getType().equalsIgnoreCase("app")){ return ITEM_TYPE.ITEM_TYPE_APP.ordinal(); }else if(mListOfApps.get(position).getType() != null && mListOfApps.get(position).getType().equals("Channel")){ return ITEM_TYPE.ITEM_TYPE_CHANNEL.ordinal(); }else { return ITEM_TYPE.ITEM_TYPE_MOVIE.ordinal(); } }else{ return ITEM_TYPE.ITEM_TYPE_MOVIE.ordinal(); } } @Override public void onBindViewHolder(final RecyclerView.ViewHolder holder, final int position) { final VideoCateContent videoCateContent = mListOfApps.get(position); if(holder instanceof ViewHolder){ Glide.with(context).load(videoCateContent.getPoster()).into(((ViewHolder)holder).mImageView); ((ViewHolder)holder).mTextView.setText(videoCateContent.getTitle()); ViewGroup.LayoutParams params = ((ViewHolder)holder).mImageView.getLayoutParams(); ViewGroup.LayoutParams txtParams = ((ViewHolder)holder).mTextView.getLayoutParams(); if(videoCateContent.getPoster_type() == 0){//竖海报 params.width = 166; txtParams.width = 166; }else{ params.width = 444; txtParams.width = 444; //                RecyclerView.ItemDecoration itemDecoration = ((RecyclerView)holder.itemView.getParent()).getItemDecorationAt(position); } if(videoCateContent.getIs_new() == 1){ ((ViewHolder)holder).newImage.setVisibility(View.VISIBLE); }else{ ((ViewHolder)holder).newImage.setVisibility(View.GONE); } ((ViewHolder)holder).mImageView.setLayoutParams(params); ((ViewHolder)holder).mTextView.setLayoutParams(txtParams); holder.itemView.setOnFocusChangeListener(new View.OnFocusChangeListener() { @Override public void onFocusChange(View v, boolean hasFocus) { if (hasFocus) { currentPosition = (int) holder.itemView.getTag(); ViewCompat.animate(holder.itemView).scaleX(1.10f).scaleY(1.10f).start(); int bigPostion = 0; if(movieCategories != null && movieCategories.size() != 0){ bigPostion = getCurrentIndex(); } mOnItemSelectListener.onItemSelect(holder.itemView, position,bigPostion); ((ViewHolder)holder).mImageView.setBorderColor(context.getResources().getColor(R.color.white),context.getResources().getColor(R.color.black),context.getResources().getColor(R.color.app_text_color)); ((ViewHolder)holder).mTextView.setSelected(true); ((ViewHolder)holder).mTextView.setTextColor(context.getResources().getColor(R.color.white)); ((ViewHolder)holder).newImage.setPadding(3,3,0,0); } else { int bigPostion = 0; if(movieCategories != null && movieCategories.size() != 0){ bigPostion = getCurrentIndex(); } mOnItemNoSelectListener.onItemNoSelect(holder.itemView,position,bigPostion); ViewCompat.animate(holder.itemView).scaleX(1.0f).scaleY(1.0f).start(); ((ViewHolder)holder).mImageView.setBorderColor(context.getResources().getColor(R.color.trans),context.getResources().getColor(R.color.trans),context.getResources().getColor(R.color.trans)); ((ViewHolder)holder).mTextView.setSelected(false); ((ViewHolder)holder).mTextView.setTextColor(context.getResources().getColor(R.color.title_color)); ((ViewHolder)holder).newImage.setPadding(0,0,0,0); } } }); }else if(holder instanceof AppViewHolder){ Glide.with(context).load(videoCateContent.getPoster()).into(((AppViewHolder)holder).mAppImageView); ((AppViewHolder)holder).tv_appName.setText(videoCateContent.getTitle()); holder.itemView.setOnFocusChangeListener(new View.OnFocusChangeListener() { @Override public void onFocusChange(View v, boolean hasFocus) { if (hasFocus) { currentPosition = (int) holder.itemView.getTag(); ViewCompat.animate(holder.itemView).scaleX(1.10f).scaleY(1.10f).start(); int bigPostion = 0; if(movieCategories != null && movieCategories.size() != 0){ bigPostion = getCurrentIndex(); } mOnItemSelectListener.onItemSelect(holder.itemView, position,bigPostion); ((AppViewHolder)holder).tv_appName.setVisibility(View.VISIBLE); ((AppViewHolder)holder).mAppImageView.setBorderColor(context.getResources().getColor(R.color.white),context.getResources().getColor(R.color.black),context.getResources().getColor(R.color.app_text_color)); } else { int bigPostion = 0; if(movieCategories != null && movieCategories.size() != 0){ bigPostion = getCurrentIndex(); } mOnItemNoSelectListener.onItemNoSelect(holder.itemView,position,bigPostion); ViewCompat.animate(holder.itemView).scaleX(1.0f).scaleY(1.0f).start(); ((AppViewHolder)holder).tv_appName.setVisibility(View.GONE); ((AppViewHolder)holder).mAppImageView.setBorderColor(context.getResources().getColor(R.color.trans),context.getResources().getColor(R.color.trans),context.getResources().getColor(R.color.trans)); } } }); }else if(holder instanceof ChanneHolder){ Glide.with(context).load(videoCateContent.getPoster()).into(((ChanneHolder)holder).mChannelImg); ((ChanneHolder)holder).tv_channelName.setText(videoCateContent.getTitle()); holder.itemView.setOnFocusChangeListener(new View.OnFocusChangeListener() { @Override public void onFocusChange(View v, boolean hasFocus) { if (hasFocus) { currentPosition = (int) holder.itemView.getTag(); ViewCompat.animate(holder.itemView).scaleX(1.10f).scaleY(1.10f).start(); int bigPostion = 0; if(movieCategories != null && movieCategories.size() != 0){ bigPostion = getCurrentIndex(); } mOnItemSelectListener.onItemSelect(holder.itemView, position,bigPostion); ((ChanneHolder)holder).tv_channelName.setSelected(true); ((ChanneHolder)holder).mChannelImg.setBorderColor(context.getResources().getColor(R.color.white),context.getResources().getColor(R.color.black),context.getResources().getColor(R.color.app_text_color)); } else { int bigPostion = 0; if(movieCategories != null && movieCategories.size() != 0){ bigPostion = getCurrentIndex(); } mOnItemNoSelectListener.onItemNoSelect(holder.itemView,position,bigPostion); ViewCompat.animate(holder.itemView).scaleX(1.0f).scaleY(1.0f).start(); ((ChanneHolder)holder).tv_channelName.setSelected(false); ((ChanneHolder)holder).mChannelImg.setBorderColor(context.getResources().getColor(R.color.trans),context.getResources().getColor(R.color.trans),context.getResources().getColor(R.color.trans)); } } }); } // 设置itemView可以获得焦点 holder.itemView.setFocusable(true); holder.itemView.setTag(position); holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if(!CommonUtils.getInstance(context).isNetworkConnected()){ Toast.makeText(context,context.getResources().getString(R.string.no_net),Toast.LENGTH_SHORT).show(); return; } mOnItemClickListener.onItemClick(v, position); if(videoCateContent.getHas_detail_page() == 1){ Intent intent = new Intent(context,DetailActivity.class); intent.putExtra("media_id",videoCateContent.getId()); context.startActivity(intent); }else if(videoCateContent.getType().equalsIgnoreCase(context.getString(R.string.App))){ String pkgName = getPackageName(videoCateContent.getTitle()); if(pkgName != null){ Log.e(TAG,"pkgName======="+pkgName); //                        if(CommonUtils.getInstance(context).isInstalled(context,pkgName)){ CommonUtils.getInstance(context).openApp((MainActivity)context,pkgName); //                        } }else{ String searchStr = videoCateContent.getTitle(); Intent intent= new Intent(Intent.ACTION_VIEW); intent.setData(Uri.parse("market://search?q="+searchStr)); context.startActivity(intent); } }else{ if(!CommonUtils.getInstance(context).isNetworkConnected()){ Toast.makeText(context,context.getResources().getString(R.string.no_net),Toast.LENGTH_SHORT).show(); return; } HistoryBean historyBean = new HistoryBean(); historyBean.setWatchTime(System.currentTimeMillis()); historyBean.setVideoInfo(videoCateContent); for(int i = 0; i49){ if(i > 48){ Constant.historyBeanList.remove(i); } } } Constant.historyBeanList.add(0,historyBean); SaveValue.getInstance(context).setDataList("history",Constant.historyBeanList); Log.e(TAG,"deep_linking="+videoCateContent.getDeep_linking()); String deepLinking = videoCateContent.getDeep_linking(); if(deepLinking.contains("youtube")){ final String packageName = getPackageName("youtube"); if(!CommonUtils.getInstance(context).isInstalled(context,packageName)){ DialogHelper.getBaseDialogWithTextAndTitle("",context,"",new View.OnClickListener(){ @Override public void onClick(View v) { Intent searchIntent= new Intent(Intent.ACTION_VIEW); searchIntent.setData(Uri.parse("market://search?q="+packageName)); context.startActivity(searchIntent); } },new View.OnClickListener(){ @Override public void onClick(View v) { } } ).show(); return; } String[] param = deepLinking.split("&"); Intent webIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://************?"+param[param.length-1])); webIntent.setPackage(packageName); context.startActivity(webIntent); }else{ Intent intent = new Intent(); intent.setAction(Intent.ACTION_VIEW); Uri uri = Uri.parse(videoCateContent.getDeep_linking()); intent.setData(uri); context.startActivity(intent); } } } }); holder.itemView.setOnKeyListener(new View.OnKeyListener() { @Override public boolean onKey(View v, int keyCode, KeyEvent event) { //                mOnItemKeyListener.OnItemKey(v, keyCode, event, currentPosition); return false; } }); } /* *  get app package name * */ public String getPackageName(String title){ Log.e(TAG,"title="+title.substring(0,4)); for(int i=0;i

另外一种显示方式:

以上就是RecycleView实现各种尺寸图片展示的详细内容,更多请关注0133技术站其它相关文章!

赞(0) 打赏
未经允许不得转载:0133技术站首页 » 移动