在好例子网,分享、交流、成长!
您当前所在位置:首页Java 开发实例Android平台开发 → android 图片浏览器 源码下载

android 图片浏览器 源码下载

Android平台开发

下载此实例
  • 开发语言:Java
  • 实例大小:3.41M
  • 下载次数:24
  • 浏览次数:281
  • 发布时间:2015-01-08
  • 实例类别:Android平台开发
  • 发 布 人:Silence_1992w
  • 文件格式:.zip
  • 所需积分:3
 相关标签: 图片 浏览器 图片浏览器

实例介绍

【实例简介】
【实例截图】

【核心代码】

package com.example.aaa;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

import android.support.v7.app.ActionBarActivity;
//import android.support.v7.app.ActionBar;
import android.support.v4.app.Fragment;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Matrix;
import android.graphics.Rect;
//import android.graphics.drawable.BitmapDrawable;
//import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
import android.view.ViewGroup;
import android.view.ViewTreeObserver;
import android.view.WindowManager;
import android.view.ViewTreeObserver.OnGlobalLayoutListener;
import android.view.animation.Animation;
import android.view.animation.ScaleAnimation;
import android.view.animation.TranslateAnimation;
import android.widget.AdapterView;
import android.widget.LinearLayout;
import android.widget.Toast;
//import android.os.Build;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
//import android.database.Cursor;
//import android.provider.MediaStore.Images.Media;
import android.app.Dialog;
import android.app.AlertDialog;

public class MainActivity extends ActionBarActivity implements
AdapterView.OnItemSelectedListener {
	protected static final Context MainActivity = null;
	private GalleryFlow gallory = null;
	private List<String> ImageList;
	private String filePath = null;
	private Bitmap bmp;
	private int window_width, window_height;// 控件宽度
	private DragImageView dragImageView;// 自定义控件
	private int state_height;// 状态栏的高度
	private ViewTreeObserver viewTreeObserver;
	
	//private Cursor cursor;  //********************************
	
	private int imagePosition;
	private Context currentContext = this;
//	private int ScaleAngle;

	//private ImageAdapter imageAdapter;
	
//***********************************************************************	
	
	private Animation showAction, hideAction; 
	LinearLayout mylayout;
	boolean menuShowed;
	
	
	
	
	
	
	
	
	
	
	
//************************************************************************	
	
	
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.fragment_main);
		ImageList = getImagesFromSD();
		this.gallory = (GalleryFlow)super.findViewById(R.id.mygallery);
		//this.gallory.setAdapter(new ImageGalleryAdapter(this));
		if(ImageList == null || ImageList.size() == 0)
			return;
		/**
		 * 创建适配器,注册适配器
		 */
		//imageAdapter = new ImageAdapter(this, ImageList);
		gallory.setAdapter(new ImageAdapter(this, ImageList));
		gallory.setOnItemSelectedListener(this);		
		/** 获取可見区域高度 **/
		WindowManager manager = getWindowManager();
		window_width = manager.getDefaultDisplay().getWidth();
		window_height = manager.getDefaultDisplay().getHeight();

		dragImageView = (DragImageView) findViewById(R.id.div_main);

		if(filePath==null)
		{
			bmp = BitmapUtil.ReadBitmapById(this, R.drawable.huoying,
					window_width, window_height);
		}
		
		// 设置图片
//		dragImageView.setImageBitmap(bmp);
//		dragImageView.setmActivity(this);//注入Activity.
		/** 测量状态栏高度 **/
/*		viewTreeObserver = dragImageView.getViewTreeObserver();
		viewTreeObserver
				.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {

					@Override
					public void onGlobalLayout() {
						if (state_height == 0) {
							// 获取状况栏高度
							Rect frame = new Rect();
							getWindow().getDecorView()
									.getWindowVisibleDisplayFrame(frame);
							state_height = frame.top;
							dragImageView.setScreen_H(window_height-state_height);
							dragImageView.setScreen_W(window_width);
						}

					}
				});
		
*/		
		
		
//***************************************************************
		mylayout = (LinearLayout) findViewById(R.id.mylayout); 
		// 这里是TranslateAnimation动画 
		showAction = new TranslateAnimation(
				Animation.RELATIVE_TO_SELF,0.0f,
				Animation.RELATIVE_TO_SELF, 0.0f, 
				Animation.RELATIVE_TO_SELF, -1.0f, 
				Animation.RELATIVE_TO_SELF, 0.0f); 
		// 这里是ScaleAnimation动画 //
		showAction = new ScaleAnimation(
				1.0f,1.0f,0.0f,1.0f,Animation.RELATIVE_TO_SELF,0.0f, 
				Animation.RELATIVE_TO_SELF,0.0f); 
				showAction.setDuration(500); 
		// 这里是TranslateAnimation动画 
				hideAction = new TranslateAnimation(
						Animation.RELATIVE_TO_SELF, 0.0f, 
						Animation.RELATIVE_TO_SELF, 0.0f, 
						Animation.RELATIVE_TO_SELF, 0.0f, 
						Animation.RELATIVE_TO_SELF, -1.0f);
	

// 这里是ScaleAnimation动画 
hideAction = new ScaleAnimation(1.0f,1.0f,1.0f,0.0f,
		Animation.RELATIVE_TO_SELF, 0.0f,
		Animation.RELATIVE_TO_SELF, 0.0f); 
hideAction.setDuration(500); 
menuShowed = false; 
//mylayout.setVisibility(View.GONE);
/*mylayout.setOnClickListener(new OnClickListener(){

	@Override
	public void onClick(View v) {
		// TODO Auto-generated method stub
		if (menuShowed) { 
			menuShowed = false; 
		mylayout.startAnimation(hideAction);
		mylayout.setVisibility(View.GONE); 
		}
		else 
		{ 
			menuShowed = true; 
			mylayout.startAnimation(showAction); 
			mylayout.setVisibility(View.VISIBLE);
			} 
		
	}
	
});*/



//***************************************************************		
		
		
		
		
		
	}
	
	
	
	@Override
	public void onItemSelected(AdapterView<?> parent, View view, int position,
			long id) {
		// TODO Auto-generated method stub
		/**
		 * 获取当前要显示的Image的路径
		 */
		
//		********************************************************************
		imagePosition=position;
		
//		*********************************************************************
		
		String photoURL = ImageList.get(position);
		Log.i("A", String.valueOf(position));
		/**
		 * 设置当前要显示的Image的路径	 
		 */
		filePath = photoURL;
		bmp = BitmapUtil.ReadBitmapById(this, filePath,
				window_width, window_height);
		//mSwitcher.setImageURI(Uri.parse(photoURL));
		dragImageView.setImageBitmap(bmp);
		dragImageView.setmActivity(this);//注入Activity.
		/** 测量状态栏高度 **/
		viewTreeObserver = dragImageView.getViewTreeObserver();
		viewTreeObserver
				.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {

					@Override
					public void onGlobalLayout() {
						if (state_height == 0) {
							// 获取状况栏高度
							Rect frame = new Rect();
							getWindow().getDecorView()
									.getWindowVisibleDisplayFrame(frame);
							state_height = frame.top;
							dragImageView.setScreen_H(window_height-state_height);
							dragImageView.setScreen_W(window_width);
						}

					}
				});
		
	}
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	private List<String> getImagesFromSD() {
		List<String> imageList = new ArrayList<String>();

		File f = new File("/sdcard/");
		if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED))
		{
			f = new File(Environment.getExternalStorageDirectory().toString());
		}
		else
		{
			//Toast.makeText(MainActivity.this, R.string.sdcarderror, 1).show();
			return imageList;
		}

		File[] files = f.listFiles();

		if(files == null || files.length == 0)
			return imageList;
		/**
		 * 将所有图像文件的路径存入ArrayList列表
		 */
		for (int i = 0; i < files.length; i  ) {
			File file = files[i];
			if (isImageFile(file.getPath()))
				imageList.add(file.getPath());
		}
		return imageList;
	}
	
	private boolean isImageFile(String fName) {
		boolean re;
		String end = fName
				.substring(fName.lastIndexOf(".")   1, fName.length())
				.toLowerCase();

		/**
		 * 依据文件扩展名判断是否为图像文件
		 */
		if (end.equals("jpg") || end.equals("gif") || end.equals("png")
				|| end.equals("jpeg") || end.equals("bmp")) {
			//System.out.print(end);
			re = true;
		} else {
			re = false;
		}
		return re;
	}
	
	
	
	

	
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		/*
		 * 
		 * add()方法的四个参数,依次是:
		 * 
		 * 1、组别,如果不分组的话就写Menu.NONE,
		 * 
		 * 2、Id,这个很重要,Android根据这个Id来确定不同的菜单
		 * 
		 * 3、顺序,那个菜单现在在前面由这个参数的大小决定
		 * 
		 * 4、文本,菜单的显示文本
		 */

		menu.add(Menu.NONE, Menu.FIRST   1, 1, "删除图片").setIcon(

		android.R.drawable.ic_menu_delete);

		// setIcon()方法为菜单设置图标,这里使用的是系统自带的图标,同学们留意一下,以

		// android.R开头的资源是系统提供的,我们自己提供的资源是以R开头的

		menu.add(Menu.NONE, Menu.FIRST   2, 2, "向右旋转").setIcon(

		android.R.drawable.ic_menu_rotate);

		/*menu.add(Menu.NONE, Menu.FIRST   4, 1, "添加").setIcon(

		android.R.drawable.ic_menu_add);*/

		menu.add(Menu.NONE, Menu.FIRST   3, 3, "图片信息").setIcon(

		android.R.drawable.ic_menu_info_details);

		menu.add(Menu.NONE, Menu.FIRST   4, 4, "分享图片").setIcon(

		android.R.drawable.ic_menu_send);
		
		menu.add(Menu.NONE, Menu.FIRST   5, 5, "设为壁纸").setIcon(

		android.R.drawable.ic_menu_set_as);
		
		menu.add(Menu.NONE, Menu.FIRST   6, 6, "显示缩略图").setIcon(

		android.R.drawable.ic_menu_set_as);

		return true;

	}
	
	
	
//	**********************************************************
	
	/*public void showImageInformation(){		
		int photoIndex;  
	    int photoNameIndex;  
	    int photoIDIndex;  
	    int photoTitleIndex;  
	    int photoSizeIndex;
	    String name = null;
	    String columns[] = new String[] { Media.DATA, Media._ID, Media.TITLE, Media.DISPLAY_NAME, Media.SIZE };
	 // 得到一个游标  
        cursor = this.getContentResolver().query(Media.EXTERNAL_CONTENT_URI, null, null, null, null);
        photoIndex = cursor.getColumnIndexOrThrow(Media.DATA);  
        photoNameIndex = cursor.getColumnIndexOrThrow(Media.DISPLAY_NAME);  
        photoIDIndex = cursor.getColumnIndexOrThrow(Media._ID);  
        photoTitleIndex = cursor.getColumnIndexOrThrow(Media.TITLE);  
        photoSizeIndex = cursor.getColumnIndexOrThrow(Media.SIZE); 
     // 获取图片的Name 
        if(cursor.moveToNext()){  
        name = cursor.getString(photoNameIndex);  
        // 获取图片的ID  
        String number = cursor.getString(photoIDIndex);  
        // 获取图片的Title  
        String title = cursor.getString(photoTitleIndex);  
        // 获取图片的大小  
        String size = cursor.getString(photoSizeIndex);  
        // 获取图片存储路径  
        String path = cursor.getString(photoIndex);
        }
        Dialog dialog = new AlertDialog.Builder(this)
        .setTitle("图片信息")
        .setMessage("图片名称" name).create();
	}*/

//****************************************************************	
	
	
	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		switch (item.getItemId()) {

		case Menu.FIRST   1: //删除

			deleteImage();
			//Toast.makeText(this, "删除菜单被点击了", Toast.LENGTH_LONG).show();

			break;

		case Menu.FIRST   2:           //旋转
			rotateImage();

			
			//Toast.makeText(this, "保存菜单被点击了", Toast.LENGTH_LONG).show();

			break;
 
		case Menu.FIRST   3://详细

			showImageInfo();
			//Toast.makeText(this, filePath, Toast.LENGTH_LONG).show();
			
			break;

		case Menu.FIRST   4:           //发送
			shareImages();

			//Toast.makeText(this, "添加菜单被点击了", Toast.LENGTH_LONG).show();

			break;

		case Menu.FIRST   5:   //设置为壁纸
			setBackground();

			//Toast.makeText(this, "详细菜单被点击了", Toast.LENGTH_LONG).show();

			break;

		/*case Menu.FIRST   6:

			//Toast.makeText(this, "发送菜单被点击了", Toast.LENGTH_LONG).show();

			break;*/
			
		case Menu.FIRST   6:   //显示缩略图
			if (menuShowed) { 
				menuShowed = false; 
			mylayout.startAnimation(hideAction);
			mylayout.setVisibility(View.GONE); 
			}
			else 
			{ 
				menuShowed = true; 
				mylayout.startAnimation(showAction); 
				mylayout.setVisibility(View.VISIBLE);
				} 


			//Toast.makeText(this, "详细菜单被点击了", Toast.LENGTH_LONG).show();

			break;

		}

		return false;

	}
	/*@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		// Handle action bar item clicks here. The action bar will
		// automatically handle clicks on the Home/Up button, so long
		// as you specify a parent activity in AndroidManifest.xml.
		int id = item.getItemId();
		if (id == R.id.action_settings) {
			return true;
		}
		return super.onOptionsItemSelected(item);
	}*/

	/**
	 * A placeholder fragment containing a simple view.
	 */
	public static class PlaceholderFragment extends Fragment {

		public PlaceholderFragment() {
		}

		@Override
		public View onCreateView(LayoutInflater inflater, ViewGroup container,
				Bundle savedInstanceState) {
			View rootView = inflater.inflate(R.layout.fragment_main, container,
					false);
			return rootView;
		}
	}
	
	
	public void showImageInfo(){
		String imagePath ="图片路径:"  filePath;
	    String imageName = "图片名称:" imagePath.substring(imagePath.lastIndexOf("/")   1, imagePath.length());
	    String imageSize = "图片尺寸:" String.valueOf(BitmapFactory.decodeFile(filePath).getWidth()) 
	    "*" String.valueOf(BitmapFactory.decodeFile(filePath).getHeight());
	    String[] imageInfo = new String[]{imagePath,imageName,imageSize};
		Dialog dialog = new AlertDialog.Builder(this)
    .setTitle("图片信息")
    .setPositiveButton("确定",new DialogInterface.OnClickListener() {
		
		@Override
		public void onClick(DialogInterface dialog, int which) {
			// TODO Auto-generated method stub
			
		}
	}).setItems(imageInfo, new DialogInterface.OnClickListener() {
		
		@Override
		public void onClick(DialogInterface dialog, int which) {
			// TODO Auto-generated method stub
			
		}
	}).create();
	dialog.show();

	}
	
	public void deleteImage(){
		Dialog dialog = new AlertDialog.Builder(this)
		.setTitle("确定删除?")
		.setMessage("您确定删除此图片?")
		.setPositiveButton("确定",new DialogInterface.OnClickListener() {			
			@Override
			public void onClick(DialogInterface dialog, int which) {
				// TODO Auto-generated method stub
				File file = new File(filePath);
				
				file.delete();
				//List<String> testList;
			
				ImageList.remove(ImageList.get(imagePosition));
				//imageAdapter
				gallory.setAdapter(new ImageAdapter(currentContext, ImageList));
				//Toast.makeText(this, "详细菜单被点击了", Toast.LENGTH_LONG).show();
				//System.out.print("a");
			}
		}).setNegativeButton("取消",new DialogInterface.OnClickListener() {
			
			@Override
			public void onClick(DialogInterface dialog, int which) {
				// TODO Auto-generated method stub
				
			}
		}).create();
		dialog.show();
		//File file = new File(filePath);
	}
	public void setBackground(){
		Dialog dialog = new AlertDialog.Builder(this)
		.setTitle("设置桌面背景")
		.setMessage("您确定将此图片设置为桌面背景?")
		.setPositiveButton("确定",new DialogInterface.OnClickListener() {			
			@SuppressWarnings("deprecation")
			@Override
			public void onClick(DialogInterface dialog, int which) {
				// TODO Auto-generated method stub
				try{
					//MainActivity.getApplicationContext().clearWallpaper();
				    currentContext.clearWallpaper();
				    currentContext.setWallpaper(bmp);
				    Toast.makeText(currentContext, "桌面背景修改成功", Toast.LENGTH_LONG).show();				
				}
				catch(Exception e){
					Toast.makeText(currentContext, "桌面背景修改失败", Toast.LENGTH_LONG).show();
				}
				
			}
		}).setNegativeButton("取消",new DialogInterface.OnClickListener() {
			
			@Override
			public void onClick(DialogInterface dialog, int which) {
				// TODO Auto-generated method stub
				
			}
		}).create();
		dialog.show();
	}
	public void shareImages(){
		Intent intent=new Intent(Intent.ACTION_SEND);  
        intent.setType("text/plain");  
        intent.putExtra(Intent.EXTRA_TEXT, "分享内容");  
        startActivity(Intent.createChooser(intent, "选择分享方式"));  
	}
	
	
	public void rotateImage(){
		//ScaleAngle = ScaleAngle   90;
		//ScaleAngle  ;
		Matrix matrix = new Matrix();
		/*使用Matrix.postScale 设置维度*/
		matrix.postScale(1.0f, 1.0f);
		/*使用Matrix.setRotate 方法旋转Bitmap*/
		matrix.setRotate(90);
   		bmp = Bitmap.createBitmap(
   				bmp, 0 , 0, bmp.getWidth(), bmp.getHeight(), matrix, true);
   		dragImageView.setImageBitmap(bmp);
		dragImageView.setmActivity(this);//注入Activity.
   		
		/*BitmapDrawable myNewBitmapDrawable = 
				new BitmapDrawable(resizedBitmap);*/
		
	}


	@Override
	public void onNothingSelected(AdapterView<?> parent) {
		// TODO Auto-generated method stub
		
	}
	
	
	public void showGalleryFlow(){
	
		
	}
	
	
	
	
	

}

实例下载地址

android 图片浏览器 源码下载

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警