最近正在做一个机顶盒的项目,仿照蜜蜂视频TV版做了个VOD。实现了gridview选中放大,并且放大时弹出底部说明。

首先自定义一个girdview:

public class VodGridView extends GridView{private int position = 0;public VodGridView(Context context) {super(context);}public VodGridView(Context context, AttributeSet attrs) {super(context, attrs);}public VodGridView(Context context, AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);}public void setCurrentPosition(int pos) {// 刷新adapter前,在activity中调用这句传入当前选中的item在屏幕中的次序this.position = pos;}@SuppressLint("NewApi")@Overrideprotected void setChildrenDrawingOrderEnabled(boolean enabled) {// TODO Auto-generated method stubsuper.setChildrenDrawingOrderEnabled(enabled);}@Overrideprotected int getChildDrawingOrder(int childCount, int i) {if (i == childCount - 1) {// 这是最后一个需要刷新的itemreturn position;}if (i == position) {// 这是原本要在最后一个刷新的itemreturn childCount - 1;}return i;// 正常次序的item}
}

xml布局:

<view.VodGridViewandroid:id="@+id/vod_list_gridview"android:layout_width="match_parent"android:layout_height="fill_parent"android:layout_marginBottom="19dp"android:numColumns="6"android:verticalSpacing="40dp"android:horizontalSpacing="10dp"android:stretchMode="columnWidth"android:gravity="center"android:cacheColorHint="#00ffffff"android:fadeScrollbars="false"android:scrollbars="none"android:listSelector="#00000000">

adapter:

public class VodGridviewAdapter extends BaseAdapter{private Context context;private ArrayList<VodListModel> list;private ViewHolder viewHolder;/** 图片加载类 */public ImageLoader imageLoader;private DisplayImageOptions options;private Animation scaleBigAnimation;/*当前选中item标示*/private int selected = -1;/*当前gridview是否获取焦点*/private boolean mFocus=false;public VodGridviewAdapter(Context context, ArrayList<VodListModel> list) {this.context = context;this.list = list;imageLoader = ImageLoader.getInstance();//显示图片的配置options = new DisplayImageOptions.Builder().showImageOnLoading(R.drawable.downloading_bg).showImageOnFail(R.drawable.downloading_bg).cacheInMemory(true).cacheOnDisk(true).bitmapConfig(Bitmap.Config.RGB_565).displayer(new RoundedBitmapDisplayer(20)).build();}@Overridepublic int getCount() {return list.size();}@Overridepublic Object getItem(int position) {return list.get(position);}@Overridepublic long getItemId(int position) {return position;}public void notifyDataSetChanged(int id) {selected = id;super.notifyDataSetChanged();}public void setFocus(boolean focus){mFocus=focus;notifyDataSetChanged();}@Overridepublic View getView(final int position, View convertView, ViewGroup parent) {if(convertView==null){viewHolder=new ViewHolder();convertView= LayoutInflater.from(context).inflate(R.layout.item_vod_gridview,null);viewHolder.bottomLin= (LinearLayout) convertView.findViewById(R.id.item_vod_gridview_bottom_lin);viewHolder.img= (ImageView) convertView.findViewById(R.id.item_vod_gridview_img);viewHolder.name1Txt= (TextView) convertView.findViewById(R.id.item_vod_gridview_name_1_txt);viewHolder.nameTxt= (TextView) convertView.findViewById(R.id.item_vod_gridview_name_txt);viewHolder.scoreTxt= (TextView) convertView.findViewById(R.id.item_vod_gridview_score_txt);viewHolder.timeTxt= (TextView) convertView.findViewById(R.id.item_vod_gridview_time_txt);viewHolder.frameImg= (ImageView) convertView.findViewById(R.id.item_vod_gridview_frame_img);convertView.setTag(viewHolder);}else{viewHolder= (ViewHolder) convertView.getTag();}if(selected==position&&mFocus){//选中当前item并且获取焦点//放大itemzoomOut(convertView);//弹出名称与时间viewHolder.name1Txt.setVisibility(View.GONE);viewHolder.bottomLin.setVisibility(View.VISIBLE);zoomTop(viewHolder.bottomLin);}else{//取消所有效果convertView.clearAnimation();viewHolder.bottomLin.clearAnimation();viewHolder.name1Txt.setVisibility(View.VISIBLE);viewHolder.bottomLin.setVisibility(View.GONE);}viewHolder.name1Txt.setText(list.get(position).getTitle());viewHolder.timeTxt.setText(list.get(position).getDuration());viewHolder.nameTxt.setText(list.get(position).getTitle());viewHolder.scoreTxt.setText(list.get(position).getRate());imageLoader.displayImage(list.get(position).getLogo(), viewHolder.img,options);return convertView;}private class ViewHolder{ImageView img;TextView scoreTxt;LinearLayout bottomLin;TextView name1Txt;TextView nameTxt;TextView timeTxt;ImageView frameImg;}private void zoomOut(View v) {if (scaleBigAnimation == null) {scaleBigAnimation = AnimationUtils.loadAnimation(context, R.anim.anim_scale_big);}v.startAnimation(scaleBigAnimation);}private void zoomTop(View v){Animation topAnimation = AnimationUtils.loadAnimation(context, R.anim.vod_item_bottom_from_top);v.startAnimation(topAnimation);}
}

Activity内初始化gridview,并对gridview做以下处理:

gridView.setOnFocusChangeListener(new View.OnFocusChangeListener() {@Overridepublic void onFocusChange(View v, boolean hasFocus) {Log.e("焦点111111",hasFocus+"//");vodGridviewAdapter.setFocus(hasFocus);}});gridView.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {@Overridepublic void onItemSelected(AdapterView<?> parent, View view, int position, long id) {Log.e("选中item","///"+position);gridView.setCurrentPosition(position);vodGridviewAdapter.notifyDataSetChanged(position);}

这样就可以了。

最后附上动画

anim_scale_big
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"android:fillAfter="true"android:fillBefore="true"android:shareInterpolator="false" ><scaleandroid:duration="100"android:fromXScale="1.0"android:fromYScale="1.0"android:interpolator="@android:anim/accelerate_decelerate_interpolator"android:pivotX="50.0%"android:pivotY="50.0%"android:repeatCount="0"android:toXScale="1.05"android:toYScale="1.05" />
</set>
vod_item_bottom_from_top
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"android:fillAfter="true"><translateandroid:fromYDelta="100%"android:toYDelta="0"android:duration="300"/>
</set>

仿蜜蜂视频TV实现gridview选中放大,并且放大时弹出底部说明相关推荐

  1. 一对一视频聊天软件源码,实现简单侧边栏弹出动画

    一对一视频聊天软件源码,实现简单侧边栏弹出动画的相关代码 <!DOCTYPE html> <html lang="en"><head><m ...

  2. android 仿微信demo————微信顶部操作栏加号按钮实现(弹出子菜单)

    android 仿微信demo----微信启动界面实现 android 仿微信demo----注册功能实现(移动端) android 仿微信demo----注册功能实现(服务端) android 仿微 ...

  3. 高德地图js API实现鼠标悬浮于点标记时弹出信息窗体显示详情,点击点标记放大地图操作

    高德地图js API实现:鼠标悬浮于点标记时,弹出信息窗体显示详情,点击点标记时放大地图 <!doctype html> <html> <head><meta ...

  4. android+tv+自动切换,Android TV 重写GridView,实现焦点放大效果

    关于缩放,使用了view.setScaleX/Y 方法,api11以上即可. 重写dispatchDraw(),绘制选中项的焦点效果.(注意带阴影的焦点图需要微调偏移量) 要将选中项绘制显示在顶层,所 ...

  5. [导入]C# Tips 2 右键单击listBox时弹出右键菜单并选中单击的行

    C#,Listbox,右键,菜单,选中 文章来源:http://blog.csdn.net/geyunfei_hit/archive/2008/07/16/2661153.aspx 转载于:https ...

  6. GridView实现删除时弹出确认对话框

    在RowDataBound事件中添加如下代码:  1 protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs ...

  7. jQuery: 仿select下拉框效果,点击空白关闭弹出层,判断是否被mouseover

    1. 方法一 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www. ...

  8. Android TV开发总结(四)通过RecycleView构建一个TV app列表页(仿腾讯视频TV版)

    转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/52854131 前言:昨晚看锤子手 ...

  9. android+高仿视频录制,android高仿微信视频编辑页

    android高仿微信视频编辑页-视频多张图片提取 上一篇中介绍了有关视频提取图片的知识点,如果对这个不太了解 建议看下android提取视频多张图片和视频信息之前这篇. 这里实现的是仿微信的视频编辑 ...

最新文章

  1. Http 请求头中的 Proxy-Connection
  2. 使用MEF实现通用参数设置
  3. VR开发从何入手的实战分享
  4. 当TFS/VSTS遇上Power BI
  5. LeetCode MySQL 626. 换座位
  6. 【推荐实践】“全能选手”召回表征算法实践.pdf(附下载链接)
  7. 蓝屏:微软撤回 Windows 8.1 八月更新等4个补丁
  8. POJ 2182 Lost Cows
  9. 电脑右击文件夹无反应
  10. android界面设计中用的字体,APP界面设计必备!最全UI设计字体规范
  11. Python3使用xpath爬取豆丁网文档
  12. Windows下kafka的下载安装
  13. apktool反编译apk,并重新打包
  14. SIM800L上传数据到OneNET(HTTP)
  15. BDF2各模块依赖关系
  16. 作为程序员,应该更关注代码质量还是只需要完成功能就好了?
  17. python语言支持函数式编程_python 函数式编程学习笔记
  18. 基于python的国内外研究现状怎么写_毕业论文中的国内外研究现状怎么写啊
  19. 1131 拯救大兵瑞恩(单源最短路径扩展-拆点(dp))
  20. PTA 一维数组 7-3 删除指定数据

热门文章

  1. 【Python】数据分析——直方图、散点图、线性回归、多项式回归、拟合度
  2. janus videoroom之媒体录制
  3. 论文导读:Deep Attentive Learning for Stock Movement Prediction From Social Media Text and Company Correl
  4. 图解法求最优解的例题_简单的线性规划求最优解
  5. vs 项目重新生成无反应,仍然执行之前原先代码
  6. 图像处理随笔之峰值信噪比(peak signal to noise ratio)
  7. 谷歌地球桌面版Google earth pro连不上服务器,地点备份
  8. 老大让我优化数据库,我上来就分库分表,他过来就是一jio
  9. windows 的cmd设置代理方法
  10. matlab 不允许函数定义,MATLAB中此上下文中不允许出现函数定义,急求~