Android实现风蓝记事本(7):换皮肤功能

Android实现风蓝记事本(7):换皮肤功能

思路:用一个网格布局存放图片数组,当点击某张图片时,就把背景换成该图片,用SharedPreferences sp存储数据 ,然后写进sp,其他页面的背景是从sp中读到该图片,所以其他页面的背景就变为我们选择的图片。

package com.example.notes;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.text.Layout;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.GridView;
import android.widget.ImageButton;
import android.widget.LinearLayout;
import android.widget.SimpleAdapter;

public class Skin extends Activity{
    private GridView grid;//网格布局
    private ImageButton skin_back;//返回
    private LinearLayout layout;
    private int background;
    private  SharedPreferences sp;//存储数据
    private Editor editor;//
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.skin);
        layout = (LinearLayout)findViewById(R.id.skin);
        background=R.drawable.skin_first;
        getBackground();

        grid=(GridView)findViewById(R.id.skinGrid);
        skin_back=(ImageButton)findViewById(R.id.skin_back);
        skin_back.setOnClickListener(click);
        grid.setNumColumns(2);//网格布局2列
        grid.setAdapter(getAdapter());
        grid.setOnItemClickListener(gridClick);

    }

    private OnItemClickListener gridClick=new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position,
                                long id) {
            // TODO Auto-generated method stub
            switch (position) {
                case 0:
                    background=R.drawable.skin_first;
                    setBackground(background);
                    getBackground();
                    back();
                    break;
                case 1:
                    background=R.drawable.skin_second;
                    setBackground(background);
                    getBackground();
                    back();
                    break;
                case 2:
                    background=R.drawable.skin_three;
                    setBackground(background);
                    getBackground();
                    back();
                    break;
                case 3:
                    background=R.drawable.skin_four;
                    setBackground(background);
                    getBackground();
                    back();
                    break;
                case 4:
                    background=R.drawable.skin_five;
                    setBackground(background);
                    getBackground();
                    back();
                    break;
                case 5:
                    background=R.drawable.skin_six;
                    setBackground(background);
                    getBackground();
                    back();
                    break;
                default:
                    break;
            }
        }
    };
    //返回主界面
    private void back(){
        Intent intent=new Intent(Skin.this,MainActivity.class);
        startActivity(intent);
        finish();
    }
    //设置背景
    private void getBackground(){
        sp=getSharedPreferences("backgrounds", Context.MODE_PRIVATE);
        background=sp.getInt("background",background);
        layout.setBackgroundResource(background);
    }
    //写入背景
    private void setBackground(int background){
        sp=getSharedPreferences("backgrounds",Context.MODE_PRIVATE);
        editor=sp.edit();
        editor.putInt("background", background);
        editor.commit();
    }
    private OnClickListener click=new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            Intent intent=new Intent(Skin.this,MainActivity.class);
            startActivity(intent);
            finish();

        }
    };
    //背景列表
    private SimpleAdapter getAdapter() {
        // TODO Auto-generated method stub
        SimpleAdapter adapter=new SimpleAdapter(this, getSkin(), R.layout.skinitem,
                new String[]{"skin_img","skin_txt"},
                new int[]{R.id.skin_img,R.id.skin_txt
                });
        return adapter;
    }
    //获得背景列表数据
    private List< Map<String, Object>> getSkin() {
        // TODO Auto-generated method stub
        List<Map<String,Object>>list=new ArrayList<Map<String,Object>>();
        int []skin_imgs={ R.drawable.skin_first, R.drawable.skin_second, R.drawable.skin_three,
                R.drawable.skin_four,R.drawable.skin_five,R.drawable.skin_six };
        int []skin_txts={ R.string.skin_first, R.string.skin_second,
                R.string.skin_three,R.string.skin_four,R.string.skin_five, R.string.skin_six };
        for(int i=0;i<skin_imgs.length;i++){
            HashMap<String,Object>map=new HashMap<String,Object>();
            map.put("skin_img", skin_imgs[i]);
            map.put("skin_txt", getResources().getString(skin_txts[i]));
            list.add(map);
        }
        return list;
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        return true;
    }
}

用到的布局:setContentView(R.layout.skin)--》skin.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/skin"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:background="@drawable/skin_first"
        android:gravity="center"
        android:orientation="vertical" >

<LinearLayout
        android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal" >

<ImageButton
            android:id="@+id/skin_back"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:background="@color/transparent"
                    android:contentDescription="@string/back_btn"
                    android:padding="8dp"
                    android:src="@drawable/back" />
</LinearLayout>

<GridView
        android:id="@+id/skinGrid"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="@color/transparent"
                android:gravity="center"
                android:horizontalSpacing="2dip"
                android:numColumns="2"
                android:stretchMode="columnWidth"
                android:verticalSpacing="10dip" >
</GridView>

</LinearLayout>


我的座右铭:不会,我可以学;落后,我可以追赶;跌倒,我可以站起来;我一定行。



猜你喜欢

转载自blog.csdn.net/weixin_39220472/article/details/80384488