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>