package com.talent.allshare.local;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.BitmapFactory;
import android.graphics.Matrix;
import android.graphics.drawable.AnimationDrawable;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.os.Message;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.util.DisplayMetrics;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewTreeObserver.OnPreDrawListener;
import android.view.animation.Animation;
import android.view.animation.TranslateAnimation;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.talent.allshare.ContentActivity;
import com.talent.allshare.util.FileFilterUtil;
import com.talent.allshare.util.IOHelper;
import com.talent.allshare.widget.PullToUpdataListView;
import com.talent.allshare.widget.PullToUpdataListView.OnRefreshListener;
import com.youplayer.StartMp3Activity;
import com.youplayer.player.R;
import com.youplayer.player.YouExplorer;
public class LocalActivity extends Activity implements OnClickListener {
protected static final int UPDATE_VIDEO = 0x10001;
protected static final int UPDATE_MUISC = 0x10002;
protected static final int UPDATE_PIC = 0x10003;
protected static final int UPDATE_FILE = 0x10004;
private ViewPager mPager;// 页卡内容
private List<View> listViews; // Tab页面列表
private ImageView cursor;// 动画图片
private ImageView t1, t2, t3, t4;// 页卡头标
private int offset = 0;// 动画图片偏移量
private int currIndex = 0;// 当前页卡编号
private int bmpW;// 动画图片宽度
private Button back;
private FileAdapter videoAdapter;
private FileAdapter musicAdapter;
private FileAdapter picAdapter;
private FileAdapter fileAdapter;
private Handler handler;
private PullToUpdataListView pul_video_list;
private PullToUpdataListView pul_music_list;
private PullToUpdataListView pul_pic_list;
private PullToUpdataListView pul_file_list;
private boolean isLoading;
private LinearLayout ll_progress;
private ImageView iv_loading_frame;
private AnimationDrawable loadingFrameAnimDrawable;
private List<File> videos;
private List<File> musics;
private List<File> pics;
private List<File> files;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.local);
videoAdapter = new FileAdapter(this);
musicAdapter = new FileAdapter(this);
picAdapter = new FileAdapter(this);
fileAdapter = new FileAdapter(this);
handler = new Handler() {
// private List<File> videos;
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what) {
case UPDATE_VIDEO:
isLoading = false;
ll_progress.setVisibility(View.GONE);
pul_video_list.onRefreshComplete();
videos = (List<File>) msg.obj;
videoAdapter.setDataList(videos, 0);
pul_video_list.setAdapter(videoAdapter);
videoAdapter.notifyDataSetChanged();
break;
case UPDATE_MUISC:
isLoading = false;
ll_progress.setVisibility(View.GONE);
pul_music_list.onRefreshComplete();
musics = (List<File>) msg.obj;
musicAdapter.setDataList(musics, 1);
pul_music_list.setAdapter(musicAdapter);
musicAdapter.notifyDataSetChanged();
break;
case UPDATE_PIC:
isLoading = false;
ll_progress.setVisibility(View.GONE);
pul_pic_list.onRefreshComplete();
pics = (List<File>) msg.obj;
picAdapter.setDataList(pics, 2);
pul_pic_list.setAdapter(picAdapter);
picAdapter.notifyDataSetChanged();
break;
case UPDATE_FILE:
isLoading = false;
ll_progress.setVisibility(View.GONE);
pul_file_list.onRefreshComplete();
files = (List<File>) msg.obj;
fileAdapter.setDataList(files, -1);
pul_file_list.setAdapter(fileAdapter);
fileAdapter.notifyDataSetChanged();
break;
default:
break;
}
}
};
iv_loading_frame = (ImageView) this.findViewById(R.id.iv_loading_frame);
ll_progress = (LinearLayout) findViewById(R.id.ll_progress);
InitImageView();
InitTextView();
InitViewPager();
pul_video_list.setMoreEnable(false);
pul_music_list.setMoreEnable(false);
pul_pic_list.setMoreEnable(false);
pul_file_list.setMoreEnable(false);
pul_video_list.setonRefreshListener(new OnRefreshListener() {
@Override
public void onRefresh() {
if (isLoading) {
pul_video_list.onRefreshComplete();
Toast.makeText(LocalActivity.this,
R.string.is_loading_last_task, 10000).show();
return;
}
searchVideo();
}
});
pul_video_list.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1,
int position, long arg3) {
if (isLoading) {
pul_video_list.onRefreshComplete();
Toast.makeText(LocalActivity.this,
R.string.is_loading_last_task, 10000).show();
return;
}
File data = videos.get(position - 1);
String url = data.getPath();
if (url == null || "".equals(url)) {
return;
}
// IOHelper.openFile(LocalActivity.this, data);
Intent intent = new Intent(LocalActivity.this,
YouExplorer.class);
intent.setAction("android.intent.action.VIEW");
intent.setData(Uri.parse(url));
LocalActivity.this.startActivity(intent);
// VideoBean vb = new VideoBean();
// vb.playUrl = url;
// vb.title = "视频文件";
// vb.itemId =-2;
//
// softApplication.saveHistory(vb.title,vb.playUrl);
}
});
pul_music_list.setonRefreshListener(new OnRefreshListener() {
@Override
public void onRefresh() {
if (isLoading) {
pul_music_list.onRefreshComplete();
Toast.makeText(LocalActivity.this,
R.string.is_loading_last_task, 10000).show();
return;
}
searchMusic();
}
});
pul_music_list.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1,
int position, long arg3) {
if (isLoading) {
pul_music_list.onRefreshComplete();
Toast.makeText(LocalActivity.this,
R.string.is_loading_last_task, 10000).show();
return;
}
File data = musics.get(position - 1);
String url = data.getPath();
if (url == null || "".equals(url)) {
return;
}
// IOHelper.openFile(LocalActivity.this, data);
// Intent intent = new Intent(LocalActivity.this,StartMp3Activity.class);
// intent.putExtra("URL", data.getPath());
// startActivity(intent);
Intent intent = new Intent(LocalActivity.this, YouExplorer.class);
intent.setAction("android.intent.action.VIEW");
intent.setData(Uri.parse(url));
startActivity(intent);
// File data = musics.get(position-1);
// String url = data.getPath();
// if(url == null || "".equals(url)){
// return;
// }
// Intent intent = new Intent(LocalActivity.this,
// MusicExplorer.class);
// intent.setAction("android.intent.action.VIEW");
// intent.setData(Uri.parse(url));
// LocalActivity.this.startActivity(intent);
// MediaManager.getInstance().setMusicList(mCurItems);
// Intent intent = new Intent();
// intent.setClass(LocalActivity.this,
// MusicPlayerActivity.class);
// intent.putExtra(MusicPlayerActivity.PLAY_INDEX, 1);
// Item item = new Item();
// List<Item> lists = new ArrayList<Item>();
// lists.add(item);
// MediaManager.getInstance().setMusicList(lists);
// item.setRes(Uri.parse(url)+"");
// ItemFactory.putItemToIntent(item, intent);
// LocalActivity.this.startActivity(intent);
// VideoBean vb = new VideoBean();
// vb.playUrl = url;
// vb.title = "视频文件";
// vb.itemId =-2;
//
// softApplication.saveHistory(vb.title,vb.playUrl);
}
});
pul_pic_list.setonRefreshListener(new OnRefreshListener() {
@Override
public void onRefresh() {
if (isLoading) {
pul_pic_list.onRefreshComplete();
Toast.makeText(LocalActivity.this,
R.string.is_loading_last_task, 10000).show();
return;
}
searchPic();
}
});
pul_pic_list.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1,
int position, long arg3) {
if (isLoading) {
pul_file_list.onRefreshComplete();
Toast.makeText(LocalActivity.this,
R.string.is_loading_last_task, 10000).show();
return;
}
File data = pics.get(position - 1);
String url = data.getPath();
if (url == null || "".equals(url)) {
return;
}
// Intent intent = new Intent(LocalActivity.this,
// YouExplorer.class);
// intent.setAction("android.intent.action.VIEW");
// intent.setData(Uri.parse(url));
// LocalActivity.this.startActivity(intent);
IOHelper.openFile(LocalActivity.this, data);
// VideoBean vb = new VideoBean();
// vb.playUrl = url;
// vb.title = "视频文件";
// vb.itemId =-2;
//
// softApplication.saveHistory(vb.title,vb.playUrl);
}
});
pul_file_list.setonRefreshListener(new OnRefreshListener() {
@Override
public void onRefresh() {
if (isLoading) {
pul_pic_list.onRefreshComplete();
Toast.makeText(LocalActivity.this,
R.string.is_loading_last_task, 10000).show();
return;
}
searchFile();
}
});
pul_file_list.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1,
int position, long arg3) {
if (isLoading) {
pul_file_list.onRefreshComplete();
Toast.makeText(LocalActivity.this,
R.string.is_loading_last_task, 10000).show();
return;
}
File data = files.get(position - 1);
String url = data.getPath();
if (url == null || "".equals(url)) {
return;
}
IOHelper.openFile(LocalActivity.this, data);
// Intent intent = new Intent(LocalActivity.this,
// YouExplorer.class);
// intent.setAction("android.intent.action.VIEW");
// intent.setData(Uri.parse(url));
// LocalActivity.this.startActivity(intent);
// VideoBean vb = new VideoBean();
// vb.playUrl = url;
// vb.title = "视频文件";
// vb.itemId =-2;
//
// softApplication.saveHistory(vb.title,vb.playUrl);
}
});
searchVideo();
}
private void searchVideo() {
ll_progress.setVisibility(View.VISIBLE);
startLoadingFrameAnim(iv_loading_frame);
isLoading = true;
new Thread() {
public void run() {
List<File> files = FileFilterUtil.getFiles(Environment
.getExternalStorageDirectory().getPath(), new String[] {
"flv", "mkv", "mp4", "3gp", "wmv" });
Message msg = new Message();
msg.what = UPDATE_VIDEO;
msg.obj = files;
handler.sendMessage(msg);
}
}.start();
// handler.post(new Runnable() {
//
// @Override
// public void run() {
// List<File> files = FileFilterUtil.getFiles(Environment
// .getExternalStorageDirectory().getPath(),
// new String[] { "mkv","rmvb","avi","rar"});
// Message msg = new Message();
// msg.what = UPDATE_VIDEO;
// msg.obj = files;
// handler.sendMessage(msg);
// }
// });
}
private void searchMusic() {
ll_progress.setVisibility(View.VISIBLE);
startLoadingFrameAnim(iv_loading_frame);
isLoading = true;
new Thread() {
public void run() {
List<File> files = FileFilterUtil.getFiles(Environment
.getExternalStorageDirectory().getPath(),
new String[] { "mp3" });
Message msg = new Message();
msg.what = UPDATE_MUISC;
msg.obj = files;
handler.sendMessage(msg);
}
}.start();
}
private void searchPic() {
ll_progress.setVisibility(View.VISIBLE);
startLoadingFrameAnim(iv_loading_frame);
isLoading = true;
new Thread() {
public void run() {
List<File> files = FileFilterUtil.getFiles(Environment
.getExternalStorageDirectory().getPath(),
new String[] { "jpg" });
Message msg = new Message();
msg.what = UPDATE_PIC;
msg.obj = files;
handler.sendMessage(msg);
}
}.start();
}
private void searchFile() {
ll_progress.setVisibility(View.VISIBLE);
startLoadingFrameAnim(iv_loading_frame);
isLoading = true;
new Thread() {
public void run() {
List<File> files = FileFilterUtil.getFiles(Environment
.getExternalStorageDirectory().getPath(),
new String[] { "txt" ,"pdf","doc","xls","xlsx","pdf"});
Message msg = new Message();
msg.what = UPDATE_FILE;
msg.obj = files;
handler.sendMessage(msg);
}
}.start();
}
/**
* 开始"..."的帧动画
*
* @param imageView
*/
public void startLoadingFrameAnim(ImageView imageView) {
imageView.setBackgroundResource(R.anim.frame_animation);
loadingFrameAnimDrawable = (AnimationDrawable) imageView
.getBackground();
imageView.getViewTreeObserver().addOnPreDrawListener(
new OnPreDrawListener() {
@Override
public boolean onPreDraw() {
loadingFrameAnimDrawable.start();
return true;
}
});
}
/**
* 停止载入中的帧动画"..."
*/
public void stopLoadingFrameAnim() {
if (loadingFrameAnimDrawable != null) {
loadingFrameAnimDrawable.stop();
}
}
/**
* 初始化ViewPager
*/
private void InitViewPager() {
mPager = (ViewPager) findViewById(R.id.vPager);
listViews = new ArrayList<View>();
LayoutInflater mInflater = getLayoutInflater();
pul_video_list = (PullToUpdataListView) mInflater.inflate(
R.layout.pul_list, null);
pul_music_list = (PullToUpdataListView) mInflater.inflate(
R.layout.pul_list, null);
pul_pic_list = (PullToUpdataListView) mInflater.inflate(
R.layout.pul_list, null);
pul_file_list = (PullToUpdataListView) mInflater.inflate(
R.layout.pul_list, null);
listViews.add(pul_video_list);
listViews.add(pul_music_list);
listViews.add(pul_pic_list);
listViews.add(pul_file_list);
mPager.setAdapter(new MyPagerAdapter(listViews));
setCurrentItem(0);
mPager.setOnPageChangeListener(new MyOnPageChangeListener());
}
/**
* 初始化头标
*/
private void InitTextView() {
t1 = (ImageView) findViewById(R.id.text1);
t2 = (ImageView) findViewById(R.id.text2);
t3 = (ImageView) findViewById(R.id.text3);
t4 = (ImageView) findViewById(R.id.text4);
t1.setOnClickListener(new MyOnClickListener(0));
t2.setOnClickListener(new MyOnClickListener(1));
t3.setOnClickListener(new MyOnClickListener(2));
t4.setOnClickListener(new MyOnClickListener(3));
}
/**
* 初始化动画
*/
private void InitImageView() {
cursor = (ImageView) findViewById(R.id.cursor);
bmpW = BitmapFactory.decodeResource(getResources(), R.drawable.a)
.getWidth() / 2;// 获取图片宽度
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
int screenW = dm.widthPixels;// 获取分辨率宽度
offset = (screenW / 4 - bmpW) / 4;// 计算偏移量
Matrix matrix = new Matrix();
matrix.postTranslate(offset, 0);
cursor.setImageMatrix(matrix);// 设置动画初始位置
}
// @Override
// public void onClickEvent(View view) {
// switch (view.getId()) {
// case R.id.text1:
// break;
//
// default:
// break;
// }
// }
/**
* 头标点击监听
*/
public class MyOnClickListener implements View.OnClickListener {
private int index = 0;
public MyOnClickListener(int i) {
index = i;
}
@Override
public void onClick(View v) {
setCurrentItem(index);
};
}
private void setCurrentItem(int i) {
mPager.setCurrentItem(i);
}
/**
* 页卡切换监听
*/
public class MyOnPageChangeListener implements OnPageChangeListener {
int one = offset * 2 + bmpW;// 页卡1 -> 页卡2 偏移量
int two = one * 2;// 页卡1 -> 页卡3 偏移量
int three = one * 3;// 页卡1 -> 页卡3 偏移量
@Override
public void onPageSelected(int arg0) {
Animation animation = null;
switch (arg0) {
case 0:
if (currIndex == 1) {
animation = new TranslateAnimation(one, 0, 0, 0);
} else if (currIndex == 2) {
animation = new TranslateAnimation(two, 0, 0, 0);
} else if (currIndex == 3) {
animation = new TranslateAnimation(three, 0, 0, 0);
}
break;
case 1:
if (currIndex == 0) {
animation = new TranslateAnimation(offset, one, 0, 0);
} else if (currIndex == 2) {
animation = new TranslateAnimation(two, one, 0, 0);
} else if (currIndex == 3) {
animation = new TranslateAnimation(three, one, 0, 0);
}
break;
case 2:
if (currIndex == 0) {
animation = new TranslateAnimation(offset, two, 0, 0);
} else if (currIndex == 1) {
animation = new TranslateAnimation(one, two, 0, 0);
} else if (currIndex == 3) {
animation = new TranslateAnimation(three, two, 0, 0);
}
break;
case 3:
if (currIndex == 0) {
animation = new TranslateAnimation(offset, three, 0, 0);
} else if (currIndex == 1) {
animation = new TranslateAnimation(one, three, 0, 0);
} else if (currIndex == 2) {
animation = new TranslateAnimation(two, three, 0, 0);
}
break;
}
currIndex = arg0;
animation.setFillAfter(true);// True:图片停在动画结束位置
animation.setDuration(300);
cursor.startAnimation(animation);
t1.setImageResource(R.drawable.tab_video_s);
t2.setImageResource(R.drawable.tab_music_s);
t3.setImageResource(R.drawable.tab_pic_s);
t4.setImageResource(R.drawable.tab_file_s);
if (arg0 == 0) {
if (videos == null || videos.size() == 0) {
searchVideo();
}
t1.setImageResource(R.drawable.tab_video);
} else if (arg0 == 1) {
if (musics == null || musics.size() == 0) {
searchMusic();
}
t2.setImageResource(R.drawable.tab_music);
} else if (arg0 == 2) {
if (pics == null || pics.size() == 0) {
searchPic();
}
t3.setImageResource(R.drawable.tab_pic);
} else if (arg0 == 3) {
System.out.println(files);
if (files == null || files.size() == 0) {
searchFile();
}
t4.setImageResource(R.drawable.tab_file);
}
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
@Override
public void onPageScrollStateChanged(int arg0) {
}
}
@Override
public void onClick(View v) {
}
@Override
public void onBackPressed() {
new AlertDialog.Builder(LocalActivity.this)
.setTitle("确定退出?")
.setNegativeButton("确定",
new android.content.DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
dialog.dismiss();
LocalActivity.this.finish();
}
})
.setNeutralButton("取消",
new android.content.DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
dialog.dismiss();
}
}).show();
}
}