2013-05-24 4 views
0

오픈 소스 응용 프로그램을 편집하고 있습니다. 어린이를위한 간단한 색상 페이지 응용 프로그램입니다. 사용자가 자신의 이미지를 가져올 수있게해야합니다. 메뉴에서 버튼을 클릭하면 코드가 표시됩니다 (SD에 있음). 그러면 이미지를 선택하고이 이미지를 가져올 수 있습니다. 그가 그것을 채색 할 수있는 전망.기존 이미지를 추가하는 방법은 무엇입니까?

public class StartNewActivity extends NoTitleActivity implements View.OnClickListener 
{ 
    // This is an expensive operation. 

    public static int randomOutlineId() 
    { 
     return new ResourceLoader().randomOutlineId(); 
    } 

    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 

     // Apparently this cannot be set from the style. 
     getWindow().setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND, 
       WindowManager.LayoutParams.FLAG_BLUR_BEHIND); 

     setContentView(R.layout.start_new); 

     GridView gridview = (GridView) findViewById(R.id.start_new_grid); 
     gridview.setAdapter(new ImageAdapter(this)); 
    } 

    public void onClick(View view) 
    { 
     setResult(view.getId()); 
     finish(); 
    } 

    private static class ResourceLoader 
    { 

     ResourceLoader() 
     { 
      // Use reflection to list resource ids of thumbnails and outline 
      // images.First, we list all the drawables starting with the proper 
      // prefixes into 2 maps. 
      Map<String, Integer> outlineMap = new TreeMap<String, Integer>(); 
      Map<String, Integer> thumbMap = new TreeMap<String, Integer>(); 
      Field[] drawables = R.drawable.class.getDeclaredFields(); 
      for (int i = 0; i < drawables.length; i++) 
      { 
       String name = drawables[i].getName(); 
       try 
       { 
        if (name.startsWith(PREFIX_OUTLINE)) 
        { 
         outlineMap.put(name.substring(PREFIX_OUTLINE.length()), 
           drawables[i].getInt(null)); 
        } 
        if (name.startsWith(PREFIX_THUMB)) 
        { 
         thumbMap.put(name.substring(PREFIX_THUMB.length()), 
           drawables[i].getInt(null)); 
        } 
       } 
       catch (IllegalAccessException e) 
       { 
       } 
      } 
      Set<String> keys = outlineMap.keySet(); 
      keys.retainAll(thumbMap.keySet()); 
      _outlineIds = new Integer[keys.size()]; 
      _thumbIds = new Integer[keys.size()]; 
      int j = 0; 
      Iterator<String> i = keys.iterator(); 
      while (i.hasNext()) 
      { 
       String key = i.next(); 
       _outlineIds[j] = outlineMap.get(key); 
       _thumbIds[j] = thumbMap.get(key); 
       j++; 
      } 
     } 

     public Integer[] getThumbIds() 
     { 
      return _thumbIds; 
     } 

     public Integer[] getOutlineIds() 
     { 
      return _outlineIds; 
     } 

     public int randomOutlineId() 
     { 
      return _outlineIds[new Random().nextInt(_outlineIds.length)]; 
     } 
     private static final String PREFIX_OUTLINE = "outline"; 
     private static final String PREFIX_THUMB = "thumb"; 
     private Integer[] _thumbIds; 
     private Integer[] _outlineIds; 
    } 

    private class ImageAdapter extends BaseAdapter 
    { 

     ImageAdapter(Context c) 
     { 
      _context = c; 
      _resourceLoader = new ResourceLoader(); 
     } 

     public int getCount() 
     { 
      return _resourceLoader.getThumbIds().length; 
     } 

     public Object getItem(int i) 
     { 
      return null; 
     } 

     public long getItemId(int i) 
     { 
      return 0; 
     } 

     public View getView(int position, View convertView, ViewGroup parent) 
     { 
      ImageView imageView; 
      if (convertView == null) 
      { 
       // If it's not recycled, initialize some attributes 
       imageView = new ImageView(_context); 
       imageView.setLayoutParams(new GridView.LayoutParams(145, 145)); 
       imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); 
       imageView.setPadding(8, 8, 8, 8); 
       imageView.setOnClickListener(StartNewActivity.this); 
      } 
      else 
      { 
       imageView = (ImageView) convertView; 
      } 

      imageView.setImageResource(_resourceLoader.getThumbIds()[position]); 
      imageView.setId(_resourceLoader.getOutlineIds()[position]); 
      return imageView; 
     } 
     private Context _context; 
     private ResourceLoader _resourceLoader; 
    } 
} 
+0

희망이 도움을 사용하여 수행 할 수 있습니다 귀하의 코드와 함께, 그리고 무엇입니까 액츄에이터 당신이 묻고있는 것. 지금 당장 어떤 대답을 기대하는지는 분명하지 않습니다. – personne3000

+0

내 프로젝트에 대한 코드가 필요합니다.이 코드는 사용자가 자신의 이미지를 앱에 추가 할 수 있도록 허용해야합니다. 그러면이 이미지는 이미 R.drawable에있는 다른 이미지와 같이 사용되며 어떤 코드도 사용하지 않았습니다. 이것은 내가 안드로이드 개발에 새로운 때, 당신이 나를 도울 수 있다면 위의 링크 전체 프로젝트를 게시했습니다. – user2415912

답변

0

난 당신이 응용 프로그램에서 SD 카드에서 사진을 사용할 필요가 있다고 생각 : 여기

그리고 Here is the full source code.R.drawable에서 이미지로드에 대한 코드입니다. 당신은 너무 다음 링크

Load images from sd card folder

How to Dynamically show images from a folder in sdcard

gridview and setImageBitmap when load image from SDcard

loading images from SD card directory in GridView

그것은 당신이 정확하게 문제를 상태로 질문을 수정해야

관련 문제