问题描述
我正在尝试按照一些不同的教程制作一个 ViewPager
,让用户可以滑动浏览图像,然后将当前查看的图像设置为他们的墙纸。到目前为止,我还没有成功设置壁纸,并且当用户在照片中滑动时,性能会出现问题,性能会急剧下降。
public class MainActivity extends AppCompatActivity {
ViewPager mViewPager;
int[] mImages = {R.drawable.example__1_,R.drawable.example__2_,R.drawable.example__3_,R.drawable.example__4_,R.drawable.example__5_,R.drawable.example__6_,R.drawable.example__7_,R.drawable.example__8_,R.drawable.example__9_,R.drawable.example__10_,R.drawable.example__11_,R.drawable.example__12_};
item mViewPagerAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mViewPager = (ViewPager) findViewById(R.id.viewPagerMain);
mViewPagerAdapter = new item(MainActivity.this,mImages);
mViewPager.setAdapter(mViewPagerAdapter);
final int set = mViewPager.getCurrentItem();
Button button = findViewById(R.id.SetWall);
button.setonClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this,"Setting Wallpaper... 1/2",Toast.LENGTH_SHORT).show();
WallpaperManager wpm
= WallpaperManager.getInstance(getApplicationContext());
try {
Toast.makeText(MainActivity.this,"Setting Wallpaper... 2/2",Toast.LENGTH_SHORT).show();
wpm.setResource(set);
Toast.makeText(MainActivity.this,"Wallpaper Set!",Toast.LENGTH_SHORT).show();
}
catch (IOException e) {
Toast.makeText(MainActivity.this,"Error",Toast.LENGTH_SHORT).show();
}
}
});
}
解决方法
-
你有没有像这样在你的 Manifest.xml 文件中设置权限?
<uses-permission android:name="android.permission.SET_WALLPAPER" />
-
这是因为您的页面每次离开屏幕时都会被破坏并重新创建,而当您滑动到下一个时会发生这种情况。
要使 ViewPager 更流畅,请使用
mViewPager.setOffscreenPageLimit(NumberOfPages-1);
设置适配器后 (mViewPager.setAdapter();
)