2013-03-28 2 views
0

내 응용 프로그램에서 이미지 갤러리를 만들려고합니다. 현재이 이미지가 격자보기로 표시되어 ImageAdapter를 통해 전체 이미지보기로 전달됩니다.격자보기에서 조각을 사용하는 방법은 무엇입니까?

문제는 그리드보기에서 클릭 한 후 그림을 스 와이프하고 싶을 때입니다.

누군가 내가 언급 한 바에 따르면 이렇게하기 위해 조각을 사용할 수는 있지만 안드로이드 개발에 익숙하지 않습니다.

다른 사람이이를 수행하는 방법에 대해 더 자세히 설명해 주실 수 있습니까? 감사합니다

내가 가진 코드는 다음과 같습니다 다음

public class Marble extends Activity{ 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.marble); 

GridView gridView = (GridView) findViewById(R.id.gridview1); 

     // Instance of ImageAdapter Class 
     gridView.setAdapter(new ImageAdapter1(this)); 

     /** 
     * On Click event for Single Gridview Item 
     * */ 
     gridView.setOnItemClickListener(new OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View v, 
        int position, long id) { 

       // Sending image id to FullScreenActivity 
       Intent i = new Intent(getApplicationContext(), FullImageActivity1.class); 
       // passing array index 
       i.putExtra("id", position); 
       startActivity(i); 
      } 
     }); 

    } 
} 

마지막

public class FullImageActivity1 extends Activity { 


    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.full_image); 

     // get intent data 
     Intent i = getIntent(); 

     // Selected image id 
     int position = i.getExtras().getInt("id"); 
     ImageAdapter1 imageAdapter1 = new ImageAdapter1(this); 

     ImageView imageView = (ImageView) findViewById(R.id.fullimage); 
     imageView.setImageResource(imageAdapter1.mThumbIds[position]); 
     imageView.setScaleType(ImageView.ScaleType.FIT_XY); 
    } 
} 

과 :

당신의 FullImageActivity1에서보기 호출기를 넣어 대신 이미지 뷰의
public class ImageAdapter1 extends BaseAdapter { 
    private Context mContext; 

    // Keep all Images in array 
    Integer[] mThumbIds = { 
      R.drawable.arabescato, R.drawable.biancocarrara, 
      R.drawable.botticinoclassico, R.drawable.calacattaoro, 
      R.drawable.cremamarfil, R.drawable.cremavalencia, 
      R.drawable.emperadordark, R.drawable.jurabeige, 
      R.drawable.neromarquina, R.drawable.perlatoolympo, 
      R.drawable.rojoalicante 

    }; 

    // Constructor 
    public ImageAdapter1(Context c){ 
     mContext = c; 
    } 

    @Override 
    public int getCount() { 
     return mThumbIds.length; 
    } 

    @Override 
    public Object getItem(int position) { 
     return mThumbIds[position]; 
    } 

    @Override 
    public long getItemId(int position) { 
     return 0; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) {   
     ImageView imageView = new ImageView(mContext); 
     imageView.setImageResource(mThumbIds[position]); 
     imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); 
     imageView.setLayoutParams(new GridView.LayoutParams(265, 265)); 
     return imageView; 
    } 

} 

답변

1

this.mPagerfrimage = new pagerfrimage(getSupportFragmentManager(), 
       list of drawables here); 
     ViewPager vp_image = (ViewPager) findViewById(R.id.viewpager1); 
     vp_image.setAdapter(mPagerfrimage); 

이 호출기 어댑터 CALSS입니다

class pagerfrimage extends FragmentPagerAdapter { 
    List<Integer> la; 

    public pagerfrimage(FragmentManager fm, List<Integer> result) { 
     super(fm); 
     this.la = result; 
     // TODO Auto-generated constructor stub 
    } 

    @Override 
    public Fragment getItem(int arg0) { 
     // TODO Auto-generated method stub 
     fragmentforimage ffrFragmentforimage = new fragmentforimage(); 
     Bundle bundle = new Bundle(); 
     bundle.putInt("resourceid", la.get(arg0)); 
     bundle.putInt("number", arg0); 
     ffrFragmentforimage.setArguments(bundle); 
     return ffrFragmentforimage; 
    } 

    @Override 
    public int getCount() { 
     // TODO Auto-generated method stub 
     return la.size(); 
    } 



} 

조각 클래스

public class fragmentforimage extends Fragment { 
int number; 
int resourceid; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     resourceid=getArguments()!=null?getArguments().getInt("resourceid"):0; 
     number=getArguments()!=null?getArguments().getInt("number"):0; 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     View v=inflater.inflate(R.layout.yourlayot containing image view, container, false); 
     ImageView iv=(ImageView)v.findViewById(R.id.your imageviews id); 
     Drawable drawable=getResources().getDrawable(resourceid); 
      iv.setImageDrawable(drawable); 
      return v;} 
처음에 당신의 필요에 따라 코드를 변경할 것을 보여 할 수 있도록 현재 선택한 이미지 ID를 전달할 수 있습니다

+0

여기에 이미지 뷰를 넣은 위치 : ImageView iv = (ImageView) v.findViewById (R.id.your imageviews id); 각 사진을 볼 필요가 있습니까? 나는 약 100! – David

+0

아니요, 매번 팽창 될 이미지 뷰가있는 단일 레이아웃을 만들면됩니다. View v = inflater.inflate (이미지 뷰, 컨테이너, false가 포함 된 R.layout.yourlayot); 이 레이아웃의 이미지보기는 –

+0

우수해야하며, 정말 미안합니다. 나는이 부분을 올바르게 했는가? this.mPagerfrimage = 새로운 pagerfrimage (에서 getSupportFragmentManager() \t \t \t \t R.drawable.arabescato, R.drawable.biancocarrara, \t R.drawable.botticinoclassico, R.drawable.calacattaoro, \t R.drawable.cremamarfil, R.drawable.cremavalencia, \t R.drawable.emperadordark, R.drawable.jurabeige, \t R.drawable.neromarquina, R.drawable.perlatoolympo, R.drawable.rojoalicante \t); ViewPager vp_image = (ViewPager) findViewById (R.id.fullimage); vp_image.setAdapter (mPagerFrimage); – David

관련 문제