我正在使用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;
}
}
Run Code Online (Sandbox Code Playgroud)
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;
}
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
但是当我改变这行代码时
int resID = getActivity().getResources().getIdentifier(index, "drawable", getActivity().getPackageName());
Run Code Online (Sandbox Code Playgroud)
对此:
int resID = getActivity().getResources().getIdentifier("1", "drawable", getActivity().getPackageName());
Run Code Online (Sandbox Code Playgroud)
它工作正常,"1"是存储在资源文件夹"1.jpg"中的图像
放
mViewPager.setOffscreenPageLimit(5);
Run Code Online (Sandbox Code Playgroud)
后 mViewPager.setAdapter();
替换5为屏幕外的页数,即总页数减1.
这会让你ViewPager顺利.
ViewPager没有这个原因的原因很简单,任何屏幕外的页面都会被破坏并在每次切换到该页面时重新创建.如果你有时间在你耗费代码Fragment的onActivityCreated(),他们会在每次页面切换上执行.如果将屏幕外页面限制设置为右,则每次切换页面时都不会重新创建片段.
| 归档时间: |
|
| 查看次数: |
4261 次 |
| 最近记录: |