可以将gridView中的图片通过viewPager放大滑动浏览,音频,视频图片点击可以播放,音频视频路径是通过intent传递过来的。
public class BrowsePictureActivity extends Activity {
private ViewPager mViewPager;
private WriteViewPagerAdapter mViewPagerAdapter;
private Intent intent;
private List<String> paths;
private ImageView point1;
private ImageView point2;
private ImageView point3;
private ImageView point4;
private ImageView point5;
private ImageView point6;
private ImageView point7;
private ImageView point8;
private int currentPos = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.browse_picture);
intent = getIntent();
paths = intent.getStringArrayListExtra("paths");
currentPos = intent.getIntExtra("pos", 0);
point1 = (ImageView) findViewById(R.id.browse_point1);
point2 = (ImageView) findViewById(R.id.browse_point2);
point3 = (ImageView) findViewById(R.id.browse_point3);
point4 = (ImageView) findViewById(R.id.browse_point4);
point5 = (ImageView) findViewById(R.id.browse_point5);
point6 = (ImageView) findViewById(R.id.browse_point6);
point7 = (ImageView) findViewById(R.id.browse_point7);
point8 = (ImageView) findViewById(R.id.browse_point8);
initViewPager();
}
/*
* 初始化viewPager
* */
public void initViewPager(){
mViewPager = (ViewPager) findViewById(R.id.browse_viewPager);
mViewPagerAdapter = new WriteViewPagerAdapter(getViews(paths.size()));
mViewPager.setAdapter(mViewPagerAdapter);
mViewPager.setCurrentItem(currentPos);
// 设置监听
ImageView pots[] = new ImageView[paths.size()];
initPoint(pots,paths.size(),R.id.browse_point_linearLayout);
}
/*
* 得到每页的view
* */
private List<View> getViews(int size) {
List<View> views = new ArrayList<View>();
for(int i=0;i<size;i++){
ImageView img = new ImageView(this);
String path = paths.get(i);
if(path.endsWith(".bmp") || path.endsWith(".jpg") || path.endsWith(".png") || path.endsWith(".jpeg") ){
img.setImageBitmap(ImageUtils.imageScale(this, paths.get(i)));
img.setOnClickListener(new PhotoClickListener());
}else if(paths.get(i).endsWith(".mp3") || paths.get(i).endsWith(".amr")){
img.setImageResource(R.drawable.v2_audio_play_prev);
img.setOnClickListener(new AudioClickListener(paths.get(i)));
}else if(paths.get(i).endsWith(".mp4") || paths.get(i).endsWith(".avi") || paths.get(i).endsWith(".3gp")){
img.setImageResource(R.drawable.v2_play);
img.setOnClickListener(new VideoClickListener(paths.get(i)));
}
views.add(img);
}
return views;
}
private class PhotoClickListener implements OnClickListener{
@Override
public void onClick(View arg0) {
BrowsePictureActivity.this.finish();
}
}
private class AudioClickListener implements OnClickListener{
private String path;
public AudioClickListener(String path){
this.path = path;
}
@Override
public void onClick(View arg0) {
Intent it = new Intent(Intent.ACTION_VIEW);
Uri uri = Uri.parse("file:///" + path);
it.setDataAndType(uri, "audio/*");
startActivity(it);
}
}
private class VideoClickListener implements OnClickListener{
private String path;
public VideoClickListener(String path){
this.path = path;
}
@Override
public void onClick(View arg0) {
Intent it = new Intent(Intent.ACTION_VIEW);
Uri uri = Uri.parse("file:///" + path);
it.setDataAndType(uri, "video/*");
startActivity(it);
}
}
/*
* 初始化小圆点
* */
private void initPoint(ImageView[] pots,int pointNum,int layoutid) {
LinearLayout linearLayout = (LinearLayout) findViewById(layoutid);
point1.setVisibility(View.GONE);
point2.setVisibility(View.GONE);
point3.setVisibility(View.GONE);
point4.setVisibility(View.GONE);
point5.setVisibility(View.GONE);
point6.setVisibility(View.GONE);
point7.setVisibility(View.GONE);
point8.setVisibility(View.GONE);
System.out.println("pointNumber..."+pointNum);
if(pointNum > 0){
pots = new ImageView[pointNum];
// 循环取得小点图片
for (int i = 0; i < pointNum; i++) {
// 得到一个LinearLayout下面的每一个子元素
pots[i] = (ImageView) linearLayout.getChildAt(i);
pots[i].setVisibility(View.VISIBLE);
pots[i].setEnabled(false);
pots[i].setOnClickListener(new PointListener(pointNum,pots));
pots[i].setTag(i);
}
mViewPager.setOnPageChangeListener(new PageListener(Constant.MOOD_PAGER_NUM,pots));
mViewPager.setOnPageChangeListener(new PageListener(pointNum,pots));
// // 设置当前默认的位置
// currentPos = 0;
// 设置为白色,即选中状态
pots[currentPos].setEnabled(true);
}
}
private class PageListener implements OnPageChangeListener {
private int pagerNumber;
private ImageView img[];
public PageListener(int pagerNumber,ImageView img[]){
this.pagerNumber = pagerNumber;
this.img = img;
}
@Override
public void onPageScrollStateChanged(int arg0) {
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
// 当新的页面被选中时调用
@Override
public void onPageSelected(int position) {
// 设置底部小点选中状态
setPoint(img,position,pagerNumber);
}
}
private class PointListener implements OnClickListener {
private int pagerNumber;
private ImageView[] img;
public PointListener(int pagerNumber,ImageView img[]){
this.pagerNumber = pagerNumber;
this.img = img;
}
@Override
public void onClick(View v) {
int position = (Integer) v.getTag();
setView(position);
setPoint(img,position,pagerNumber);
}
}
// 改变页面
public void setView(int position) {
if (position < 0 || position >= Constant.MOOD_PAGER_NUM) {
return;
}
mViewPager.setCurrentItem(position);
}
// 改变原点颜色的位置
public void setPoint(ImageView pots[],int position ,int pageNumber) {
if (position < 0 || position > pots.length -1 || position == currentPos ) {
return;
}
pots[position].setEnabled(true);
pots[currentPos].setEnabled(false);
currentPos = position ;
}
}
public class BrowsePictureActivity extends Activity {
private ViewPager mViewPager;
private WriteViewPagerAdapter mViewPagerAdapter;
private Intent intent;
private List<String> paths;
private ImageView point1;
private ImageView point2;
private ImageView point3;
private ImageView point4;
private ImageView point5;
private ImageView point6;
private ImageView point7;
private ImageView point8;
private int currentPos = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.browse_picture);
intent = getIntent();
paths = intent.getStringArrayListExtra("paths");
currentPos = intent.getIntExtra("pos", 0);
point1 = (ImageView) findViewById(R.id.browse_point1);
point2 = (ImageView) findViewById(R.id.browse_point2);
point3 = (ImageView) findViewById(R.id.browse_point3);
point4 = (ImageView) findViewById(R.id.browse_point4);
point5 = (ImageView) findViewById(R.id.browse_point5);
point6 = (ImageView) findViewById(R.id.browse_point6);
point7 = (ImageView) findViewById(R.id.browse_point7);
point8 = (ImageView) findViewById(R.id.browse_point8);
initViewPager();
}
/*
* 初始化viewPager
* */
public void initViewPager(){
mViewPager = (ViewPager) findViewById(R.id.browse_viewPager);
mViewPagerAdapter = new WriteViewPagerAdapter(getViews(paths.size()));
mViewPager.setAdapter(mViewPagerAdapter);
mViewPager.setCurrentItem(currentPos);
// 设置监听
ImageView pots[] = new ImageView[paths.size()];
initPoint(pots,paths.size(),R.id.browse_point_linearLayout);
}
/*
* 得到每页的view
* */
private List<View> getViews(int size) {
List<View> views = new ArrayList<View>();
for(int i=0;i<size;i++){
ImageView img = new ImageView(this);
String path = paths.get(i);
if(path.endsWith(".bmp") || path.endsWith(".jpg") || path.endsWith(".png") || path.endsWith(".jpeg") ){
img.setImageBitmap(ImageUtils.imageScale(this, paths.get(i)));
img.setOnClickListener(new PhotoClickListener());
}else if(paths.get(i).endsWith(".mp3") || paths.get(i).endsWith(".amr")){
img.setImageResource(R.drawable.v2_audio_play_prev);
img.setOnClickListener(new AudioClickListener(paths.get(i)));
}else if(paths.get(i).endsWith(".mp4") || paths.get(i).endsWith(".avi") || paths.get(i).endsWith(".3gp")){
img.setImageResource(R.drawable.v2_play);
img.setOnClickListener(new VideoClickListener(paths.get(i)));
}
views.add(img);
}
return views;
}
private class PhotoClickListener implements OnClickListener{
@Override
public void onClick(View arg0) {
BrowsePictureActivity.this.finish();
}
}
private class AudioClickListener implements OnClickListener{
private String path;
public AudioClickListener(String path){
this.path = path;
}
@Override
public void onClick(View arg0) {
Intent it = new Intent(Intent.ACTION_VIEW);
Uri uri = Uri.parse("file:///" + path);
it.setDataAndType(uri, "audio/*");
startActivity(it);
}
}
private class VideoClickListener implements OnClickListener{
private String path;
public VideoClickListener(String path){
this.path = path;
}
@Override
public void onClick(View arg0) {
Intent it = new Intent(Intent.ACTION_VIEW);
Uri uri = Uri.parse("file:///" + path);
it.setDataAndType(uri, "video/*");
startActivity(it);
}
}
/*
* 初始化小圆点
* */
private void initPoint(ImageView[] pots,int pointNum,int layoutid) {
LinearLayout linearLayout = (LinearLayout) findViewById(layoutid);
point1.setVisibility(View.GONE);
point2.setVisibility(View.GONE);
point3.setVisibility(View.GONE);
point4.setVisibility(View.GONE);
point5.setVisibility(View.GONE);
point6.setVisibility(View.GONE);
point7.setVisibility(View.GONE);
point8.setVisibility(View.GONE);
System.out.println("pointNumber..."+pointNum);
if(pointNum > 0){
pots = new ImageView[pointNum];
// 循环取得小点图片
for (int i = 0; i < pointNum; i++) {
// 得到一个LinearLayout下面的每一个子元素
pots[i] = (ImageView) linearLayout.getChildAt(i);
pots[i].setVisibility(View.VISIBLE);
pots[i].setEnabled(false);
pots[i].setOnClickListener(new PointListener(pointNum,pots));
pots[i].setTag(i);
}
mViewPager.setOnPageChangeListener(new PageListener(Constant.MOOD_PAGER_NUM,pots));
mViewPager.setOnPageChangeListener(new PageListener(pointNum,pots));
// // 设置当前默认的位置
// currentPos = 0;
// 设置为白色,即选中状态
pots[currentPos].setEnabled(true);
}
}
private class PageListener implements OnPageChangeListener {
private int pagerNumber;
private ImageView img[];
public PageListener(int pagerNumber,ImageView img[]){
this.pagerNumber = pagerNumber;
this.img = img;
}
@Override
public void onPageScrollStateChanged(int arg0) {
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
// 当新的页面被选中时调用
@Override
public void onPageSelected(int position) {
// 设置底部小点选中状态
setPoint(img,position,pagerNumber);
}
}
private class PointListener implements OnClickListener {
private int pagerNumber;
private ImageView[] img;
public PointListener(int pagerNumber,ImageView img[]){
this.pagerNumber = pagerNumber;
this.img = img;
}
@Override
public void onClick(View v) {
int position = (Integer) v.getTag();
setView(position);
setPoint(img,position,pagerNumber);
}
}
// 改变页面
public void setView(int position) {
if (position < 0 || position >= Constant.MOOD_PAGER_NUM) {
return;
}
mViewPager.setCurrentItem(position);
}
// 改变原点颜色的位置
public void setPoint(ImageView pots[],int position ,int pageNumber) {
if (position < 0 || position > pots.length -1 || position == currentPos ) {
return;
}
pots[position].setEnabled(true);
pots[currentPos].setEnabled(false);
currentPos = position ;
}
}