未实现 Android 应用壁纸功能;不知道为什么?

问题描述

我正在尝试按照一些不同的教程制作一个 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();
            }
        }
    });
}

解决方法

  1. 你有没有像这样在你的 Manifest.xml 文件中设置权限?

    <uses-permission android:name="android.permission.SET_WALLPAPER" />
    
  2. 这是因为您的页面每次离开屏幕时都会被破坏并重新创建,而当您滑动到下一个时会发生这种情况。

    要使 ViewPager 更流畅,请使用 mViewPager.setOffscreenPageLimit(NumberOfPages-1); 设置适配器后 (mViewPager.setAdapter();)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...