首先定義XML
<? Xml version = 「1.0″ encoding = 「utf-8″?>
<RelativeLayout xmlns: android = 「http://schemas.android.com/apk/res/android」
android: orientation = 「vertical」
the android: layout_width = 「fill_parent The
android: layout_height = 「fill_parent The
android: background = 「55 million」
>
<ImageSwitcher// this control with the Gallery often used, remember
android: id = 「@ + the id/in switcher ‘」
the android: layout_width = 「wrap_content The
android: layout_height = 「350dip The
android: layout_alignParentLeft = 「true」
android: layout_alignParentRight = 「true」
/>
< Gallery
android: id = 「@ + id/mygallery」
the android: layout_width = 「fill_parent The
android: layout_height = 「80dp」
android: layout_alignParentBottom = 「true」
android: layout_alignParentLeft = 「true」
android: gravity = 「center_vertical」
android: spacing = 「16dp」
/>
</ RelativeLayout>
兩個。在自定義顯示
package com.ldci.second.mypnone;
import java.io.File;
import java.util.ArrayList;
import of java.util.List;
import android.app.Activity;
import android.content.Context;
import android.content.res.TypedArray;
import the android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.view.View.OnClickListener;
import android.view.animation.AnimationUtils;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.ImageSwitcher;
import android.widget.ImageView;
import android.widget.Toast;
import android.widget.ViewSwitcher;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Gallery.LayoutParams;
public class BgPictureShowActivity extends Activity implements
AdapterView.OnItemSelectedListener, ViewSwitcher.ViewFactory {
the private List <String> the ImageList;
private String [] list;
private ImageSwitcher mSwitcher;
public void onCreate (Bundle savedInstanceState) {
super.onCreate (savedInstanceState);
//// Remove the status bar, and display their own program name
// GetWindow(). SetFlags (WindowManager.LayoutParams.FLAG_FULLSCREEN,
// WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView (R.layout.pictureshow);
The ImageList the getSD();
list = ImageList.toArray (new String [ImageList.size()]);
/* Set the Switcher */
mSwitcher = (ImageSwitcher) findViewById (R.id.switcher);
mSwitcher.setFactory (this);
/* Set the load Switcher mode */
mSwitcher.setInAnimation (AnimationUtils.loadAnimation (this,
android.R.anim.fade_in));
/* Set output Switcher mode */
mSwitcher.setOutAnimation (AnimationUtils.loadAnimation (this,
android.R.anim.fade_out));
mSwitcher.setOnClickListener (new OnClickListener() {
public void onClick (View v) the {
Toast.makeText (BgPictureShowActivity.this, 「click」, Toast.LENGTH_SHORT). The show();
}
});
Gallery g = (Gallery) findViewById (R.id.mygallery);
/* Add several ImageAdapter to and set to the Gallery object */
g.setAdapter (new ImageAdapter (this, getSD()));
g.setOnItemSelectedListener (this);
/* Set a itemclickListener event */
g.setOnItemClickListener (new OnItemClickListener()
{
public void the onItemClick (AdapterView, which <?> parent,
View v, int position, long id)
{
Toast.makeText (BgPictureShowActivity.this, 「dianjiale」, Toast.LENGTH_SHORT). Show();
}
});
}
private List <String> getSD()
{
/* Set the current path */
The the List <String> it = the new ArrayList <String>();
File f = new File (「/ sdcard /」);
File [] files = f.listFiles();
/* All the files stored in the ArrayList */
for (int i = 0; i <files.length; i + +)
{
The File the file = files [i];
if (getImageFile (file.getPath()))
it.add (file.getPath());
}
return it;
}
private boolean getImageFile (String fName)
{
a boolean the re;
/* Get the extension */
String end = fName.substring (fName.lastIndexOf (「.」) +1,
fName.length()). toLowerCase();
/* Decided by the type of extension The MimeType */
if (end.equals (「jpg」) | | end.equals (「gif」) | | end.equals (「png」)
| | End.equals (「jpeg」) | | end.equals (「bmp」))
{
re = true;
}
else
{
re = false;
}
return the re;
}
/* To rewrite BaseAdapter custom one ImageAdapter class */
public class ImageAdapter the extends BaseAdapter,
{
/* Declare variables */
int mGalleryItemBackground;
private Context mContext;
private the List <String> of lis;
/* ImageAdapter, constructed character */
the public ImageAdapter (Context c, the List <String> li)
{
mContext = c;
of lis = li;
/* Res/values / attrs.xml <declare-styleable> defined
* Gallery attribute */
TypedArray a = obtainStyledAttributes (R.styleable.Gallery);
/* Obtain attribute Gallery Index id */
mGalleryItemBackground = a.getResourceId (
R.styleable.Gallery_android_galleryItemBackground, 0);
/* Let the object styleable properties can be used repeatedly */
a.recycle();
}
/* A few set to rewrite the getCount, the number of returned images */
public int the getCount()
{
return lis.size();
}
/* Must override the method getItem, returns the position */
Public Object getItem (int position)
{
the return position;
}
/* Must be rewritten getItemId pass and position */
public long getItemId (int position)
{
the return position;
}
/* A few set to rewrite the method getView pass and View objects */
public View getView (int position, View convertView,
Of ViewGroup that the parent)
{
/* Generate the ImageView object */
ImageView i = new ImageView (mContext);
/* Set the picture to imageView object */
Bitmap bm = BitmapFactory.decodeFile (lis.
get (position). toString());
i.setImageBitmap (bm);
/* Reset the image width and height */
i.setScaleType (ImageView.ScaleType.FIT_XY);
/* Reset the Layout of the width and height */
i.setLayoutParams (new Gallery.LayoutParams (136, 88));
/* Set the Gallery background images */
i.setBackgroundResource (mGalleryItemBackground);
/* Pass back to imageView object */
return i;
}
}
public void onItemSelected (AdapterView <?> parent, View view, int position,
long id) {
The string photoURL = list [position];
Log.i (「A」, String.valueOf (position));
mSwitcher.setImageURI (Uri.parse (photoURL));
}
public void onNothingSelected (AdapterView <?> parent) {
// TODO Auto-generated method the stub
}
public View makeView() {
ImageView i = new ImageView (this);
i.setBackgroundColor (0xFF000000);
i.setScaleType (ImageView.ScaleType.FIT_CENTER);
i.setLayoutParams (new ImageSwitcher.LayoutParams (
LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
return i;
}
}
此代碼的活動是很長的,看到一定會很頭疼加DAN的痛苦,但對MARS神持有多次在這個行業的特點是要有耐心告誡我們。 有一個很重要的事情,在值文件夾,創建一個XML裏面的書:
<? Xml version = 「1.0″ encoding = 「utf-8″?>
<resources>
<declare-styleable name=」Gallery」>
<attr name=」android:galleryItemBackground」 />
</ Declare-styleable
</ Resources>
http://developer.aiwgame.com/gallery-show-an-image-from-android-sd-card.html
到底是什麼問題?還是有問題?任何錯誤日誌? – 2011-04-10 16:40:38
沒有錯誤,但它沒有在屏幕上顯示任何圖像 – moe 2011-04-10 16:44:20
爲什麼你把你的'ImageView'作爲'WebView'的子元素?看起來很奇怪! – theomega 2011-04-10 16:54:09