2014-12-26 2 views
0

이것은 안드로이드 애플 리케이션을 배우는 제 3의 날입니다. 현재 android studio를 사용하고 있으며, 내 질문은 ViewPager 클래스와 관련이 있습니다. 아래 코드는 my fragment와 viewPager 클래스입니다.ViewPager에 여러 이미지를 효율적으로 추가하는 방법

ViewPager 및 어댑터 클래스 :

패키지 com.syedabdullah.syed.quran_memorization_application;

import android.content.pm.ActivityInfo; import android.os.Bundle; 가져 오기 android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentStatePagerAdapter; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.view.Window;

공용 클래스 ViewPagerActivity는 FragmentActivity {

ViewPager myPager; 
PagerAdapter myAdapter; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    //Remove Title bar 
    this.requestWindowFeature(Window.FEATURE_NO_TITLE); 
    //force portrait orientation. (No landscape orientation). 
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
    setContentView(R.layout.activity_view_pager); 

    myPager = (ViewPager) findViewById(R.id.pager); 
    myAdapter = new adapterClass(getSupportFragmentManager()); 
    myPager.setAdapter(myAdapter); 
} 

/* 
@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.menu_view_pager, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle action bar item clicks here. The action bar will 
    // automatically handle clicks on the Home/Up button, so long 
    // as you specify a parent activity in AndroidManifest.xml. 
    int id = item.getItemId(); 

    //noinspection SimplifiableIfStatement 
    if (id == R.id.action_settings) { 
     return true; 
    } 

    return super.onOptionsItemSelected(item); 
} */ 

/*Nested class needed for custom Adapter */ 
private class adapterClass extends FragmentStatePagerAdapter { 

    int[] images = new int[3]; 
    images[0] = R.drawable._2; 

    String extract = "R.drawable._"; 



    public adapterClass(FragmentManager fm) { 
     super(fm); 
    } 

    @Override 
    public Fragment getItem(int position) { 
     //initialiseArray(images); 
     return viewPageFragment.newInstance(position, images[position]); 
    } 

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

    private int[] initialiseArray(int[] array) { 
     for (int i = 2; i <= array.length + 1; i++) { 
      extract += i; 
      array[i-2] = Integer.parseInt(extract); 
     } 
     return array; 
    } 
} 

}

조각 클래스 확장 :

패키지 com.syedabdullah.syed.quran_memorization_application을;

/** * 2014 년 12 월 25 일에 syed 작성. */

import android.os.Bundle; import android.support.v4.app.Fragment; 가져 오기 android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView;

/** * 간단한보기를 포함하는 자리 표시 자 조각. */

공용 클래스 viewPageFragment 현재 내 initialiseArray이 작동하지 않습니다 조각

public viewPageFragment() { 
} 

public static viewPageFragment newInstance(int position, int imageId) { 
    viewPageFragment myFrag = new viewPageFragment(); 
    Bundle myBundle = new Bundle(); 

    myBundle.putInt("imagePosition", position); 
    myBundle.putInt("imageId", imageId); 
    myFrag.setArguments(myBundle); 

    return myFrag; 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    ViewGroup rootView = (ViewGroup) inflater.inflate(R.layout.fragment_view_pager, 
      container, false); 

    int imageId = getArguments().getInt("imageId"); 
    ImageView myImageView = (ImageView) rootView.findViewById(R.id.imageView); 
    myImageView.setImageResource(imageId); 

    return rootView; 
} } 

{

을 확장합니다. 배열을 다음과 같이 초기화하려면 :

int[] images = {R.drawable._2, R.drawable._3, R.drawable._4}; 

내 ViewPager에 적절한 이미지가 표시됩니다. 그러나 나는 500 개 이상의 이미지를 가지고 있으며, 이렇게하면 영원히 걸릴 것입니다. 그래서이 이미지를 삽입하는 더 쉬운 방법이 있는지 궁금합니다. 내 모든 이미지의 이름은 점점 커집니다. 그래서 내 첫 번째 이미지의 이름은 ._550까지 또는 ._550까지입니다.

1 질문하기 우리가 할 수있는 경우와 같은 배열

INT [] = {이미지 R.drawable._2, R.drawable._3, R.drawable._4};

그러면 어떻게 작동하지 않습니까?

int [] images = new int [3]; images [0] = R.drawable._2;

누군가 설명해 주시겠습니까? 감사.

+0

유일한 문제는 전체 페이지를 담을 수있는 모든 이미지가 필요하다는 것입니다. 갤러리가 할 수 있다면 몰라요. (안드로이드를 3 일 동안 만 해봤지만 체크 아웃 할 수도 있습니다.) – Abdullah

+0

빠른 질문. 이 이미지 내부의 특정 위치를 개별적으로 정확히 찾아야합니다. Gallery에서도 가능합니까? – Abdullah

답변

0

엄청난 양의 페이지를 효율적으로 ViewPager에 추가하는 방법을 찾아 냈습니다. 비슷한 문제에 직면 한 다른 새로운 친구에게 답변을 게시하기 만하면됩니다. 내가 시도한 것은 응용 프로그램 메모리 안에 수백 개의 이미지를 추가하는 것이 었는데, 이는 매우 비효율적이었습니다. AsynTask 또는 DownloadManger를 사용하여 이미지를 다운로드하고 외부 저장소에 저장 한 다음 이미지를 추출한다고 가정합니다. 희망이 도움이됩니다.

관련 문제