Android之手机壁纸的改变
16lz
2021-01-23
main.xml布局文件
<? xml version = " 1.0 " encoding = " utf-8 " ?>
< LinearLayout xmlns:android = " http://schemas.android.com/apk/res/android "
android:orientation = " vertical " android:layout_width = " fill_parent "
android:layout_height = " fill_parent " >
< Button android:id = " @+id/clearWall "
android:layout_width = " fill_parent "
android:layout_height = " wrap_content "
android:text = " 恢复默认墙纸 " />
< ImageView android:id = " @+id/currWall "
android:layout_width = " 100px "
android:layout_height = " 150px "
android:layout_gravity = " center_horizontal " />
< Button android:id = " @+id/getWall "
android:layout_width = " fill_parent "
android:layout_height = " wrap_content "
android:text = " 获取当前墙纸 " />
< Gallery android:id = " @+id/gallery "
android:layout_width = " fill_parent "
android:layout_height = " wrap_content " />
< Button android:id = " @+id/setWall "
android:layout_width = " fill_parent "
android:layout_height = " wrap_content "
android:text = " 设置为当前墙纸 " />
</ LinearLayout >
清单文件
<? xml version = " 1.0 " encoding = " utf-8 " ?>
< manifest xmlns:android = " http://schemas.android.com/apk/res/android "
package = " com.ljq.activity "
android:versionCode = " 1 "
android:versionName = " 1.0 " >
< application android:icon = " @drawable/icon " android:label = " @string/app_name " >
< activity android:name = " .WallActivity "
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 >
< uses - sdk android:minSdkVersion = " 7 " />
<!-- 设置手机墙纸权限 -->
< uses - permission android:name = " android.permission.SET_WALLPAPER " />
</ manifest >
WallAdapter自定义适配器
package com.ljq.activity;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.ImageView;
public class WallAdapter extends BaseAdapter {
private int [] imgIds = null ;
private Context context = null ;
public WallAdapter( int [] imgIds, Context context) {
super ();
this .imgIds = imgIds;
this .context = context;
}
public int getCount() {
return imgIds.length;
}
public Object getItem( int position) {
// return imgIds[position];
return imgIds[position % imgIds.length]; // 可循环
}
public long getItemId( int position) {
return position;
}
public View getView( int position, View convertView, ViewGroup parent) {
ImageView imageView = new ImageView(context);
imageView.setBackgroundResource(imgIds[position]); // 设置ImageView的背景图片
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setLayoutParams( new Gallery.LayoutParams( 120 , 120 ));
return imageView;
}
}
WallActivity类
package com.ljq.activity;
import java.io.IOException;
import java.io.InputStream;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.Gallery;
import android.widget.ImageView;
import android.widget.AdapterView.OnItemSelectedListener;
public class WallActivity extends Activity {
private int [] imgIds = {R.drawable.w1, R.drawable.w2, R.drawable.w3, R.drawable.w4};
private int selectIndex =- 1 ; // 被选中的图片在id数组中的索引
private ImageView currWall = null ;
private Gallery gallery = null ;
private Button clearWall = null ;
private Button getWall = null ;
private Button setWall = null ;
@Override
public void onCreate(Bundle savedInstanceState) {
super .onCreate(savedInstanceState);
setContentView(R.layout.main);
gallery = (Gallery)findViewById(R.id.gallery);
gallery.setAdapter( new WallAdapter(imgIds, WallActivity. this ));
gallery.setSpacing( 5 );
gallery.setOnItemSelectedListener( new OnItemSelectedListener(){
public void onItemSelected(AdapterView <?> parent, View view,
int position, long id) {
selectIndex = position; // 记录被选中的图片索引
}
public void onNothingSelected(AdapterView <?> parent) {
}
});
currWall = (ImageView)findViewById(R.id.currWall);
clearWall = (Button)findViewById(R.id.clearWall);
getWall = (Button)findViewById(R.id.getWall);
setWall = (Button)findViewById(R.id.setWall);
clearWall.setOnClickListener(listener);
getWall.setOnClickListener(listener);
setWall.setOnClickListener(listener);
}
View.OnClickListener listener = new View.OnClickListener(){
public void onClick(View v) {
Button btn = (Button)v;
switch (btn.getId()) {
case R.id.clearWall: // 还原手机壁纸
try {
WallActivity. this .clearWallpaper();
} catch (IOException e) {
e.printStackTrace();
}
break ;
case R.id.getWall: // 设置ImageView显示的内容为当前墙纸
currWall.setBackgroundDrawable(getWallpaper());
break ;
case R.id.setWall: // 设置墙纸
InputStream in = WallActivity. this .getResources().openRawResource(imgIds[selectIndex]);
try {
setWallpaper(in);
} catch (IOException e) {
e.printStackTrace();
}
break ;
}
}
};
}
运行结果
更多相关文章
- Android Studio 3.0以后打包修改文件名方法
- Android 下载文件至SD卡,并用progressBar显示下载进度
- Android 文件IO总结
- Android--取出SDcard卡上指定后缀名的文件
- AndroidManifest.xml文件详解(service)
- Android 实现 选择文件对话框
- Android 收集索引贴
- Android attrs文件(自定义)属性详解