【发布时间】:2014-12-26 03:14:07
【问题描述】:
这是我学习安卓应用的第三天。目前使用,android studio,我的问题与 ViewPager 类有关。下面是我的片段和 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 扩展片段 {
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;
谁能解释一下?谢谢。
【问题讨论】:
-
唯一的问题是我需要我所有的图片来覆盖整个页面,不知道画廊是否可以做到(只做了 3 天的 android。但我可能会检查一下。)
-
那么快问一下,我的应用程序将要求我单独查明这些图像中的某些位置。画廊里也可以吗?
标签: java android android-layout android-fragments