`

Gallery的使用之一

 
阅读更多

                       从一个指定的目录文件下取图片显示可以左右滑动

  例子显示的是从sdcard卡文件读取图片,并显示出来,判断当前是否有要读取的路径,如果有的话当前路径下是否有图片的判定

package com.lenovo.halo.gallery;

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

import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.os.Message;
import android.os.PowerManager;
import android.os.PowerManager.WakeLock;
//import android.os.LauncherSyncManager;
import android.util.Log;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;

public class MainActivity extends Activity {

	private static final String TAG = "MyLauncher";
	private MyHandler m_h;
	private ImageView i;
	private List<String> ImageList;
	private String[] list;
	// private int[] ids = {
	// R.drawable.p12,
	// R.drawable.p13,
	// R.drawable.p1,
	// R.drawable.p2,
	// R.drawable.p3,
	// R.drawable.p4,
	// R.drawable.p5,
	// R.drawable.p6,
	// R.drawable.p7,
	// R.drawable.p8,
	// R.drawable.p9,
	// R.drawable.p10,
	// R.drawable.p11
	// // //no5test add img here!!!!!!!
	// };

	int current = 0;
	TextView no_image;
	ImageView down_image,up_image;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		Log.i(TAG, "onCreate");
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		i = (ImageView) findViewById(R.id.image);
		no_image = (TextView) findViewById(R.id.no_image);
		up_image=(ImageView)findViewById(R.id.up_image);
		down_image=(ImageView)findViewById(R.id.down_image);
		ImageList = getSD();
		Log.i(TAG, "ImageList.size()" + ImageList.size());
		if (ImageList.size() > 0) {
			list = ImageList.toArray(new String[ImageList.size()]);
			Log.i(TAG, "ImageList.size()>0");

			i.setImageURI(Uri.parse(list[current]));
			PowerManager a = (PowerManager) getSystemService(Context.POWER_SERVICE);
			WakeLock w = a.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK
					| PowerManager.ACQUIRE_CAUSES_WAKEUP, TAG);
			w.acquire();
			i.setOnTouchListener(new OnTouchListener() {

				@Override
				public boolean onTouch(View arg0, MotionEvent arg1) {
					// TODO Auto-generated method stub
					current++;
					if (current == list.length) {
						current = 0;
					}
					m_h.removeMessages(1);
					Message message1 = new Message();
					message1.what = 1;
					m_h.sendMessage(message1);

					return false;
				}

			});
			m_h = new MyHandler();
			
		} else {
		 
				no_image.setText("当前目录下没有可以显示的图片");
				up_image.setVisibility(View.GONE);
				down_image.setVisibility(View.GONE);
		}

		// i.setImageResource(ids[current]);

	}

	private List<String> getSD() {

		List<String> it = new ArrayList<String>();

//		String path = Environment.getExternalStorageDirectory() + "";
		String path = "/data/imagedir/";
		// File f = new File("/sdcard/");
		Log.e("TEST", "+++++++++++" + path);
		File f = new File(path);
		File[] files = f.listFiles();
		if (f.exists()) {
		 	File f1=new File(path+"/miwen.txt");
			try {
				f1.createNewFile();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				Log.e("TEST",e.toString());
			} 
			if (files.length > 0) {
				for (int i = 0; i < files.length; i++) {
					File file = files[i];
					if (getImageFile(file.getPath()))
						it.add(file.getPath());
				}
			} else {
 					no_image.setText("当前目录下没有可以显示的图片");
				 
			}

		} else {
			 
				no_image.setText("您指定的目录不存在");
			 

		}

		return it;

	}

	private boolean getImageFile(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")) {
			re = true;
		} else {
			re = false;
		}
		return re;
	}

	class MyHandler extends Handler {
		@Override
		public void handleMessage(Message msg) {
			super.handleMessage(msg);

			switch (msg.what) {
			case 1:
				// i.setImageResource(ids[current]);
				if(list!=null&&list.length>0){
					i.setImageURI(Uri.parse(list[current]));
					Log.e(TAG, "current img is" + list[current] + "id is "
							+ current);
				}
				 
				break;
			}
		}
	}

//	@Override
//	public boolean onKeyUp(int keyCode, KeyEvent event) {
//		Log.e(TAG, "current img is" + list[current] + "id is " + current
//				+ "event is" + event.getAction());
//		if (event.getAction() == KeyEvent.ACTION_UP) {
//			switch (keyCode) {
//			case KeyEvent.KEYCODE_ENTER:
//				current++;
//				if (current == list.length) {
//					current = 0;
//				}
//
//				// i.setImageResource(list[current]);
//				i.setImageURI(Uri.parse(list[current]));
//
//			default:
//				break;
//			}
//		}
//		return super.onKeyDown(keyCode, event);
//	}

	
	@Override
	protected void onPause() {
		Log.i(TAG, "onPause");
		this.finish();
		System.exit(0);
		super.onPause();
	}
}

 定义的XML

<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="com.lenovo.halo.gallery.MainActivity" >

    
    <ImageView
        android:id="@+id/image"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:scaleType="fitXY" />

    <ImageView
        android:id="@+id/up_image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:src="@drawable/up"/>

    <ImageView
         android:id="@+id/down_image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:src="@drawable/down" />
    <TextView 
         android:id="@+id/no_image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        
        />
    

</RelativeLayout>

 在mainfast.xml里边定义读取的sdk权限

 <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

 

分享到:
评论

相关推荐

    Android应用源码之Gallery2.zip

    总结,"Android应用源码之Gallery2.zip"为我们提供了一个学习Android自定义组件和手势识别的宝贵资源。通过对源码的分析,我们可以更好地理解和控制用户界面的行为,从而提升应用的交互性和性能。虽然Gallery已被弃...

    Android应用源码之Gallery_Gallery.zip

    Gallery是Android平台上一个经典的图片浏览组件,它在早期版本的Android系统中被广泛使用,用于展示和选择图片。这个源码分析将深入探讨Gallery组件的工作原理、关键类和方法,以及如何自定义和优化它。 首先,让...

    Android应用源码之Gallery1_Gallery.zip

    Gallery是Android平台上一个用于展示图片或视频的控件,它在早期版本的Android SDK中被广泛使用,提供了用户浏览媒体内容的滚动界面。这个"Gallery1_Gallery.zip"压缩包很可能是包含了一个示例项目,展示了如何在...

    Android 之 Gallery画廊用法

    在Android开发中,`Gallery`组件是用于展示一系列图片或者视图的一种滚动控件,它允许用户通过左右滑动来浏览各个项目。`Gallery`在早期版本的Android API中被广泛使用,但在API 16之后已被弃用,取而代之的是更现代...

    Gallery 3D效果

    代码可能包括自定义的Gallery子类,以及与之相关的布局文件和资源。通过分析和调试这些代码,可以加深对Android图形和动画系统的理解,从而在自己的应用中实现类似的复杂效果。 总的来说,"Gallery 3D效果"涉及了...

    gallery选中放大动画效果

    本篇文章将深入探讨如何实现`Gallery`选中时的放大动画效果,以及与之相关的技术细节。 首先,我们需要理解`Gallery`的基本用法。`Gallery`继承自`AbsSpinner`,可以包含一系列`View`对象,如`ImageView`来展示图片...

    Android应用源码之Gallery2_Android.zip

    Gallery2是一个针对Android平台的开源图片浏览应用,其源码为我们提供了一个深入理解Android系统中图片展示、手势操作以及图片库集成的实例。通过分析这个项目,我们可以学习到许多关于Android开发的重要知识点。 ...

    031_android UI组件之 Gallery画廊控件

    "Gallery画廊控件"是Android SDK中一个独特的视图组件,它允许用户在一个水平滚动的列表中展示项目,通常用于图片或选择项的浏览。在本教程中,我们将深入探讨Gallery控件的用法、属性以及如何自定义它。 首先,...

    android4.2应用程序源码之Gallery2

    以下是对"android4.2应用程序源码之Gallery2"的详细分析: 1. **相册应用结构**:Gallery2应用程序由多个组件构成,包括Activity、Adapter、Fragment和Service等。这些组件共同协作,实现图片和视频的浏览、选择、...

    Gallery画廊之基础

    "Gallery画廊之基础"这一主题主要关注的是在Android系统中使用Gallery组件进行图片或媒体文件展示的基础知识。Gallery是一个旧版的Android组件,主要用于在水平轴上展示一系列的项目,用户可以左右滑动来浏览。尽管...

    android安卓app开发之对新老2版画廊gallery的外观用法区别,附源代码.zip

    在Android应用开发中,"Gallery"组件是一种非常实用的控件,它允许用户通过水平滑动来浏览一系列的项目,通常用于图片或者选项的选择。然而,随着Android版本的更新,Gallery组件的用法和外观也发生了变化。这篇教程...

    Android4.4图库Gallery2源码

    ContentProvider作为Android四大组件之一,是不同应用程序之间共享数据的关键。它封装了SQLite数据库,用于存储和检索媒体文件信息。同时,ContentResolver作为客户端与ContentProvider之间的桥梁,提供了方便的接口...

    jquery插件TN3Gallery-LITE

    该插件以其出色的功能和强大的自定义选项,成为了网页设计师和开发者们喜爱的工具之一。下面将详细介绍TN3Gallery-LITE的核心特性、使用方法以及其组成部分。 **核心特性** 1. **响应式设计**:TN3Gallery-LITE...

    相册gallery-3.0.1.zipgallery-3.0.1.zip

    本文将详细探讨"gallery-3.0.1.zip"这一版本的相册应用,它代表了相册软件的一个重要里程碑——Gallery 3.0.1。我们将从其核心功能、界面设计、性能优化等多个角度展开讨论,旨在揭示这款应用的独特之处和改进之处。...

    安卓Android源码——Gallery2.rar

    在安卓开发领域,深入理解源码是提升技能的重要途径之一。这里我们关注的是“Gallery2”模块,它是Android系统中的一个图像浏览应用,主要用于展示和管理用户的照片。Gallery2源码的分析将帮助开发者更深入地了解...

    Gallery&ImageSwitcher;实现图片浏览效果

    将`Gallery`和`ImageSwitcher`结合使用,可以实现一个图片轮播的效果。首先,在布局文件中添加`Gallery`和`ImageSwitcher`,并设置它们的属性。`Gallery`的适配器通常是一个自定义的`ArrayAdapter`或`CursorAdapter`...

    动画倒影Gallery

    然而,了解并处理各种编码格式是开发者必备的技能之一,特别是在处理来自不同源的数据时。 7. **适配器(Adapter)**: 在自定义的Gallery中,适配器是连接数据源和视图的关键。Adapter负责填充数据到每个项,并确保...

    Android Gallery轮播图

    在这个场景中,开发者需要一个自定义的Gallery轮播图,其中下标显示在轮播图下方,而不是覆盖在图片之上,并且在切换时能有平滑的缩放效果。下面将详细介绍这个自定义轮播图实现的关键知识点。 首先,`Gallery`是...

    Gallery绑定下方显示界面

    在这个场景中,开发者希望实现每个`Gallery`项(item)被选中时,在屏幕下方显示与之对应的详细视图(view)。以下是对这个功能的详细解释和实现方法。 首先,我们需要了解`Gallery`的基本用法。`Gallery`继承自`...

Global site tag (gtag.js) - Google Analytics