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>



 

猜你喜欢

转载自haiyang08101.iteye.com/blog/1974707