`

android GridView 选中后 图片变大 图片放大不会被遮住

 
阅读更多

package com.video.browse;

import java.io.File;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import com.video.browse.adapter.VideoAdapter;
import com.video.browse.ui.VideoGridView;
import com.video.browse.util.Constant;
import com.video.browse.util.FileFind;
import com.video.browse.util.FileVoideInfo;
import com.video.browse.util.MediaFormat;

import android.R.bool;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.GridView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemSelectedListener;
import android.app.Activity;

public class MainActivity extends Activity {
	private static final String TAG = "MainActivity";
	List<FileVoideInfo> list = new ArrayList<FileVoideInfo>();
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		if (FileFind.isFileName(Constant.MOVIE_PATH_SD)) {
			File filePath = new File(Constant.FILE_PATH);
			list = FileFind.getFileList(filePath, true);
			Log.i(TAG, "list size:"+list.size());
		}
		
		final VideoGridView gridview = (VideoGridView) findViewById(R.id.gridview);
		VideoAdapter mImageAdapter = new VideoAdapter(this,list);
		gridview.setAdapter(mImageAdapter);
		gridview.setOnItemClickListener(new OnItemClickListener() {
			
			public void onItemClick(AdapterView<?> parent, View view,
					int position, long id) {
				Toast.makeText(MainActivity.this, "" + position,Toast.LENGTH_SHORT).show();// 显示信息;
				 
			}
			
		});
		gridview.setOnItemSelectedListener(new OnItemSelectedListener() {  
		    public void onItemSelected(AdapterView<?> arg0, View arg1,  
		    	    int arg2, long arg3) {  
		    	    Log.d("zonesView", "onItemSelected");
		    	    gridview.setCurrentPosition(arg2);
		    	    VideoAdapter zonesImageAdapter = (VideoAdapter) gridview.getAdapter();  
		    	    zonesImageAdapter.notifyDataSetChanged(arg2);  
		    	    }    
		    	   public void onNothingSelected(AdapterView<?> arg0) {  
		    	        // TODO Auto-generated method stub  
		    	           
		    	    }           
		    	});
		
	}

	@Override
	protected void onStart() {
		super.onStart();
		// new Thread(downloadInfoRun).start();
	}

}

    

package com.video.browse.adapter;

import java.util.ArrayList;
import java.util.List;

import com.video.browse.R;
import com.video.browse.util.FileVoideInfo;

import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.ImageView.ScaleType;

public class VideoAdapter extends BaseAdapter {
	int mGalleryItemBackground;
	private Context mContext;
	private static final String TAG = "VideoAdapter";
	List<FileVoideInfo> list = new ArrayList<FileVoideInfo>();
	private int selected = -1;
	
	public VideoAdapter(Context context,List<FileVoideInfo> list) {
		this.mContext = context;
		this.list = list;
		
	}
	
	@Override
	public int getCount() { 
		Log.i(TAG,"adapter list size: "+list.size());
		return list.size();
	}

	@Override
	public Object getItem(int position) {
		// TODO Auto-generated method stub
		return list.get(position);
	}

	@Override
	public long getItemId(int position) {
		// TODO Auto-generated method stub
		return position;
	}
	
	public void notifyDataSetChanged(int id) {
		selected = id;
		super.notifyDataSetChanged();
	}
	
	@Override
	public View getView(int position, View convertView, ViewGroup parent) {
		ImageView imgView = new ImageView(mContext);
		imgView.setLayoutParams(new GridView.LayoutParams(285, 185));
		imgView.setPadding(228, 228, 228, 228);
		imgView.setBackgroundResource(R.drawable.nba_4);
		if (selected == position) {
			imgView.setScaleType(ImageView.ScaleType.CENTER_CROP);
			Animation testAnim = AnimationUtils.loadAnimation(mContext,R.anim.anim);
			imgView.startAnimation(testAnim);
		} else {
			imgView.setScaleType(ImageView.ScaleType.CENTER);
		}
		return imgView;
	}

}

 

package com.video.browse.ui;

import android.annotation.SuppressLint;
import android.content.Context;
import android.util.AttributeSet;
import android.widget.GridView;

public class VideoGridView extends GridView {
	private int position = 0;
	public VideoGridView(Context context) {
		super(context);
	}

	public VideoGridView(Context context, AttributeSet attrs) {
		super(context, attrs);
		setChildrenDrawingOrderEnabled(true);
	}

	public void setCurrentPosition(int pos) {// 刷新adapter前,在activity中调用这句传入当前选中的item在屏幕中的次序
		this.position = pos;
	}

	@SuppressLint("NewApi")
	@Override
	protected void setChildrenDrawingOrderEnabled(boolean enabled) {
		// TODO Auto-generated method stub
		super.setChildrenDrawingOrderEnabled(enabled);
	}

	@Override
	protected int getChildDrawingOrder(int childCount, int i) {
		if (i == childCount - 1) {// 这是最后一个需要刷新的item
			return position;
		}
		if (i == position) {// 这是原本要在最后一个刷新的item
			return childCount - 1;
		}
		return i;// 正常次序的item
	}

}

     

<RelativeLayout 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"
    tools:context=".MainActivity" >
    <!-- 
    
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    
     -->

   <com.video.browse.ui.VideoGridView
        android:id="@+id/gridview"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:columnWidth="210dp"
        android:gravity="center"
        android:horizontalSpacing="1dp"
        android:numColumns="auto_fit"
        android:verticalSpacing="1dp" />

</RelativeLayout>

 

 



 

  • 大小: 26 KB
0
0
分享到:
评论
1 楼 zkingcobra 2014-04-06  
这个东西就不能用,你能认真点不?!

相关推荐

    GridView中的Item放大缩小

    为了防止放大后的Item被其他Item覆盖,我们需要调整相邻Item的位置。这可能涉及到重新计算每个Item的布局参数,如宽度和高度,并调用`requestLayout()`来通知系统视图需要更新布局。 3. **动画效果**: 为了让放大...

    GridView设置选中状态

    在Android开发中,GridView是一种常用的布局控件,它允许我们以网格的形式展示数据,通常用于创建列表或展示图片。在很多应用中,我们可能需要实现GridView的选中效果,包括设置默认选中项以及选中后的视觉反馈。...

    Android横向GridView合并item放大item

    这个主题“Android横向GridView合并item放大item”涉及到了几个关键的技术点,包括自定义Adapter、横向滚动、item合并以及动画效果。 首先,我们需要创建一个自定义的GridView,让它支持水平滚动。这通常涉及到修改...

    android gridview 加载大量图片。无OOM

    在Android开发中,GridView是一种常见的布局控件,用于展示多行多列的列表,常用于图片、文件等的网格化展示。然而,当GridView需要加载大量图片时,如果不妥善处理,很容易导致内存溢出(Out-Of-Memory,简称OOM)...

    android GridView实现图库预览图,多选模式下右上角打勾

    在这个场景中,"android GridView实现图库预览图,多选模式下右上角打勾"是一个典型的图片选择功能,用户可以选择多个图片并在每个图片的右上角显示一个勾选标记,以表示已选状态。 首先,我们需要理解GridView的...

    android GridView 添加图片

    - 剪切完成后,通常会返回一个裁剪后图片的新URI,将其加载到GridView中。 6. **图片的删除** - 在GridView中添加删除功能,通常可以通过设置长按事件或提供删除按钮实现。 - 删除图片时,需要更新Adapter的数据...

    gridview选中变色实现方法,.net

    ### GridView选中变色实现方法详解 在.NET框架下,特别是在ASP.NET中,GridView控件是一种非常常用的用于显示数据的工具。它不仅功能强大,而且易于使用,支持各种数据源和自定义显示样式。其中,为GridView添加行...

    android Gridview分页实现

    在Android开发中,GridView是一种常用的布局控件,它允许我们以网格的形式展示数据。当我们处理大量数据时,分页加载可以提高应用性能,减少内存消耗,并提供更好的用户体验。本篇文章将详细讲解如何在Android中利用...

    android Gridview 异步加载网络图片

    综上所述,"android Gridview 异步加载网络图片"是一个涉及Android UI设计、多线程编程、图片处理、缓存策略以及第三方库使用的综合主题。通过学习这个示例,开发者可以提升应用性能,提供更优质的用户体验。

    GridView加载大量图片卡的问题

    在Android开发中,GridView是一种常见的布局控件,用于展示大量数据,如图片、列表项等。然而,当GridView需要加载大量图片时,由于内存限制和性能问题,可能会出现明显的卡顿现象,严重影响用户体验。为了解决这个...

    用GridView加动画写了一个滑动放大显示选中图片

    用GridView加动画写了一个滑动放大显示选中图片 项目需求在制定大小区域写一个横向菜单栏,菜单栏整体不能移动,GalleryFlow画廊不能满足需求,就自己重写写了一个)划到当图片时换个图片且动画效果渐渐放大,划到下...

    android 自定义gridView 按日期显示图片和视频 galleryDemo

    android 自定义gridView 按日期显示图片和视频 galleryDemo android 自定义gridView 按日期显示图片和视频 galleryDemo android 自定义gridView 按日期显示图片和视频 galleryDemo 免费下载 给个好评!

    Android 点击ListView 或GridView 的一个item 使其里面textview变色

    Android 点击ListView 或GridView 的一个item 使其里面textview变色 详情可访问博客地址:http: blog csdn net gaolei1201 article details 39084159

    android 通过GridView控件获取本地图片并动态显示 程序源码

    文章是参考博客http://blog.csdn.net/eastmount/article/details/41808179完成,主要讲述通过GridView控件点击加号图片动态添加本地相册图片,点击图片可以删除已添加图片。同时界面比较美观。 免费资源,希望对大家...

    android-GridView显示图片点击放大.zip

    在Android开发中,GridView是一种非常常见的布局控件,它允许我们以网格的形式展示数据,通常用于创建类似相册、应用列表等界面。本项目“android-GridView显示图片点击放大”提供了一个实现GridView显示图片并支持...

    AndroidGridView点击每一个图片进入个人页面渐变特效.zip

    在Android开发中,GridView是一种常用的布局控件,它允许我们以网格的形式展示数据。这个"AndroidGridView点击每一个图片进入个人页面渐变特效.zip"压缩包包含的资源可能是一个示例项目,展示了如何在GridView中实现...

    GridView中的TextView选中背景变色

    在Android开发中,GridView是一种常用的布局管理器,它允许我们以网格的形式展示数据。这个话题主要涉及如何在用户选择GridView中的TextView时改变其背景颜色,从而提供更好的视觉反馈和用户体验。下面将详细介绍...

    android gridview多选删除

    - 可以使用 SparseBooleanArray 来存储每个item的选中状态,键是item的位置,值是布尔值表示是否被选中。 - 在Adapter的getView()方法中,根据SparseBooleanArray的状态来决定CheckBox的选中与否。 4. 批量删除...

    仿系统相册,gridview+imagepager+imageloader+图片手势缩放双击放大

    在这个应用中,`GridView`被用来显示图片的缩略图,用户可以通过它快速浏览和选择图片。`GridView`通过适配器(如`BaseAdapter`或`CursorAdapter`)来填充数据,并且可以实现点击和长按事件,为用户提供交互性。 ...

    android GridView+ViewFlipper实现图片浏览

    在Android开发中,GridView是一种常用的布局管理器,它允许我们以网格的形式展示多个视图,常用于创建诸如图片库、应用列表等界面。本教程将详细介绍如何利用GridView和ViewFlipper来实现图片浏览功能。 首先,`...

Global site tag (gtag.js) - Google Analytics