【问题标题】:How to add set as wallpaper option in following code in Android如何在Android的以下代码中添加设置为墙纸选项
【发布时间】:2014-03-20 17:47:30
【问题描述】:

我正在我的 android 应用程序中创建滑动操作。它工作完美。现在我想创建设置为墙纸选项,以便用户可以将当前图像设置为墙纸。我添加了一些代码。但它不工作。请有人帮我将当前图像作为壁纸。

代码-

public class FullImageActivity extends Activity {

    int position;
    LinearLayout full;
    Button btn;

    public Integer[] mThumbId = {
                R.drawable.kri1, R.drawable.kri2,
                R.drawable.kri3, R.drawable.kri4,
                R.drawable.kri5, R.drawable.kri6,
                R.drawable.kri7, R.drawable.kri8,
                R.drawable.kri9
    };

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.full_image);

        // get intent data
        Intent i = getIntent();

        // Selected image id
        position = i.getExtras().getInt("id");        
        full = (LinearLayout) findViewById(R.id.full);
        btn = (Button)findViewById(R.id.btn);
        changeBackground();
        btn.setOnClickListener(new Button.OnClickListener(){
            @Override
            public void onClick(View arg0) {
            WallpaperManager myWallpaperManager = WallpaperManager.getInstance(getApplicationContext());
            try {
                myWallpaperManager.setResource(mThumbId[position]);
            } catch (IOException e) {
                e.printStackTrace();
           }
        }});
        ActivitySwipeDetector activitySwipeDetector = new ActivitySwipeDetector(this);
        full.setOnTouchListener(activitySwipeDetector);
    }

    private void changeBackground(){
        full.setBackgroundResource(mThumbId[position]);
   }

    public class ActivitySwipeDetector implements View.OnTouchListener {

        static final String logTag = "ActivitySwipeDetector";
        static final int MIN_DISTANCE = 100;
        private float downX, upX;
        Activity activity;

        public ActivitySwipeDetector(Activity activity){
            this.activity = activity;
        }

        public void onRightToLeftSwipe(){
            Log.i(logTag, "RightToLeftSwipe!");
            if(position < mThumbId.length - 1){
                position++;
                 changeBackground();
            }
    }

        public void onLeftToRightSwipe(){
            Log.i(logTag, "LeftToRightSwipe!");
            if(position > 0){
                position--;
                changeBackground();
           }
        }

        public boolean onTouch(View v, MotionEvent event) {
            switch(event.getAction()){
                case MotionEvent.ACTION_DOWN: {
                    downX = event.getX();
                    return true;
                }
                case MotionEvent.ACTION_UP: {
                    upX = event.getX();

                    float deltaX = downX - upX;

                    // swipe horizontal?
                    if(Math.abs(deltaX) > MIN_DISTANCE){
                        // left or right
                        if(deltaX < 0) { this.onLeftToRightSwipe(); return true; }
                        if(deltaX > 0) { this.onRightToLeftSwipe(); return true; }
                    }
                    else {
                            Log.i(logTag, "Swipe was only " + Math.abs(deltaX) + " long, need at least " + MIN_DISTANCE);
                            return false; // We don't consume the event
                    }


                    return true;
                }
            }
            return false;
        }
    } 

【问题讨论】:

  • 你错了。您需要为墙纸设置图像位图。
  • @PiYusHGuPtA 您可以使用WallpaperManager.setBitmapWallpaperManager.setResourceWallpaperManager.setStream
  • @adneal 我知道我在我的应用程序中使用过那个,但似乎同样没有用,并且在设置为位图后它正在工作。所以我建议他。

标签: android arrays swipe wallpaper


【解决方案1】:

您是否在 AndroidManifest 中声明了设置壁纸权限?

<uses-permission android:name="android.permission.SET_WALLPAPER" />

【讨论】:

  • 它可以工作,但是当我在设备屏幕上设置图像太大时需要你的帮助如何适应这个?
  • 您可以根据资源 ID 的Drawable 创建一个缩放的Bitmap,然后调用WallpaperManager.setBitmap
  • 如果我这样做显示错误并说将数组类型更改为位图。
  • 你能帮我解决更多问题吗?
猜你喜欢
  • 1970-01-01
  • 2018-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多