簡體   English   中英

如何在ViewPager上有效地添加多個圖像

[英]How to efficiently add multiple images on ViewPager

這是我第三天學習android應用。 當前使用的是android studio,我的問題與ViewPager類有關。 下面是我的fragment和viewPager類的代碼。

ViewPager和適配器類:

軟件包com.syedabdullah.syed.quran_memorization_application;

導入android.content.pm.ActivityInfo; 導入android.os.Bundle; 導入android.support.v4.app.Fragment; 導入android.support.v4.app.FragmentActivity; 導入android.support.v4.app.FragmentManager; 導入android.support.v4.app.FragmentStatePagerAdapter; 導入android.support.v4.view.PagerAdapter; 導入android.support.v4.view.ViewPager; 導入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;

/ ** *由syed在2014年12月25日創建。 * /

導入android.os.Bundle; 導入android.support.v4.app.Fragment; 導入android.view.LayoutInflater; 導入android.view.View; 導入android.view.ViewGroup; 導入android.widget.ImageView;

/ ** *包含簡單視圖的占位符片段。 * /

公共類viewPageFragment擴展Fragment {

 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; } } 

目前,我的initialiseArray無法正常工作。 如果要初始化數組,如下所示:

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

它將在我的ViewPager中顯示適當的圖像。 但是,我有500多張圖像,如果執行此操作,則將永遠花費時間。 這就是為什么我想知道是否有更簡單的方法來插入這些圖像。 我所有的圖像都按升序命名。 所以我的第一張圖片一直命名為._2,一直到._550左右。

還有1個問題。 如果我們可以做一個像

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

那么這怎么不起作用?

int []圖片=新的int [3]; 圖片[0] = R.drawable._2;

有人可以解釋一下嗎? 謝謝。

我想出了一種有效地向ViewPager添加大量頁面的方法。 只需將答案發布給可能面臨類似問題的任何其他新手。 我試圖做的是在應用程序內存中添加數百個圖像,這非常非常低效。 假定要完成的方式是必須下載圖像(使用AsynTask或DownloadManger)並將其存儲在外部存儲中,然后從那里提取圖像。 希望這可以幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM