`

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 图片缩放

    在"Android GridView 图片缩放"这个主题中,我们将深入探讨如何在GridView中实现图片点击后放大显示的功能,这在创建类似相册的应用或者需要用户查看详细图像的场景下非常实用。 首先,我们需要理解GridView的基本...

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

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

    Android横向GridView合并item放大item

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

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

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

    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需要加载大量图片时,由于内存限制和性能问题,可能会出现明显的卡顿现象,严重影响用户体验。为了解决这个...

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

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

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

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

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

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

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

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

    GridView中的TextView选中背景变色

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

    android gridview多选删除

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

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

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

Global site tag (gtag.js) - Google Analytics