Android之手机壁纸的改变详解编程语言

本文章主要介绍了Android之手机壁纸的改变,具有不错的的参考价值,希望对您有所帮助,如解说有误或未考虑完全的地方,请您留言指出,谢谢!

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之手机壁纸的改变详解编程语言

原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/228168.html

(0)
上一篇 2022年1月11日
下一篇 2022年1月11日

相关推荐

发表回复

登录后才能评论