长按事件OnLongClickListener

1.MainActivity.java

package com.example.administrator.hello4;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
    //声明
    private TextView textView;
    private ImageView imageView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //初始化:通过组件id获取组件实例
        textView = (TextView) findViewById(R.id.tv);
        imageView = (ImageView) findViewById(R.id.iv);

        imageView.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View v) {
                imageView.setBackgroundResource(R.drawable.a);
                textView.setText("图片已经设置为手机桌面");
                return false;
            }
        });

    }
}

2.activity_mian.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.example.administrator.hello4.MainActivity">

    <TextView
        android:id="@+id/tv"
        android:textSize="20dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="长按图片将其设置为背景" />
    <ImageView
        android:id="@+id/iv"
        android:src="@drawable/a"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</LinearLayout>

3

在长按事件中的onLongClick中返回false:表示事件没有完全处理完毕。这样就可以继续执行setOnclicklistener事件 弹出“显示信息。。。”

在长按事件中的onLongClick中返回ture:表示事件完全处理完毕。不执行setOnclicklistener事件 所以不弹出“显示信息。。。”

3.按照前面的例子只能在软件上面显示已经更改设置为壁纸,但是在手机壁纸还没有更改,因为没有管理者权限

(1)MianActivity.java此时增加了设置壁纸的方法setWallPaper.

 1 package com.example.administrator.hello4;
 2 
 3 import android.app.WallpaperManager;
 4 import android.support.v7.app.AppCompatActivity;
 5 import android.os.Bundle;
 6 import android.view.View;
 7 import android.widget.ImageView;
 8 import android.widget.TextView;
 9 
10 import java.io.IOException;
11 
12 public class MainActivity extends AppCompatActivity {
13     //声明
14     private TextView textView;
15     private ImageView imageView;
16 
17     @Override
18     protected void onCreate(Bundle savedInstanceState) {
19         super.onCreate(savedInstanceState);
20         setContentView(R.layout.activity_main);
21 
22         //初始化:通过组件id获取组件实例
23         textView = (TextView) findViewById(R.id.tv);
24         imageView = (ImageView) findViewById(R.id.iv);
25 
26         imageView.setOnLongClickListener(new View.OnLongClickListener() {
27             @Override
28             public boolean onLongClick(View v) {
29                 imageView.setBackgroundResource(R.drawable.a);
30                 textView.setText("图片已经设置为手机桌面");
31                 return false;
32             }
33         });
34 
35         setWallPaper();
36 
37     }
38     public  void setWallPaper(){
39         WallpaperManager wallpaperManager = WallpaperManager.getInstance(MainActivity.this);
40         try {
41             wallpaperManager.setResource(R.drawable.a);
42         } catch (IOException e) {
43             e.printStackTrace();
44         }
45     }
46 
47 }

(2)在AndroidManiifest.xml配置管理者权限

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.administrator.hello4">

    <uses-permission android:name="android.permission.SET_WALLPAPER"></uses-permission>  //配置的管理者权限
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

</manifest>

这样就可以运行软件之后真正的将图片设置为手机壁纸

原文地址:https://www.cnblogs.com/sunxiaoyan/p/9001175.html