2013-08-01 2 views
0

보기의 배경 이미지를 동적으로 변경하려고합니다. View 클래스를 확장하는 paintView 클래스가 있습니다. sdcard에 저장된 이미지의 파일 이름 인 사용자 입력 (아래 코드의 m_text)을 사용합니다. 그런 다음 paintView의 배경 이미지로 설정하려고합니다.Android : 동적으로 변경 배경보기

시도했지만 흰색 배경 만 제공합니다. 그래서 나는 그 길에 뭔가 잘못 될 수 있다고 생각했습니다. 따라서 사용자 입력을 사용하고 이미지의 실제 경로 (이미지를 저장하는 데 사용 된 경로, 아래 코드에서 주석 처리되지 않은 주소)를 사용하여 부분을 주석 처리했습니다. 그것은 여전히 ​​나에게 흰색 배경을 제공합니다.

오류가있는 곳을 찾는 사람을 도와 줄 수 있습니까?

감사합니다.

@SuppressWarnings("deprecation") 
private void loadImage(){ 

    String root = Environment.getExternalStorageDirectory().toString(); 
    //String address = root + m_text; 
    String address = "file://" + root + "/saved_images" + "/Image.jpg"; 
    File imageFile = new File(address); 

    Bitmap bitmap = BitmapFactory.decodeFile(imageFile.getAbsolutePath()); 
    System.out.println(imageFile.getAbsolutePath()); 
    Drawable bgImage = new BitmapDrawable(context.getResources(), bitmap); 

    paintView.setBackgroundDrawable(bgImage); 

} 

이 부분이이 기능을 호출하는 곳입니다. 그것은에서 onCreate 메소드 내에서의 : 매니페스트에

loadButton.setOnClickListener(new OnClickListener(){ 

      @Override 
      public void onClick(View arg0){ 
       AlertDialog.Builder builder = new AlertDialog.Builder(context); 

       final EditText input = new EditText(context); 
       input.setInputType(InputType.TYPE_CLASS_TEXT); 
       builder.setView(input); 

       builder.setPositiveButton("load", new DialogInterface.OnClickListener(){ 
        @Override 
        public void onClick(DialogInterface dialog, int which){ 
         m_text = input.getText().toString(); 
         loadImage(); 
        } 
       }); 

       builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener(){ 
        @Override 
        public void onClick(DialogInterface dialog, int which){ 
         dialog.cancel(); 
        } 
       }); 


       builder.show(); 

      }  
     }); 

:

<uses-permission android:name = "android.permission.WRITE_EXTERNAL_STORAGE"/> 
<uses-permission android:name = "android.permission.READ_EXTERNAL_STORAGE"/> 
+0

loadImage() 메서드를 사용하는 부분을 게시 할 수 있습니까? – Opiatefuchs

+0

질문에 추가했습니다! 감사합니다 – user1798650

답변

0

당신이 사용 했 이유는 무엇입니까?

String address = "file://" + root + "/saved_images" + "/Image.jpg"; 

파일을 디코딩 할 수 없다고 생각합니다. 비트 맵을 확인 했습니까? 그냥 사용해야한다고 생각합니다.

String address = root + "/saved_images" + "/Image.jpg"; 

시도해보십시오.

+0

이것은 그것을 해결했습니다! 감사! – user1798650