为什么ViewPager很慢

时间:2015-08-23 19:04:55

标签: java android xml

我使用ViewPager在多个图像之间滑动,但是虽然我只加载了少量图像,但是在图像之间滑动是缓慢而且不平滑。这是我的完整代码

MainActivity.java

public class MainActivity extends ActionBarActivity implements ActionBar.TabListener {

public static SectionsPagerAdapter mSectionsPagerAdapter;
public static ViewPager mViewPager;


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

mSectionsPagerAdapter = new   SectionsPagerAdapter(getSupportFragmentManager());

mViewPager = (ViewPager) findViewById(R.id.pager);
mViewPager.setAdapter(mSectionsPagerAdapter);

}

public class SectionsPagerAdapter extends FragmentPagerAdapter {


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

@Override
public Fragment getItem(int position) {

    Fragment fragment = null;
    Bundle args = new Bundle();

    fragment = new Page();
    args.putString(Page.ARG_SECTION_NUMBER, position);
    fragment.setArguments(args);

    return fragment;

}

public int getItemPosition(Object object) {
    Log.v("MBG", "getItemPosition");
    return POSITION_NONE;
}

@Override
public int getCount() {
    return 6;
}

}

Page.java

public class Page extends Fragment {


public static final String ARG_SECTION_NUMBER = "section_number";
public Page() {
}

@Override

public View onCreateView(LayoutInflater inflater, ViewGroup container,
                     Bundle savedInstanceState) {

View rootView = inflater.inflate(R.layout.activity_page, container, false);
String index = getArguments().getString(ARG_SECTION_NUMBER);

ImageView callImage = (ImageView) rootView.findViewById(R.id.imageView);

int resID = getActivity().getResources().getIdentifier(index, "drawable",  getActivity().getPackageName());

callImage.setImageResource(resID);

return rootView;

}

MainActivity.xml

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
 >

    <android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/pager"
        android:layout_marginTop="0dp"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".Prayers"


        />


</RelativeLayout>

Page.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.mahmoud.qaloun.Page">

<ImageView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/imageView"
    android:src="@drawable/a1"
    android:scaleType="fitXY"
    />

    </RelativeLayout>

但是当我改变这行代码时

int resID = getActivity().getResources().getIdentifier(index, "drawable",  getActivity().getPackageName());

到此:

int resID = getActivity().getResources().getIdentifier("1", "drawable",  getActivity().getPackageName());

它在#34; 1&#34;是存储在资源文件夹中的图像&#34; 1.jpg&#34;

2 个答案:

答案 0 :(得分:1)

在我的情况下 - 我有更多 10张图片,每张图片的重量更多800kb ,我检查这个问题,如果作为参数传递,真的很好 3页

viewPager.setOffscreenPageLimit(3);

此外,如果您将图片存储在res/drawable中 - 将drawable重命名为drawable-nodpi,因为 -nodpi 意味着下一个

  

这些是与密度无关的资源。系统无法扩展   使用此限定符标记的资源,无论当前是什么   屏幕的密度。

答案 1 :(得分:0)

我也有同样的问题。请将图片尺寸调整为较小或所需尺寸。这将是解决您问题的方法。