2012-10-24 3 views
0

이미지가있는 갤러리를 여는 ImageButton을 만들려고합니다. 지금은 간단하게 만들려고합니다. 갤러리를 두 장의 그림으로 열기 위해 이미지를 클릭하면됩니다. 하지만 어떻게해야할지 모르겠습니다. 인터넷에서 검색 한 결과 다른 사람들이 OnClick이라는 하나의 Java 메소드를 호출하는 XML 코드를 사용하고 있음을 확인했습니다. 여기에 XML이 있습니다 :Android 앱에서 ImageButton 갤러리 열기

XML에 더 많은 코드가 있지만, 필자는 그것이 필요한 코드라고 생각합니다. 지금까지 그것은 잘 작동합니다. 그러나 이제는 "buttonClick"메서드를 어디에 둘 것인지, 그리고 무엇을 포함해야하는지 확신 할 수 없습니다. 이 클래스를 만들었습니다 :

package org.imageGallery; 

import org.imageGallery.actionbarcompat.ActionBarActivity; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemSelectedListener; 
import android.widget.Gallery; 

public class ButtonClickActivity extends ActionBarActivity implements OnItemSelectedListener, OnClickListener{ 

@Override 
public void onClick(View v) { 

} 

@Override 
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, 
     long arg3) { 

} 

@Override 
public void onNothingSelected(AdapterView<?> arg0) { 

} 
} 

"buttonClick"메서드를 여기에 배치해야하며 이미지를 가져와야합니다. 하지만 XML로 반환하려면 어떻게해야하며 갤러리에서 어떻게 표시 할 수 있습니까? 나는 여전히 Android에 매우 익숙하지 만 잘하면 내가 할 수있을 것이다.

편집 :

Here is a great tutorial that helped me a lot.

답변

1

첫 번째 이미지의 경우 이 같은 활동을 확장하는 클래스 확인해야합니다 :

public class Main extends Activity{} 

1. 활동이 시작될 때 실행되는 OnCreate()이라는 메소드를 대체하십시오. setContentView(R.layout.yourLayout)이라고에서 onCreate 블록 방법

  1. 재정 그래서 활동은 xml 파일을 표시합니다. 당신이이 방법을들을 수

  2. 다음 버튼에 대한 참조를 가져 : Button myButton = (Button) findViewById(R.id.button1);

그런 다음 구현하는 방법에 클래스에 OnClickListener를 구현하는 경우 :

@Override 
public void onClick(View v) { 
if(v.getItemId() == R.id.button1){ 
//do what you want here: 
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("content://media/external/images/media/16"))) //As deeper answered to open the gallery 
} 
+0

고마워, 이건 내 경우에 잘 작동했다. – Apostrofix

2
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("content://media/external/images/media/16"))); /** you can use your uri */ 

편집 :/*

public class sdActivity extends Activity implements MediaScannerConnectionClient{ 
    public String[] allFiles; 
private String SCAN_PATH ; 
private static final String FILE_TYPE = "*/*"; 

private MediaScannerConnection conn; 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    File folder = new File("/sdcard/youfoldername/"); 
    allFiles = folder.list(); 
// uriAllFiles= new Uri[allFiles.length]; 
    for(int i=0;i<allFiles.length;i++) 
    { 
     Log.d("all file path"+i, allFiles[i]+allFiles.length); 
    } 
    // Uri uri= Uri.fromFile(new File(Environment.getExternalStorageDirectory().toString()+"/yourfoldername/"+allFiles[0])); 
    SCAN_PATH=Environment.getExternalStorageDirectory().toString()+"/yourfoldername/"+allFiles[0]; 
    Log.d("SCAN PATH", "Scan Path " + SCAN_PATH); 
    Button scanBtn = (Button)findViewById(R.id.scanBtn); 
    scanBtn.setOnClickListener(new OnClickListener(){ 
    @Override 
    public void onClick(View v) { 
     startScan(); 
    }}); 
    } 
    private void startScan() 
    { 
    Log.d("Connected","success"+conn); 
    if(conn!=null) 
    { 
    conn.disconnect(); 
    } 
    conn = new MediaScannerConnection(this,this); 
    conn.connect(); 
    } 
@Override 
public void onMediaScannerConnected() { 
    Log.d("onMediaScannerConnected","success"+conn); 
    conn.scanFile(SCAN_PATH, FILE_TYPE);  
} 
@Override 
public void onScanCompleted(String path, Uri uri) { 
    try { 
     Log.d("onScanCompleted",uri + "success"+conn); 
     if (uri != null) 
     { 
     Intent intent = new Intent(Intent.ACTION_VIEW); 
     intent.setData(uri); 
     startActivity(intent); 
     } 
     } finally 
     { 
     conn.disconnect(); 
     conn = null; 
     } 
     } 
} 
+0

좋아, 내가 참조. 이 줄은 "buttonClick"방법으로 게시되어야합니다. 나는 내 그림의 길을 만들 것이다. 그러나 하나 이상의 그림이 있다면 어떨까요? 위와 같은 선을 더 만듭니다. 그리고 좋은 생각입니다. 왜냐하면 내가 가지고있는 사진의 수를 모를 경우 ... 그렇지만 문제는 ImageButton을 누를 때 열리는 XML 파일에 XML을 표시하는 것입니다. – Apostrofix

+0

당신은 SD 카드의 폴더에 이미지를 다운로드하고 해당 폴더의 URI를 제공하고 갤러리는 특정 폴더 안에있는 모든 이미지를 표시합니다 내 편집 된 답변을 확인하시기 바랍니다 –

+0

XML 부분을 가져 오지 않았습니까? xml 파일의 모든 이미지 링크를 표시하려는 경우 xml을 ArrayList로 구문 분석해야합니다. 위와 같은 방법으로 진행할 수 있습니다. –