2011-04-10 7 views
5

SD 카드에서 이미지를 읽으려고하고 있는데 제대로 작동하는지 잘 모르겠습니다.android에서 SD 카드의 이미지를 읽는 중

String imageInSD = "/sdcard/Hanud/" + c.getString(1) + ".PNG"; 
     Bitmap bitmap = BitmapFactory.decodeFile(imageInSD); 
     ImageView myImageView = (ImageView)findViewById(R.id.imageview); 
     myImageView.setImageBitmap(bitmap); 

그리고 이것은 내 주요 파일입니다 :

<?xml version="1.0" encoding="utf-8"?> 
<WebView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/webview" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 

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

    <ImageView 
    android:id="@+id/imageview" 
    android:layout_gravity="center" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:scaleType="center" 
    /> 


    <TextView 
    android:id="@+id/myNameText" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/hello" 
    /> 
</WebView> 
+0

정확히 문제는 무엇인가? 아니면 문제가 있습니까? 오류 로그? –

+0

오류가 없지만 화면에 아무런 이미지도 표시하지 않습니다. – moe

+0

왜'ImageView'를'WebView'의 하위로 두 시나요? 이상하게 보입니다! – theomega

답변

0

먼저 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

8

그것은해야한다 :

String imageInSD = Environment.getExternalStorageDirectory().getAbsolutePath() +"/Hanud/" + c.getString(1) + ".PNG"; 
     Bitmap bitmap = BitmapFactory.decodeFile(imageInSD); 
     ImageView myImageView = (ImageView)findViewById(R.id.imageview); 
     myImageView.setImageBitmap(bitmap); 

이 당신을 보장합니다 올바른 디렉토리를 찾으십시오! 당신은 try/catch 블록에서 FileInputStream에 실행해야

File sdCard = Environment.getExternalStorageDirectory(); 

File directory = new File (sdCard.getAbsolutePath() + "/Pictures"); 

File file = new File(directory, "image_name.jpg"); //or any other format supported 

FileInputStream streamIn = new FileInputStream(file); 

Bitmap bitmap = BitmapFactory.decodeStream(streamIn); //This gets the image 

streamIn.close(); 

:

3

는 다음과 같은 코드를 사용할 수 있습니다.

0

BitmapFactory.Options options = new BitmapFactory.Options(); options.inSampleSize = 3;

Bitmap bitmap = BitmapFactory.decodeFile(f.get(position),options); 
0
This is the code 

    public class MainActivity extends AppCompatActivity { 

    private ImageView mImageView; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     mImageView= (ImageView) findViewById(imageView); 

    } 

    public void openImages(View view) { 
     Intent intent = new Intent(Intent.ACTION_PICK, 
       MediaStore.Images.Media.INTERNAL_CONTENT_URI); 
     intent.setType("image/*"); 
     intent.putExtra("crop", "true"); 
     intent.putExtra("scale", true); 
     intent.putExtra("outputX", 256); 
     intent.putExtra("outputY", 256); 
     intent.putExtra("aspectX", 1); 
     intent.putExtra("aspectY", 1); 
     intent.putExtra("return-data", true); 
     startActivityForResult(intent, 1); 
    } 
    public void openCamera(View view) { 
     Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
     startActivityForResult(cameraIntent, 2); 
    } 
    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     if (resultCode != RESULT_OK) { 
      return; 
     } 

     if (requestCode == 1) { 
      final Bundle extras = data.getExtras(); 
      if (extras != null) { 
       //Get image 
       Bitmap newProfilePic = extras.getParcelable("data"); 
       mImageView.setImageBitmap(newProfilePic); 

      } 
     } 
     if(requestCode==2){ 
      final Bundle bundle=data.getExtras(); 
      if(bundle !=null){ 
       Bitmap camera_pic=bundle.getParcelable("data"); 
       mImageView.setImageBitmap(camera_pic); 
      } 
     } 
    } 


} 
관련 문제