如何设置图像壁纸,在图像时用户点击? [英] How to set image wallpaper, when user click on Image?

查看:170
本文介绍了如何设置图像壁纸,在图像时用户点击?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是新来的编码,并与它之前从来没有做过!我的壁纸应用程序的工作是我创造的画廊。我成功地做到这一点,但我想修改应用程序,这样,当用户点击特定的图像这让他们设置为墙纸。我需要一些帮助这个! (对不起,我英文不好)

有谁知道我应该怎么做呢?真的感谢帮助

以下是我的code ...

MainActivity的.java

 进口的java.util.ArrayList;
进口的java.util.List;进口android.app.Activity;
进口android.graphics.Bitmap;
进口android.graphics.drawable.BitmapDrawable;
进口android.graphics.drawable.Drawable;
进口android.os.Bundle;
进口android.view.View;
进口android.view.View.OnClickListener;
进口android.widget.AdapterView;
进口android.widget.AdapterView.OnItemSelectedListener;
进口android.widget.Gallery;
进口android.widget.ImageView;
进口android.widget.ImageView.ScaleType;公共类GalleryDemoActivity延伸活动{    私人ImageView的selectedImageView;    私人ImageView的leftArrowImageView;    私人ImageView的rightArrowImageView;    私人画廊的画廊;    私人INT selectedImagePosition = 0;    私人列表<&可绘制GT;可绘制;    私人GalleryImageAdapter galImageAdapter;    @覆盖
    公共无效的onCreate(捆绑savedInstanceState){
        super.onCreate(savedInstanceState);
        的setContentView(R.layout.main);        getDrawablesList();
        setupUI();
    }    私人无效setupUI(){        selectedImageView =(ImageView的)findViewById(R.id.selected_imageview);
        leftArrowImageView =(ImageView的)findViewById(R.id.left_arrow_imageview);
        rightArrowImageView =(ImageView的)findViewById(R.id.right_arrow_imageview);
        画廊=(图库论坛)findViewById(R.id.gallery);        leftArrowImageView.setOnClickListener(新OnClickListener(){            @覆盖
            公共无效的onClick(视图v){                如果(selectedImagePosition大于0){
                    --selectedImagePosition;                }                gallery.setSelection(selectedImagePosition,FALSE);
            }
        });        rightArrowImageView.setOnClickListener(新OnClickListener(){            @覆盖
            公共无效的onClick(视图v){                如果(selectedImagePosition&下; drawables.size() - 1){
                    ++ selectedImagePosition;                }                gallery.setSelection(selectedImagePosition,FALSE);            }
        });        gallery.setOnItemSelectedListener(新OnItemSelectedListener(){            @覆盖
            公共无效onItemSelected(适配器视图<>母公司,观景,INT POS,长I​​D){                selectedImagePosition = POS;                如果(selectedImagePosition大于0&放大器;&放大器; selectedImagePosition&下; drawables.size() - 1){                    leftArrowImageView.setImageDrawable(getResources()getDrawable(R.drawable.arrow_left_enabled));
                    rightArrowImageView.setImageDrawable(getResources()getDrawable(R.drawable.arrow_right_enabled));                }否则如果(selectedImagePosition == 0){                    leftArrowImageView.setImageDrawable(getResources()getDrawable(R.drawable.arrow_left_disabled));                }否则如果(selectedImagePosition == drawables.size() - 1){                    rightArrowImageView.setImageDrawable(getResources()getDrawable(R.drawable.arrow_right_disabled));
                }                changeBorderForSelectedImage(selectedImagePosition);
                setSelectedImage(selectedImagePosition);
            }            @覆盖
            公共无效onNothingSelected(适配器视图<>为arg0){            }        });        galImageAdapter =新GalleryImageAdapter(本,图形);        gallery.setAdapter(galImageAdapter);        如果(drawables.size()大于0){            gallery.setSelection(selectedImagePosition,FALSE);        }        如果(drawables.size()== 1){            rightArrowImageView.setImageDrawable(getResources()getDrawable(R.drawable.arrow_right_disabled));
        }    }    私人无效changeBorderForSelectedImage(INT selectedItemPos){        诠释计数= gallery.getChildCount();        的for(int i = 0; I<计数;我++){            ImageView的ImageView的=(ImageView的)gallery.getChildAt(I)
            imageView.setBackgroundDrawable(getResources()getDrawable(R.drawable.image_border));
            imageView.setPadding(3,3,3,3);        }        ImageView的ImageView的=(ImageView的)gallery.getSelectedView();
        imageView.setBackgroundDrawable(getResources()getDrawable(R.drawable.selected_image_border));
        imageView.setPadding(3,3,3,3);
    }    私人无效getDrawablesList(){        可绘制=新的ArrayList<&可绘制GT;();
        drawables.add(getResources()getDrawable(R.drawable.natureimage1));
        drawables.add(getResources()getDrawable(R.drawable.natureimage2));
        drawables.add(getResources()getDrawable(R.drawable.natureimage3));
        drawables.add(getResources()getDrawable(R.drawable.natureimage4));
        drawables.add(getResources()getDrawable(R.drawable.natureimage5));
        drawables.add(getResources()getDrawable(R.drawable.natureimage6));
        drawables.add(getResources()getDrawable(R.drawable.natureimage7));
        drawables.add(getResources()getDrawable(R.drawable.natureimage8));
        drawables.add(getResources()getDrawable(R.drawable.natureimage9));
        drawables.add(getResources()getDrawable(R.drawable.natureimage10));
        drawables.add(getResources()getDrawable(R.drawable.natureimage11));
        drawables.add(getResources()getDrawable(R.drawable.natureimage12));
        drawables.add(getResources()getDrawable(R.drawable.natureimage13));
        drawables.add(getResources()getDrawable(R.drawable.natureimage14));
        drawables.add(getResources()getDrawable(R.drawable.natureimage15));    }    私人无效setSelectedImage(INT selectedImagePosition){        BitmapDrawable BD =(BitmapDrawable)drawables.get(selectedImagePosition);
        位图B = Bitmap.createScaledBitmap(bd.getBitmap(),(INT)(bd.getIntrinsicHeight()* 0.9),(INT)(bd.getIntrinsicWidth()* 0.7),假);
        selectedImageView.setImageBitmap(二);
        selectedImageView.setScaleType(ScaleType.FIT_XY);    }
}

GalleryAdapter。 java的

 进口的java.util.List;进口android.app.Activity;
进口android.graphics.drawable.Drawable;
进口android.view.View;
进口android.view.ViewGroup;
进口android.widget.BaseAdapter;
进口android.widget.Gallery;
进口android.widget.ImageView;公共类GalleryImageAdapter延伸BaseAdapter {    私人活动范围内;    私有静态ImageView的ImageView的;    私人列表<&可绘制GT; plotsImages;    私有静态ViewHolder持有人;    公共GalleryImageAdapter(Activity上下文,列表<&可绘制GT; plotsImages){        this.context =背景;
        this.plotsImages = plotsImages;    }    @覆盖
    公众诠释的getCount(){
        返回plotsImages.size();
    }    @覆盖
    公共对象的getItem(INT位置){
        返回null;
    }    @覆盖
    众长getItemId(INT位置){
        返回0;
    }    @覆盖
    公共查看getView(INT位置,查看convertView,父母的ViewGroup){        如果(convertView == NULL){            持有人=新ViewHolder();            ImageView的=新ImageView的(this.context);            imageView.setPadding(3,3,3,3);            convertView = ImageView的;            holder.imageView = ImageView的;            convertView.setTag(保持器);        }其他{            支架=(ViewHolder)convertView.getTag();
        }        holder.imageView.setImageDrawable(plotsImages.get(位置));        holder.imageView.setScaleType(ImageView.ScaleType.FIT_XY);
        holder.imageView.setLayoutParams(新Gallery.LayoutParams(150,90));        返回ImageView的;
    }    私有静态类ViewHolder {
        ImageView的ImageView的;
    }}

main.xml中

 <?XML版本=1.0编码=UTF-8&GT?;
<的RelativeLayout的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
    机器人:layout_width =match_parent
    机器人:layout_height =match_parent
    机器人:背景=@机器人:彩色/白
    机器人:方向=垂直>    < ImageView的
        机器人:ID =@ + ID / selected_imageview
        机器人:layout_width =FILL_PARENT
        机器人:layout_height =FILL_PARENT
        机器人:layout_above =@ + ID / gallery_relative_layout
        机器人:layout_marginLeft =30dip
        机器人:layout_marginRight =30dip
        机器人:layout_marginTop =30dip/>    < RelativeLayout的
        机器人:ID =@ + ID / gallery_relative_layout
        机器人:layout_width =FILL_PARENT
        机器人:layout_height =150dip
        机器人:layout_alignParentBottom =真
        机器人:方向=横向>        < ImageView的
            机器人:ID =@ + ID / left_arrow_imageview
            机器人:layout_width =WRAP_CONTENT
            机器人:layout_height =WRAP_CONTENT
            机器人:layout_centerVertical =真
            机器人:layout_marginLeft =15dip
            机器人:SRC =@绘制/ arrow_left_disabled/>        <画廊
            机器人:ID =@ + ID /画廊
            机器人:layout_width =0dip
            机器人:layout_height =150dip
            机器人:layout_marginLeft =20dip
            机器人:layout_marginRight =20dip
            机器人:layout_toLeftOf =@ + ID / right_arrow_imageview
            机器人:layout_toRightOf =@ + ID / left_arrow_imageview
            机器人:间距=20dip/>        < ImageView的
            机器人:ID =@ + ID / right_arrow_imageview
            机器人:layout_width =WRAP_CONTENT
            机器人:layout_height =WRAP_CONTENT
            机器人:layout_alignParentRight =真
            机器人:layout_centerVertical =真
            机器人:layout_marginRight =15dip
            机器人:SRC =@绘制/ arrow_right_enabled/>
    < / RelativeLayout的>< / RelativeLayout的>

的Manifest.xml

 <?XML版本=1.0编码=UTF-8&GT?;
<清单的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
    包=com.gallerydemo
    安卓版code =1
    机器人:=的versionName1.0>    <采用-SDK安卓的minSdkVersion =8/>    <应用
        机器人:图标=@绘制/ ic_launcher
        机器人:标签=@字符串/ APP_NAME>
        <活动
            机器人:名字=。GalleryDemoActivity
            机器人:标签=@字符串/ APP_NAME>
            &所述;意图滤光器>
                <作用机器人:名字=android.intent.action.MAIN/>                <类机器人:名字=android.intent.category.LAUNCHER/>
            &所述; /意图滤光器>
        < /活性GT;
    < /用途>< /清单>


解决方案

图片点击监听器:

  ImageView的IMG =(ImageView的)findViewById(R.id.myImageId);
img.setOnClickListener(新OnClickListener(){
    公共无效的onClick(视图v){
      WallpaperManager myWallpaperManager
     = WallpaperManager.getInstance(getApplicationContext());
    尝试{
     位图的位图=((BitmapDrawable)img.getDrawable())getBitmap();
     如果(位图!= NULL)
     myWallpaperManager.setBitmap(位图);
    }赶上(IOException异常五){
     // TODO自动生成catch块
     e.printStackTrace();
    }
    }
});

我认为像下面将在code工作:

  gallery.setOnItemSelectedListener(新OnItemSelectedListener(){            @覆盖
            公共无效onItemSelected(适配器视图<>母公司,观景,INT POS,长I​​D){                selectedImagePosition = POS;                如果(selectedImagePosition大于0&放大器;&放大器; selectedImagePosition&下; drawables.size() - 1){                    leftArrowImageView.setImageDrawable(getResources()getDrawable(R.drawable.arrow_left_enabled));
                    rightArrowImageView.setImageDrawable(getResources()getDrawable(R.drawable.arrow_right_enabled));                }否则如果(selectedImagePosition == 0){                    leftArrowImageView.setImageDrawable(getResources()getDrawable(R.drawable.arrow_left_disabled));                }否则如果(selectedImagePosition == drawables.size() - 1){                    rightArrowImageView.setImageDrawable(getResources()getDrawable(R.drawable.arrow_right_disabled));
                }                changeBorderForSelectedImage(selectedImagePosition);
                setSelectedImage(selectedImagePosition);selectedImageView .setOnClickListener(新OnClickListener(){
            公共无效的onClick(视图v){
              WallpaperManager myWallpaperManager
             = WallpaperManager.getInstance(getApplicationContext());
            尝试{
             位图的位图=((BitmapDrawable)selectedImageView .getDrawable())getBitmap();
             如果(位图!= NULL)
             myWallpaperManager.setBitmap(位图);
            }赶上(IOException异常五){
             // TODO自动生成catch块
             e.printStackTrace();
            }
            }
        });
            }

或类似的东西如下:

  gallery.setOnItemSelectedListener(新OnItemSelectedListener(){                @覆盖
                公共无效onItemSelected(适配器视图<>母公司,观景,INT POS,长I​​D){                    selectedImagePosition = POS;                    如果(selectedImagePosition大于0&放大器;&放大器; selectedImagePosition&下; drawables.size() - 1){                        leftArrowImageView.setImageDrawable(getResources()getDrawable(R.drawable.arrow_left_enabled));
                        rightArrowImageView.setImageDrawable(getResources()getDrawable(R.drawable.arrow_right_enabled));                    }否则如果(selectedImagePosition == 0){                        leftArrowImageView.setImageDrawable(getResources()getDrawable(R.drawable.arrow_left_disabled));                    }否则如果(selectedImagePosition == drawables.size() - 1){                        rightArrowImageView.setImageDrawable(getResources()getDrawable(R.drawable.arrow_right_disabled));
                    }                    changeBorderForSelectedImage(selectedImagePosition);
                    setSelectedImage(selectedImagePosition);ImageView的ImageView的=(ImageView的)gallery.getSelectedView();    imageView.setOnClickListener(新OnClickListener(){
                公共无效的onClick(视图v){
                  WallpaperManager myWallpaperManager
                 = WallpaperManager.getInstance(getApplicationContext());
                尝试{
                 位图的位图=((BitmapDrawable)imageView.getDrawable())getBitmap();
                 如果(位图!= NULL)
                 myWallpaperManager.setBitmap(位图);
                }赶上(IOException异常五){
                 // TODO自动生成catch块
                 e.printStackTrace();
                }
                }
            });
         }

请确保您有下面的权限在AndroidManifest.xml中,只是把它下面和上面:

 <使用许可权的android:NAME =android.permission.SET_WALLPAPER/>

有关对话框出现,等待3秒来打开它:

  gallery.setOnItemSelectedListener(新OnItemSelectedListener(){                    @覆盖
                    公共无效onItemSelected(适配器视图<>母公司,观景,INT POS,长I​​D){                        selectedImagePosition = POS;                        如果(selectedImagePosition大于0&放大器;&放大器; selectedImagePosition&下; drawables.size() - 1){                            leftArrowImageView.setImageDrawable(getResources()getDrawable(R.drawable.arrow_left_enabled));
                            rightArrowImageView.setImageDrawable(getResources()getDrawable(R.drawable.arrow_right_enabled));                        }否则如果(selectedImagePosition == 0){                            leftArrowImageView.setImageDrawable(getResources()getDrawable(R.drawable.arrow_left_disabled));                        }否则如果(selectedImagePosition == drawables.size() - 1){                            rightArrowImageView.setImageDrawable(getResources()getDrawable(R.drawable.arrow_right_disabled));
                        }                        changeBorderForSelectedImage(selectedImagePosition);
                        setSelectedImage(selectedImagePosition);    ImageView的ImageView的=(ImageView的)gallery.getSelectedView();        imageView.setOnClickListener(新OnClickListener(){
                    公共无效的onClick(视图v){
                     处理程序处理程序=新的处理程序();
                 handler.postDelayed(新的Runnable(){                    @覆盖
                    公共无效的run(){                        AlertDialog.Builder myAlertDialog =新AlertDialog.Builder(GalleryDemoActivity.this);
                         myAlertDialog.setTitle(墙纸);
                         myAlertDialog.setMessage(要设置为墙纸?);
                         myAlertDialog.setPositiveButton(OK,新DialogInterface.OnClickListener(){                          公共无效的onClick(DialogInterface对话框,INT ARG1){
                              WallpaperManager myWallpaperManager
                                 = WallpaperManager.getInstance(getApplicationContext());
                                尝试{
                                 位图的位图=((BitmapDrawable)imageView.getDrawable())getBitmap();
                                 如果(位图!= NULL)
                                 myWallpaperManager.setBitmap(位图);
                                }赶上(IOException异常五){
                                 // TODO自动生成catch块
                                 e.printStackTrace();
                                }
                          }});
                         myAlertDialog.setNegativeButton(取消,新DialogInterface.OnClickListener(){                          公共无效的onClick(DialogInterface对话框,INT ARG1){
                         dialog.dismiss();
                          }});
                         。myAlertDialog.create()显示();
                    }                 },3000);
                    }
                });
             }

I am new to coding and never worked with it before! I am working on wallpaper application were I created the gallery . I managed to do this , but I want to modify the app so that when user click on specific image It allow them to set as wallpaper. I need some help with this! (Sorry for bad English)

Does anyone know how I should do this? Really thankful for help

Following are my code...

MainActivity .java

import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.Gallery;
import android.widget.ImageView;
import android.widget.ImageView.ScaleType;

public class GalleryDemoActivity extends Activity {

    private ImageView selectedImageView;

    private ImageView leftArrowImageView;

    private ImageView rightArrowImageView;

    private Gallery gallery;

    private int selectedImagePosition = 0;

    private List<Drawable> drawables;

    private GalleryImageAdapter galImageAdapter;

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

        getDrawablesList();
        setupUI();
    }

    private void setupUI() {

        selectedImageView = (ImageView) findViewById(R.id.selected_imageview);
        leftArrowImageView = (ImageView) findViewById(R.id.left_arrow_imageview);
        rightArrowImageView = (ImageView) findViewById(R.id.right_arrow_imageview);
        gallery = (Gallery) findViewById(R.id.gallery);

        leftArrowImageView.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {

                if (selectedImagePosition > 0) {
                    --selectedImagePosition;

                }

                gallery.setSelection(selectedImagePosition, false);
            }
        });

        rightArrowImageView.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {

                if (selectedImagePosition < drawables.size() - 1) {
                    ++selectedImagePosition;

                }

                gallery.setSelection(selectedImagePosition, false);

            }
        });

        gallery.setOnItemSelectedListener(new OnItemSelectedListener() {

            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {

                selectedImagePosition = pos;

                if (selectedImagePosition > 0 && selectedImagePosition < drawables.size() - 1) {

                    leftArrowImageView.setImageDrawable(getResources().getDrawable(R.drawable.arrow_left_enabled));
                    rightArrowImageView.setImageDrawable(getResources().getDrawable(R.drawable.arrow_right_enabled));

                } else if (selectedImagePosition == 0) {

                    leftArrowImageView.setImageDrawable(getResources().getDrawable(R.drawable.arrow_left_disabled));

                } else if (selectedImagePosition == drawables.size() - 1) {

                    rightArrowImageView.setImageDrawable(getResources().getDrawable(R.drawable.arrow_right_disabled));
                }

                changeBorderForSelectedImage(selectedImagePosition);
                setSelectedImage(selectedImagePosition);
            }

            @Override
            public void onNothingSelected(AdapterView<?> arg0) {

            }

        });

        galImageAdapter = new GalleryImageAdapter(this, drawables);

        gallery.setAdapter(galImageAdapter);

        if (drawables.size() > 0) {

            gallery.setSelection(selectedImagePosition, false);

        }

        if (drawables.size() == 1) {

            rightArrowImageView.setImageDrawable(getResources().getDrawable(R.drawable.arrow_right_disabled));
        }

    }

    private void changeBorderForSelectedImage(int selectedItemPos) {

        int count = gallery.getChildCount();

        for (int i = 0; i < count; i++) {

            ImageView imageView = (ImageView) gallery.getChildAt(i);
            imageView.setBackgroundDrawable(getResources().getDrawable(R.drawable.image_border));
            imageView.setPadding(3, 3, 3, 3);

        }

        ImageView imageView = (ImageView) gallery.getSelectedView();
        imageView.setBackgroundDrawable(getResources().getDrawable(R.drawable.selected_image_border));
        imageView.setPadding(3, 3, 3, 3);
    }

    private void getDrawablesList() {

        drawables = new ArrayList<Drawable>();
        drawables.add(getResources().getDrawable(R.drawable.natureimage1));
        drawables.add(getResources().getDrawable(R.drawable.natureimage2));
        drawables.add(getResources().getDrawable(R.drawable.natureimage3));
        drawables.add(getResources().getDrawable(R.drawable.natureimage4));
        drawables.add(getResources().getDrawable(R.drawable.natureimage5));
        drawables.add(getResources().getDrawable(R.drawable.natureimage6));
        drawables.add(getResources().getDrawable(R.drawable.natureimage7));
        drawables.add(getResources().getDrawable(R.drawable.natureimage8));
        drawables.add(getResources().getDrawable(R.drawable.natureimage9));
        drawables.add(getResources().getDrawable(R.drawable.natureimage10));
        drawables.add(getResources().getDrawable(R.drawable.natureimage11));
        drawables.add(getResources().getDrawable(R.drawable.natureimage12));
        drawables.add(getResources().getDrawable(R.drawable.natureimage13));
        drawables.add(getResources().getDrawable(R.drawable.natureimage14));
        drawables.add(getResources().getDrawable(R.drawable.natureimage15));

    }

    private void setSelectedImage(int selectedImagePosition) {

        BitmapDrawable bd = (BitmapDrawable) drawables.get(selectedImagePosition);
        Bitmap b = Bitmap.createScaledBitmap(bd.getBitmap(), (int) (bd.getIntrinsicHeight() * 0.9), (int) (bd.getIntrinsicWidth() * 0.7), false);
        selectedImageView.setImageBitmap(b);
        selectedImageView.setScaleType(ScaleType.FIT_XY);

    }
}

GalleryAdapter. java

import java.util.List;

import android.app.Activity;
import android.graphics.drawable.Drawable;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.ImageView;

public class GalleryImageAdapter extends BaseAdapter {

    private Activity context;

    private static ImageView imageView;

    private List<Drawable> plotsImages;

    private static ViewHolder holder;

    public GalleryImageAdapter(Activity context, List<Drawable> plotsImages) {

        this.context = context;
        this.plotsImages = plotsImages;

    }

    @Override
    public int getCount() {
        return plotsImages.size();
    }

    @Override
    public Object getItem(int position) {
        return null;
    }

    @Override
    public long getItemId(int position) {
        return 0;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        if (convertView == null) {

            holder = new ViewHolder();

            imageView = new ImageView(this.context);

            imageView.setPadding(3, 3, 3, 3);

            convertView = imageView;

            holder.imageView = imageView;

            convertView.setTag(holder);

        } else {

            holder = (ViewHolder) convertView.getTag();
        }

        holder.imageView.setImageDrawable(plotsImages.get(position));

        holder.imageView.setScaleType(ImageView.ScaleType.FIT_XY);
        holder.imageView.setLayoutParams(new Gallery.LayoutParams(150, 90));

        return imageView;
    }

    private static class ViewHolder {
        ImageView imageView;
    }

}

Main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/white"
    android:orientation="vertical" >

    <ImageView
        android:id="@+id/selected_imageview"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_above="@+id/gallery_relative_layout"
        android:layout_marginLeft="30dip"
        android:layout_marginRight="30dip"
        android:layout_marginTop="30dip" />

    <RelativeLayout
        android:id="@+id/gallery_relative_layout"
        android:layout_width="fill_parent"
        android:layout_height="150dip"
        android:layout_alignParentBottom="true"
        android:orientation="horizontal" >

        <ImageView
            android:id="@+id/left_arrow_imageview"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:layout_marginLeft="15dip"
            android:src="@drawable/arrow_left_disabled" />

        <Gallery
            android:id="@+id/gallery"
            android:layout_width="0dip"
            android:layout_height="150dip"
            android:layout_marginLeft="20dip"
            android:layout_marginRight="20dip"
            android:layout_toLeftOf="@+id/right_arrow_imageview"
            android:layout_toRightOf="@+id/left_arrow_imageview"
            android:spacing="20dip" />

        <ImageView
            android:id="@+id/right_arrow_imageview"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true"
            android:layout_marginRight="15dip"
            android:src="@drawable/arrow_right_enabled" />
    </RelativeLayout>

</RelativeLayout>

Manifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.gallerydemo"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="8" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:name=".GalleryDemoActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

解决方案

Yes.

Image click listener:

ImageView img = (ImageView) findViewById(R.id.myImageId);
img.setOnClickListener(new OnClickListener() {
    public void onClick(View v) {
      WallpaperManager myWallpaperManager
     = WallpaperManager.getInstance(getApplicationContext());
    try {
     Bitmap bitmap=((BitmapDrawable)img.getDrawable()).getBitmap();
     if(bitmap!=null)
     myWallpaperManager.setBitmap(bitmap);
    } catch (IOException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }
    }
});

I think something like below would work in your code:

    gallery.setOnItemSelectedListener(new OnItemSelectedListener() {

            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {

                selectedImagePosition = pos;

                if (selectedImagePosition > 0 && selectedImagePosition < drawables.size() - 1) {

                    leftArrowImageView.setImageDrawable(getResources().getDrawable(R.drawable.arrow_left_enabled));
                    rightArrowImageView.setImageDrawable(getResources().getDrawable(R.drawable.arrow_right_enabled));

                } else if (selectedImagePosition == 0) {

                    leftArrowImageView.setImageDrawable(getResources().getDrawable(R.drawable.arrow_left_disabled));

                } else if (selectedImagePosition == drawables.size() - 1) {

                    rightArrowImageView.setImageDrawable(getResources().getDrawable(R.drawable.arrow_right_disabled));
                }

                changeBorderForSelectedImage(selectedImagePosition);
                setSelectedImage(selectedImagePosition);

selectedImageView .setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
              WallpaperManager myWallpaperManager
             = WallpaperManager.getInstance(getApplicationContext());
            try {
             Bitmap bitmap=((BitmapDrawable)selectedImageView .getDrawable()).getBitmap();
             if(bitmap!=null)
             myWallpaperManager.setBitmap(bitmap);
            } catch (IOException e) {
             // TODO Auto-generated catch block
             e.printStackTrace();
            }
            }
        });
            }

or something like below :

gallery.setOnItemSelectedListener(new OnItemSelectedListener() {

                @Override
                public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {

                    selectedImagePosition = pos;

                    if (selectedImagePosition > 0 && selectedImagePosition < drawables.size() - 1) {

                        leftArrowImageView.setImageDrawable(getResources().getDrawable(R.drawable.arrow_left_enabled));
                        rightArrowImageView.setImageDrawable(getResources().getDrawable(R.drawable.arrow_right_enabled));

                    } else if (selectedImagePosition == 0) {

                        leftArrowImageView.setImageDrawable(getResources().getDrawable(R.drawable.arrow_left_disabled));

                    } else if (selectedImagePosition == drawables.size() - 1) {

                        rightArrowImageView.setImageDrawable(getResources().getDrawable(R.drawable.arrow_right_disabled));
                    }

                    changeBorderForSelectedImage(selectedImagePosition);
                    setSelectedImage(selectedImagePosition);

ImageView imageView = (ImageView) gallery.getSelectedView();

    imageView.setOnClickListener(new OnClickListener() {
                public void onClick(View v) {
                  WallpaperManager myWallpaperManager
                 = WallpaperManager.getInstance(getApplicationContext());
                try {
                 Bitmap bitmap=((BitmapDrawable)imageView.getDrawable()).getBitmap();
                 if(bitmap!=null)
                 myWallpaperManager.setBitmap(bitmap);
                } catch (IOException e) {
                 // TODO Auto-generated catch block
                 e.printStackTrace();
                }
                }
            });


         }

Make sure you have the below permission in your androidManifest.xml, just put it below and above :

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

For dialog to appear and wait for 3 sec to open it:

gallery.setOnItemSelectedListener(new OnItemSelectedListener() {

                    @Override
                    public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {

                        selectedImagePosition = pos;

                        if (selectedImagePosition > 0 && selectedImagePosition < drawables.size() - 1) {

                            leftArrowImageView.setImageDrawable(getResources().getDrawable(R.drawable.arrow_left_enabled));
                            rightArrowImageView.setImageDrawable(getResources().getDrawable(R.drawable.arrow_right_enabled));

                        } else if (selectedImagePosition == 0) {

                            leftArrowImageView.setImageDrawable(getResources().getDrawable(R.drawable.arrow_left_disabled));

                        } else if (selectedImagePosition == drawables.size() - 1) {

                            rightArrowImageView.setImageDrawable(getResources().getDrawable(R.drawable.arrow_right_disabled));
                        }

                        changeBorderForSelectedImage(selectedImagePosition);
                        setSelectedImage(selectedImagePosition);

    ImageView imageView = (ImageView) gallery.getSelectedView();

        imageView.setOnClickListener(new OnClickListener() {
                    public void onClick(View v) {
                     Handler handler = new Handler();
                 handler.postDelayed(new Runnable(){

                    @Override
                    public void run() {

                        AlertDialog.Builder myAlertDialog = new AlertDialog.Builder(GalleryDemoActivity.this);
                         myAlertDialog.setTitle("Wallpaper");
                         myAlertDialog.setMessage("Want to set as Wallpaper?");
                         myAlertDialog.setPositiveButton("OK", new DialogInterface.OnClickListener() {

                          public void onClick(DialogInterface dialog, int arg1) {
                              WallpaperManager myWallpaperManager
                                 = WallpaperManager.getInstance(getApplicationContext());
                                try {
                                 Bitmap bitmap=((BitmapDrawable)imageView.getDrawable()).getBitmap();
                                 if(bitmap!=null)
                                 myWallpaperManager.setBitmap(bitmap);
                                } catch (IOException e) {
                                 // TODO Auto-generated catch block
                                 e.printStackTrace();
                                }
                          }});
                         myAlertDialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {

                          public void onClick(DialogInterface dialog, int arg1) {
                         dialog.dismiss();
                          }});
                         myAlertDialog.create().show(); 
                    }

                 }, 3000);
                    }
                });


             }

这篇关于如何设置图像壁纸,在图像时用户点击?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆