我的编程空间,编程开发者的网络收藏夹
学习永远不晚

RecycleView实现各种尺寸图片展示

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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;
 

 
public class SimpleRecyclerAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
    private static final String TAG = SimpleRecyclerAdapter.class.getSimpleName();
    private LayoutInflater mInflater;
    private List<VideoCateContent> mListOfApps;
    private int currentPosition = 0;
    private Context context;
    public static enum ITEM_TYPE {
        ITEM_TYPE_MOVIE,
        ITEM_TYPE_APP,
        ITEM_TYPE_CHANNEL
    }
    List<MovieCategory> movieCategories;
 
    public SimpleRecyclerAdapter(Context context, List<VideoCateContent> mListOfApps){
        mInflater = LayoutInflater.from(context);
        this.context = context;
        this.mListOfApps = mListOfApps;
    }
    public SimpleRecyclerAdapter(Context context, List<VideoCateContent> mListOfApps,List<MovieCategory> movieCategories){
        mInflater = LayoutInflater.from(context);
        this.context = context;
        this.mListOfApps = mListOfApps;
        this.movieCategories = movieCategories;
    }
 
 
    @SuppressWarnings("unused")
    public void setData(List<VideoCateContent> 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; i< Constant.historyBeanList.size(); i++){
                        HistoryBean bean = Constant.historyBeanList.get(i);
                        if(bean.getVideoInfo().getId() == historyBean.getVideoInfo().getId()){
                            Constant.historyBeanList.remove(bean);
                        }
                        if(Constant.historyBeanList.size() >49){
                            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:/
    public String getPackageName(String title){
        Log.e(TAG,"title="+title.substring(0,4));
        for(int i=0;i<Constant.packageNames.length;i++){
            String packageName = Constant.packageNames[i];
            if(packageName.contains(title.substring(0,4).toLowerCase())){
                return packageName;
            }
        }
        return null;
    }
 
    @Override
    public int getItemCount() {
        return mListOfApps.size();
    }
 
    class ViewHolder extends RecyclerView.ViewHolder{
        LinearLayout ll_movieItem;
        BoundsImageView mImageView;
        TextView mTextView;
        ImageView newImage;
 
        ViewHolder(View itemView) {
            super(itemView);
            mImageView = itemView.findViewById(R.id.movie_image);
            mTextView = itemView.findViewById(R.id.movie_title);
            newImage = itemView.findViewById(R.id.iv_newFlag);
        }
    }
 
    class AppViewHolder extends RecyclerView.ViewHolder{
        BoundsImageView mAppImageView;
        TextView tv_appName;
        AppViewHolder(View itemView) {
            super(itemView);
            mAppImageView = itemView.findViewById(R.id.iv_app);
            tv_appName = itemView.findViewById(R.id.tv_appName);
        }
    }
 
    class ChanneHolder extends RecyclerView.ViewHolder{
        BoundsImageView mChannelImg;
        TextView tv_channelName;
 
        public ChanneHolder(View itemView) {
            super(itemView);
            mChannelImg = itemView.findViewById(R.id.iv_channel);
            tv_channelName = itemView.findViewById(R.id.tv_channelName);
        }
    }
 
    private OnItemSelectListener mOnItemSelectListener;
    private OnItemClickListener mOnItemClickListener;
    private OnItemLongClickListener mOnItemLongClickListener;
    private OnItemKeyListener mOnItemKeyListener;
    private OnItemNoSelectListener mOnItemNoSelectListener;
 
    public interface OnItemSelectListener {
        void onItemSelect(View view, int position,int bigPosition);
    }
 
    public interface OnItemClickListener {
        void onItemClick(View view, int position);
    }
 
    public interface OnItemLongClickListener {
        void onItemLongClick(View view, int position);
    }
 
    public interface OnItemKeyListener {
        void OnItemKey(View view, int keyCode, KeyEvent event, int position);
    }
 
    public interface OnItemNoSelectListener {
        void onItemNoSelect(View view, int position,int bigPosition);
    }
    public void setOnItemNoSelectListener(OnItemNoSelectListener listener){
        mOnItemNoSelectListener = listener;
    }
 
    public void setOnItemSelectListener(OnItemSelectListener listener){
        mOnItemSelectListener = listener;
    }
 
    public void setOnItemClickListener(OnItemClickListener mOnItemClickListener) {
        this.mOnItemClickListener = mOnItemClickListener;
    }
 
    public void setOnItemLongClickListener(OnItemLongClickListener mOnItemLongClickListener) {
        this.mOnItemLongClickListener = mOnItemLongClickListener;
    }
 
    public void setOnItemKeyListener(OnItemKeyListener mOnItemKeyListener) {
        this.mOnItemKeyListener = mOnItemKeyListener;
    }
 
    public int getCurrentIndex(){
        for(int i=0;i<movieCategories.size();i++){
            MovieCategory movieCategory = movieCategories.get(i);
            if(movieCategory.getMovieItemList().equals(mListOfApps)){
                return i;
            }
        }
        return 0;
    }
 
}

另外一种显示方式:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

RecycleView实现各种尺寸图片展示

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

RecycleView如何实现各种尺寸图片展示

这篇文章主要介绍RecycleView如何实现各种尺寸图片展示,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!今天才发现,在一个RecycleView里可以展示各种尺寸的图片,贴图如下:代码如下:package com
2023-06-15

基于Python实现批量缩放图片(视频)尺寸

这篇文章主要为大家详细介绍了如何通过Python语言实现批量缩放图片(视频)尺寸的功能,文中的示例代码简洁易懂,感兴趣的小伙伴可以跟随小编一起了解一下
2023-03-24

基于Python如何实现批量缩放图片尺寸

今天小编给大家分享一下基于Python如何实现批量缩放图片尺寸的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。方法一在 Pil
2023-07-05

如何实现在MAC中用Shell脚本批量裁剪各种尺寸的App图标

本篇内容主要讲解“如何实现在MAC中用Shell脚本批量裁剪各种尺寸的App图标”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何实现在MAC中用Shell脚本批量裁剪各种尺寸的App图标”吧!
2023-06-09

Python技巧之实现批量统一图片格式和尺寸

大家在工作的时候基本都会接触到很多的图片,有时为了不同的工作需求需要修改图片的尺寸或者大小。本文为大家整理了Python批量转换图片格式和统一图片尺寸,希望对大家有所帮助
2023-05-19

Python实现更改图片尺寸大小的方法(基于Pillow包)

本文实例讲述了Python实现更改图片尺寸大小的方法。分享给大家供大家参考,具体如下: 1、PIL包推荐Pillow 。 2、源码:#encoding=utf-8 #author: walker #date: 2014-05-15 #fun
2022-06-04

Python实现图像尺寸和格式转换处理的示例详解

这篇文章主要为大家详细介绍了如何利用Python实现图像尺寸获取和格式转换处理的功能,文中的示例代码讲解详细,感兴趣的可以了解一下
2023-05-14

java怎么实现图片的展示

在Java中,可以使用JavaFX库来实现图片的展示。以下是一个简单的示例代码,演示了如何在JavaFX中展示图片:```javaimport javafx.application.Application;import javafx.sce
2023-08-20

小程序如何实现全屏展示图片

这篇文章主要介绍“小程序如何实现全屏展示图片”,在日常操作中,相信很多人在小程序如何实现全屏展示图片问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”小程序如何实现全屏展示图片”的疑惑有所帮助!接下来,请跟着小编
2023-06-26

PHP图像处理函数实现各种图片操作功能的技巧

PHP图像处理函数是PHP提供的一系列用于对图片进行各种操作的函数。借助这些函数,我们可以实现诸如缩放、裁剪、旋转、加水印等各种图片操作功能。本文将介绍一些利用PHP图像处理函数实现这些功能的技巧。一、缩放图片缩放图片是最常见的图片操作功能
PHP图像处理函数实现各种图片操作功能的技巧
2023-11-20

编程热搜

  • Android:VolumeShaper
    VolumeShaper(支持版本改一下,minsdkversion:26,android8.0(api26)进一步学习对声音的编辑,可以让音频的声音有变化的播放 VolumeShaper.Configuration的三个参数 durati
    Android:VolumeShaper
  • Android崩溃异常捕获方法
    开发中最让人头疼的是应用突然爆炸,然后跳回到桌面。而且我们常常不知道这种状况会何时出现,在应用调试阶段还好,还可以通过调试工具的日志查看错误出现在哪里。但平时使用的时候给你闹崩溃,那你就欲哭无泪了。 那么今天主要讲一下如何去捕捉系统出现的U
    Android崩溃异常捕获方法
  • android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
    系统的设置–>电池–>使用情况中,统计的能耗的使用情况也是以power_profile.xml的value作为基础参数的1、我的手机中power_profile.xml的内容: HTC t328w代码如下:
    android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
  • Android SQLite数据库基本操作方法
    程序的最主要的功能在于对数据进行操作,通过对数据进行操作来实现某个功能。而数据库就是很重要的一个方面的,Android中内置了小巧轻便,功能却很强的一个数据库–SQLite数据库。那么就来看一下在Android程序中怎么去操作SQLite数
    Android SQLite数据库基本操作方法
  • ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
    工作的时候为了方便直接打开编辑文件,一些常用的软件或者文件我们会放在桌面,但是在ubuntu20.04下直接直接拖拽文件到桌面根本没有效果,在进入桌面后发现软件列表中的软件只能收藏到面板,无法复制到桌面使用,不知道为什么会这样,似乎并不是很
    ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
  • android获取当前手机号示例程序
    代码如下: public String getLocalNumber() { TelephonyManager tManager =
    android获取当前手机号示例程序
  • Android音视频开发(三)TextureView
    简介 TextureView与SurfaceView类似,可用于显示视频或OpenGL场景。 与SurfaceView的区别 SurfaceView不能使用变换和缩放等操作,不能叠加(Overlay)两个SurfaceView。 Textu
    Android音视频开发(三)TextureView
  • android获取屏幕高度和宽度的实现方法
    本文实例讲述了android获取屏幕高度和宽度的实现方法。分享给大家供大家参考。具体分析如下: 我们需要获取Android手机或Pad的屏幕的物理尺寸,以便于界面的设计或是其他功能的实现。下面就介绍讲一讲如何获取屏幕的物理尺寸 下面的代码即
    android获取屏幕高度和宽度的实现方法
  • Android自定义popupwindow实例代码
    先来看看效果图:一、布局
  • Android第一次实验
    一、实验原理 1.1实验目标 编程实现用户名与密码的存储与调用。 1.2实验要求 设计用户登录界面、登录成功界面、用户注册界面,用户注册时,将其用户名、密码保存到SharedPreference中,登录时输入用户名、密码,读取SharedP
    Android第一次实验

目录