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>
这样就可以运行软件之后真正的将图片设置为手机壁纸