我使用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;
答案 0 :(得分:1)
在我的情况下 - 我有更多 10张图片,每张图片的重量更多800kb ,我检查这个问题,如果作为参数传递,真的很好 3页
viewPager.setOffscreenPageLimit(3);
此外,如果您将图片存储在res/drawable
中 - 将drawable
重命名为drawable-nodpi
,因为 -nodpi 意味着下一个
这些是与密度无关的资源。系统无法扩展 使用此限定符标记的资源,无论当前是什么 屏幕的密度。
答案 1 :(得分:0)
我也有同样的问题。请将图片尺寸调整为较小或所需尺寸。这将是解决您问题的方法。