2014-12-10 3 views
0

내 앱이하는 일은 화면에 이미지를 표시하는 것입니다. 사용자가 '다음'또는 '뒤로'버튼을 클릭하면 다른 사진으로 바뀝니다. 사진을 바탕 화면으로 설정하거나 이미지를 다운로드 할 수있는 옵션이 제공됩니다. 응용 프로그램에서 어떤 이미지가 화면에 있는지 감지 할 수 있어야 올바른 이미지를 다운로드 할 수 있습니다. 여기에 내 코드입니다 :ImageView에서 resourceId 가져 오기 - Android

당신이 hImageViewSemafor.setImageResource() 통해 ImageView hImageViewSemafor에 이미지 리소스를 설정하면 단순히 hImageViewSemafor에 넣어 자원의 id 일부 클래스 멤버 변수를 설정
package com.dogger20011.mcwallpapers; 

import java.io.File; 
import java.io.FileOutputStream; 
import java.io.IOException; 

import android.app.Activity; 
import android.app.WallpaperManager; 
import android.graphics.Bitmap; 
import android.graphics.BitmapFactory; 
import android.os.Bundle; 
import android.os.Environment; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.ImageView; 

public class Portrait extends Activity { 
    private ImageView hImageViewSemafor; 
    private Button hButton; 
    private Button hButton2; 
    FileOutputStream outStream; 

    int currentImage = 0; 
    int[] images = { R.drawable.b1, R.drawable.b2, R.drawable.b3, R.drawable.background1 }; 
    int[] imagesb = { R.drawable.background1, R.drawable.b3, R.drawable.b2, R.drawable.b1 }; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.portrait); 

     hImageViewSemafor = (ImageView)findViewById(R.id.imageView1); 
     hButton = (Button) findViewById(R.id.button2); 
     hButton.setOnClickListener(aButtonChangeImageListener); 

     hImageViewSemafor = (ImageView)findViewById(R.id.imageView1); 
     hButton2 = (Button) findViewById(R.id.button1); 
     hButton2.setOnClickListener(bButtonChangeImageListener); 
    } 
    View.OnClickListener aButtonChangeImageListener = new OnClickListener() { 

     public void onClick(View v) { 

      currentImage++; 
      currentImage = currentImage % images.length; 

      hImageViewSemafor.setImageResource(images[currentImage]); 

     } 
    }; 
    View.OnClickListener bButtonChangeImageListener = new OnClickListener() { 

     public void onClick(View v) { 

      currentImage++; 
      currentImage = currentImage % imagesb.length; 

      hImageViewSemafor.setImageResource(imagesb[currentImage]); 

     } 
    }; 

    public void myClickHandler(View arg0){  
     WallpaperManager myWallpaperManager 
     = WallpaperManager.getInstance(getApplicationContext()); 
     try { 
      myWallpaperManager.setResource(CURRENT IMAGE); 
     } catch (IOException e) { 

      e.printStackTrace(); 
     } 
    } 
    public void myClickHandler2(View v) throws IOException{ 
     Bitmap bm = BitmapFactory.decodeResource(getResources(), CURRENT IMAGE); 
     File file = new File(Environment.getExternalStorageDirectory() + "/Download/Background1.jpg"); 
     outStream = new FileOutputStream(file); 
     bm.compress(Bitmap.CompressFormat.JPEG, 100, outStream); 
     outStream.flush(); 
     outStream.close(); 
    } 

} 
+2

코드에 대한 구체적 내용이 작동하지 않습니까? – EJK

답변

2

. 그런 다음 해당 변수의 값을 사용하여 화면에 어떤 이미지가 있는지 확인하십시오. 더 GET 자원 아이디 INT ImageView 클래스가 없기 때문에

private int currentImageResId; 

View.OnClickListener aButtonChangeImageListener = new OnClickListener() { 

    public void onClick(View v) { 

     currentImage++; 
     currentImage = currentImage % images.length; 

     hImageViewSemafor.setImageResource(images[currentImage]); 
     currentImageResId = images[currentImage]; 
    } 
}; 

View.OnClickListener bButtonChangeImageListener = new OnClickListener() { 

    public void onClick(View v) { 

     currentImage++; 
     currentImage = currentImage % imagesb.length; 

     hImageViewSemafor.setImageResource(imagesb[currentImage]); 
     currentImageResId = images[currentImage]; 
    } 
}; 

public void myClickHandler(View arg0){  
    WallpaperManager myWallpaperManager 
    = WallpaperManager.getInstance(getApplicationContext()); 
    try { 
     myWallpaperManager.setResource(currentImageResId); 
    } catch (IOException e) { 

     e.printStackTrace(); 
    } 
} 
2

, 당신은 자원 ID를 저장 setTag(Object object)를 사용할 수 있습니다.

View.OnClickListener aButtonChangeImageListener = new OnClickListener() { 

    public void onClick(View v) { 

     currentImage++; 
     currentImage = currentImage % images.length; 

     hImageViewSemafor.setImageResource(images[currentImage]); 
     hImageViewSemafor.setTag(images[currentImage]); 
    } 
}; 


public void myClickHandler(View arg0){  
    WallpaperManager myWallpaperManager 
    = WallpaperManager.getInstance(getApplicationContext()); 
    try { 
     myWallpaperManager.setResource((Integer)hImageViewSemafor.getTag()); 
    } catch (IOException e) { 

     e.printStackTrace(); 
    } 
} 
관련 문제