Android中实现动态切换组件背景的操作

 这个也是昨天学习用到的,总结下思路吧,因为这个知识点以后绝对会再次用到。

目的:我要在软件中动态的选择组件背景,系统皮肤,自定义吐司背景等。

实现思路:要用到安卓中的SharedPrefence的功能,在设置里面写一个控件,设置一个点击监听器,点击的时候显示一个Alert选择弹窗,让你进行选择,对这个弹窗再设置一个点击监听器(onItemListener),点击到具体某个的时候,把对应的点击id保存到sahredprefence里面去,这样,其他地方就可以从这里取得设置里选择的值,进行动态个性化处理。

 

具体代码:

设置选择的操作:

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

scv_setAddressBg.setOnClickListener(new OnClickListener() {
             
            @Override
            public void onClick(View v) {
                int which = sp.getInt("which", 0);
                final String[] items = {"半透明","活力橙","卫士蓝","金属灰","苹果绿"};
                AlertDialog.Builder builder = new Builder(SettingActivity.this);
                builder.setTitle("设置归属地显示背景");
                builder.setSingleChoiceItems(items, which, new DialogInterface.OnClickListener() {
                     
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Editor edit = sp.edit();
                        edit.putInt("which", which);
                        edit.commit();
                        scv_setAddressBg.setDesc(items[which]);
                        dialog.dismiss();
                    }
                });
                builder.setNegativeButton("取消", null);
                builder.show();
            }
        });

 

 

显示自定义吐司的操作:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

public void showMyToast(String address) {
        <span style="color:#ff6600;">int[] ids = {R.drawable.call_locate_white,R.drawable.call_locate_orange,R.drawable.call_locate_blue
                ,R.drawable.call_locate_gray,R.drawable.call_locate_green};</span>
        <span style="color:#ff6600;">SharedPreferences sp = getSharedPreferences("config", MODE_PRIVATE);
        int which = sp.getInt("which", 1);</span>
        view = View.inflate(this, R.layout.address_show, null);
        TextView textView = (TextView) view.findViewById(R.id.tv_address);
        textView.setText(address);
        <span style="color:#ff6600;">view.setBackgroundResource(ids[which]);</span>
         
        WindowManager.LayoutParams params = new WindowManager.LayoutParams();
        params.height = WindowManager.LayoutParams.WRAP_CONTENT;
        params.width = WindowManager.LayoutParams.WRAP_CONTENT;
        params.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
                  | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE
                  | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON;
        params.format = PixelFormat.TRANSLUCENT;
        params.type = WindowManager.LayoutParams.TYPE_TOAST;
 
        wm.addView(view, params);
    }

总结:

1.要注意数组的应用,ids[ value]这种使用方式要能想到用,将图片资源文件写在一个ids数组里是个很好的方式和想法。

2.细心,获得sp的时候名字写错了,config写成了congig。

3.理解调试技巧是靠经验和逻辑推理的,都很重要。

时间: 2024-09-11 15:53:59

Android中实现动态切换组件背景的操作的相关文章

Android实现动态切换组件背景的方法_Android

本文所述的程序实现的功能为在软件中动态的选择组件背景,系统皮肤,自定义吐司背景等. 为实现这一要求,就需要用到安卓中的SharedPrefence的功能,首先在设置里面写一个控件,设置一个点击监听器,点击的时候显示一个Alert选择弹窗,让你进行选择,对这个弹窗再设置一个点击监听器(onItemListener),点击到具体某个的时候,把对应的点击id保存到sahredprefence里面去,这样,其他地方就可以从这里取得设置里选择的值,进行动态个性化处理. 具体代码如下: 1.设置选择的操作:

Android实现动态切换组件背景的方法

本文所述的程序实现的功能为在软件中动态的选择组件背景,系统皮肤,自定义吐司背景等. 为实现这一要求,就需要用到安卓中的SharedPrefence的功能,首先在设置里面写一个控件,设置一个点击监听器,点击的时候显示一个Alert选择弹窗,让你进行选择,对这个弹窗再设置一个点击监听器(onItemListener),点击到具体某个的时候,把对应的点击id保存到sahredprefence里面去,这样,其他地方就可以从这里取得设置里选择的值,进行动态个性化处理. 具体代码如下: 1.设置选择的操作:

android 通过代码动态切换输入法

问题描述 android 通过代码动态切换输入法 比如 当我点击一个EditText时 弹出的不是当前系统默认的输入法 而是其它的 或者 直接更改系统默认输入法也可以 解决方案 你要先修改输入法,然后才可以,跟搜狗的流程一样,先修改为用户想要的输入法,然后在返回你的APP窗口,http://www.cnblogs.com/weixing/p/3300908.html 如果你要动态切换,那么你要先知道你要切换到的输入法是哪个. 解决方案二: Android 切换输入法Android 切换输入法An

Android使用addView动态添加组件的方法_Android

在项目开发中,我们经常需要进行动态添加组件,其中可添加的部分有两项:布局和组件  其中,添加的布局主要有RelativeLayout型(相对布局)的和LinearLayout(线性布局) 添加的组件主要有文本显示框,编辑框,按钮等组件.  下面,就让我们来进行实现: 首先我们创建一个新的项目,删除MainActivity.class中没有的代码,仅留下protected void onCreate(Bundle savedInstanceState)函数往布局文件中添加一个新的组件: 1. ad

Android中利用动态加载实现手机淘宝的节日特效_Android

相信去年圣诞节打开过手机淘宝的童鞋都会对当时的特效记忆犹新吧:全屏飘雪,旁边还有个小雪人来控制八音盒背景音乐的播放,让人有种身临其境的感觉,甚至忍不住想狠狠购物了呢(误),大概就是下面这个样子滴: 嗯,确实很炫,那么我们一步步去分析是如何实现的: 一.实现下雪的 View 首先,最上面一层的全屏雪花极有可能是一个顶层的View,而这个View是通过动态加载去控制显示的(不更新淘宝也能看到这个效果).那么我们先得实现雪花效果的 View,人生苦短,拿来就用.打开 gank.io,搜索"雪花&quo

Android中利用动态加载实现手机淘宝的节日特效

相信去年圣诞节打开过手机淘宝的童鞋都会对当时的特效记忆犹新吧:全屏飘雪,旁边还有个小雪人来控制八音盒背景音乐的播放,让人有种身临其境的感觉,甚至忍不住想狠狠购物了呢(误),大概就是下面这个样子滴: 嗯,确实很炫,那么我们一步步去分析是如何实现的: 一.实现下雪的 View 首先,最上面一层的全屏雪花极有可能是一个顶层的View,而这个View是通过动态加载去控制显示的(不更新淘宝也能看到这个效果).那么我们先得实现雪花效果的 View,人生苦短,拿来就用.打开 gank.io,搜索"雪花&quo

Android使用addView动态添加组件的方法

在项目开发中,我们经常需要进行动态添加组件,其中可添加的部分有两项:布局和组件 其中,添加的布局主要有RelativeLayout型(相对布局)的和LinearLayout(线性布局) 添加的组件主要有文本显示框,编辑框,按钮等组件. 下面,就让我们来进行实现: 首先我们创建一个新的项目,删除MainActivity.class中没有的代码,仅留下protected void onCreate(Bundle savedInstanceState)函数往布局文件中添加一个新的组件: 1. addV

Android中给按钮同时设置背景和圆角示例代码_Android

前言 最近在做按钮的时候遇到在给按钮设置一张图片作为背景的同时还要自己定义圆角,最简单的做法就是直接切张圆角图作为按钮就可以了,但是如果不这样该怎么办呢,看代码: 下面来看效果图 一.先建一个圆角的shape文件: <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android">

Android中给按钮同时设置背景和圆角示例代码

前言 最近在做按钮的时候遇到在给按钮设置一张图片作为背景的同时还要自己定义圆角,最简单的做法就是直接切张圆角图作为按钮就可以了,但是如果不这样该怎么办呢,看代码: 下面来看效果图 一.先建一个圆角的shape文件: <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android">