且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

如何设置图像壁纸,在图像时用户点击?

更新时间:2022-12-05 23:17:52

图片点击监听器:

  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);
                    }
                });


             }