ToggleButton开关
package com.wwj.toggle;
import android.content.Context;
public class DisplayUtils {
public static int dip2px(Context context, float dpValue) {
final float scale = context.getResources().getDisplayMetrics().density;
return (int) (dpValue * scale 0.5f);
}
public static int px2dip(Context context, float pxValue) {
final float scale = context.getResources().getDisplayMetrics().density;
return (int) (pxValue / scale 0.5f);
}
public static int getScreenWidth(Context context) {
return context.getResources().getDisplayMetrics().widthPixels;
}
public static int getScreenHeight(Context context) {
return context.getResources().getDisplayMetrics().heightPixels;
}
}
package com.wwj.toggle;
import android.app.Activity;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageButton;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.ToggleButton;
public class Setting extends Activity {
private LinearLayout layout_AutoPlay;
private LinearLayout layout_StartOnBoot;
private ToggleButton toggle_AutoPlay;
private ToggleButton toggle_StartOnBoot;
private ImageButton toggleButton_AutoPlay;
private ImageButton toggleButton_StartOnBoot;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.settings);
// 找到控件
layout_AutoPlay = (LinearLayout) findViewById(R.id.layout_AutoPlay);
layout_StartOnBoot = (LinearLayout) findViewById(R.id.layout_StartOnBoot);
toggle_AutoPlay = (ToggleButton) findViewById(R.id.toggle_AutoPlay);
toggle_StartOnBoot = (ToggleButton) findViewById(R.id.toggle_StartOnBoot);
toggleButton_AutoPlay = (ImageButton) findViewById(R.id.toggleButton_AutoPlay);
toggleButton_StartOnBoot = (ImageButton) findViewById(R.id.toggleButton_StartOnBoot);
initViews();
setListeners();
}
private void initViews() {
// 是否自动播放,获取SharePerference保存的用户配置
boolean isAutoPlay = SettingUtils.get(this, SettingUtils.AUTO_PLAY,false);
toggle_AutoPlay.setChecked(isAutoPlay);
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) toggleButton_AutoPlay.getLayoutParams();
if (isAutoPlay) {
// 如果是自动播放
// 调整位置
params.addRule(RelativeLayout.ALIGN_RIGHT, -1);
params.addRule(RelativeLayout.ALIGN_LEFT,R.id.toggleButton_AutoPlay);
toggleButton_AutoPlay.setLayoutParams(params);
toggleButton_AutoPlay.setImageResource(R.drawable.progress_thumb_selector);
toggle_AutoPlay.setGravity(Gravity.RIGHT | Gravity.CENTER_VERTICAL);
} else {
// 调整位置
params.addRule(RelativeLayout.ALIGN_RIGHT, R.id.toggle_AutoPlay);
params.addRule(RelativeLayout.ALIGN_LEFT, -1);
toggleButton_AutoPlay.setLayoutParams(params);
toggleButton_AutoPlay.setImageResource(R.drawable.progress_thumb_off_selector);
toggle_AutoPlay.setGravity(Gravity.LEFT | Gravity.CENTER_VERTICAL);
}
boolean isAutostart = SettingUtils.get(this,SettingUtils.IS_AUTO_START, true);
toggle_StartOnBoot.setChecked(isAutostart);
RelativeLayout.LayoutParams params3 = (RelativeLayout.LayoutParams) toggleButton_StartOnBoot.getLayoutParams();
if (isAutostart) {
// 调整位置
params3.addRule(RelativeLayout.ALIGN_RIGHT, -1);
params3.addRule(RelativeLayout.ALIGN_LEFT, R.id.toggle_StartOnBoot);
toggleButton_StartOnBoot.setLayoutParams(params3);
toggleButton_StartOnBoot.setImageResource(R.drawable.progress_thumb_selector);
toggle_StartOnBoot.setGravity(Gravity.RIGHT| Gravity.CENTER_VERTICAL);
} else {
// 调整位置
params3.addRule(RelativeLayout.ALIGN_RIGHT, R.id.toggle_StartOnBoot);
params3.addRule(RelativeLayout.ALIGN_LEFT, -1);
toggleButton_StartOnBoot.setLayoutParams(params3);
toggleButton_StartOnBoot.setImageResource(R.drawable.progress_thumb_off_selector);
toggle_StartOnBoot.setGravity(Gravity.LEFT| Gravity.CENTER_VERTICAL);
}
}
private void setListeners() {
toggle_AutoPlay.setOnCheckedChangeListener(new ToggleListener(this,"自动播放", toggle_AutoPlay, toggleButton_AutoPlay));
toggle_StartOnBoot.setOnCheckedChangeListener(new ToggleListener(this,"开机自启动", toggle_StartOnBoot, toggleButton_StartOnBoot));
// UI事件,按钮点击事件
OnClickListener clickToToggleListener = new OnClickListener() {
@Override
public void onClick(View v) {
toggle_AutoPlay.toggle();
}
};
toggleButton_AutoPlay.setOnClickListener(clickToToggleListener);
layout_AutoPlay.setOnClickListener(clickToToggleListener);
// UI事件,按钮点击事件
OnClickListener clickToToggleAutostartListener = new OnClickListener() {
public void onClick(View v) {
toggle_StartOnBoot.toggle();
}
};
toggleButton_StartOnBoot.setOnClickListener(clickToToggleAutostartListener);
layout_StartOnBoot.setOnClickListener(clickToToggleAutostartListener);
}
}
package com.wwj.toggle;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.preference.PreferenceManager;
public class SettingUtils {
public static final String AUTO_PLAY = "auto_play"; // 自动播放
public static final String IS_AUTO_START = "is_auto_start"; // 开机自启动
/**
* 获取配置
* @param context
* @param name
* @param defaultValue
* @return
*/
public static boolean get(Context context, String name, boolean defaultValue) {
final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
boolean value = prefs.getBoolean(name, defaultValue);
return value;
}
/**
* 保存用户配置
* @param context
* @param name
* @param value
* @return
*/
public static boolean set(Context context, String name, boolean value) {
final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
Editor editor = prefs.edit();
editor.putBoolean(name, value);
return editor.commit(); //提交
}
}
package com.wwj.toggle;
import android.content.Context;
import android.view.Gravity;
import android.view.animation.TranslateAnimation;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.ImageButton;
import android.widget.RelativeLayout;
import android.widget.ToggleButton;
/**
* 状态按钮的监听事件
*
* @author wwj
*
*/
public class ToggleListener implements OnCheckedChangeListener {
private Context context;
private String settingName;
private ToggleButton toggle;
private ImageButton toggle_Button;
public ToggleListener(Context context, String settingName,ToggleButton toggle, ImageButton toggle_Button) {
this.context = context;
this.settingName = settingName;
this.toggle = toggle;
this.toggle_Button = toggle_Button;
}
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// 保存设置
if ("自动播放".equals(settingName)) {
SettingUtils.set(context, SettingUtils.AUTO_PLAY, isChecked);
} else if ("开机自启动".equals(settingName)) {
SettingUtils.set(context, SettingUtils.IS_AUTO_START, isChecked);
}
// 播放动画
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) toggle_Button.getLayoutParams();
if (isChecked) {
// 调整位置
params.addRule(RelativeLayout.ALIGN_RIGHT, -1);
if ("自动播放".equals(settingName)) {
params.addRule(RelativeLayout.ALIGN_LEFT, R.id.toggle_AutoPlay);
} else if ("开机自启动".equals(settingName)) {
params.addRule(RelativeLayout.ALIGN_LEFT,
R.id.toggle_StartOnBoot);
}
toggle_Button.setLayoutParams(params);
toggle_Button.setImageResource(R.drawable.progress_thumb_selector);
toggle.setGravity(Gravity.RIGHT | Gravity.CENTER_VERTICAL);
// 播放动画
TranslateAnimation animation = new TranslateAnimation(
DisplayUtils.dip2px(context, 40), 0, 0, 0);
animation.setDuration(200);
toggle_Button.startAnimation(animation);
} else {
// 调整位置
if ("自动播放".equals(settingName)) {
params.addRule(RelativeLayout.ALIGN_RIGHT, R.id.toggle_AutoPlay);
} else if ("开机自启动".equals(settingName)) {
params.addRule(RelativeLayout.ALIGN_RIGHT,
R.id.toggle_StartOnBoot);
}
params.addRule(RelativeLayout.ALIGN_LEFT, -1);
toggle_Button.setLayoutParams(params);
toggle_Button
.setImageResource(R.drawable.progress_thumb_off_selector);
toggle.setGravity(Gravity.LEFT | Gravity.CENTER_VERTICAL);
// 播放动画
TranslateAnimation animation = new TranslateAnimation(
DisplayUtils.dip2px(context, -40), 0, 0, 0);
animation.setDuration(200);
toggle_Button.startAnimation(animation);
}
}
}
资源文件列表
2013.08.14_ToggleButton_demo/.classpath , 475
2013.08.14_ToggleButton_demo/.project , 864
2013.08.14_ToggleButton_demo/AndroidManifest.xml , 882
2013.08.14_ToggleButton_demo/bin/2013.08.14_ToggleButton_demo.apk , 267863
2013.08.14_ToggleButton_demo/bin/AndroidManifest.xml , 882
2013.08.14_ToggleButton_demo/bin/classes/com/wwj/toggle/BuildConfig.class , 337
2013.08.14_ToggleButton_demo/bin/classes/com/wwj/toggle/DisplayUtils.class , 1109
2013.08.14_ToggleButton_demo/bin/classes/com/wwj/toggle/R$attr.class , 328
2013.08.14_ToggleButton_demo/bin/classes/com/wwj/toggle/R$dimen.class , 449
2013.08.14_ToggleButton_demo/bin/classes/com/wwj/toggle/R$drawable.class , 954
2013.08.14_ToggleButton_demo/bin/classes/com/wwj/toggle/R$id.class , 778
2013.08.14_ToggleButton_demo/bin/classes/com/wwj/toggle/R$layout.class , 386
2013.08.14_ToggleButton_demo/bin/classes/com/wwj/toggle/R$menu.class , 376
2013.08.14_ToggleButton_demo/bin/classes/com/wwj/toggle/R$string.class , 460
2013.08.14_ToggleButton_demo/bin/classes/com/wwj/toggle/R$style.class , 419
2013.08.14_ToggleButton_demo/bin/classes/com/wwj/toggle/R.class , 633
2013.08.14_ToggleButton_demo/bin/classes/com/wwj/toggle/Setting$1.class , 843
2013.08.14_ToggleButton_demo/bin/classes/com/wwj/toggle/Setting$2.class , 843
2013.08.14_ToggleButton_demo/bin/classes/com/wwj/toggle/Setting.class , 3628
2013.08.14_ToggleButton_demo/bin/classes/com/wwj/toggle/SettingUtils.class , 1415
2013.08.14_ToggleButton_demo/bin/classes/com/wwj/toggle/ToggleListener.class , 2707
2013.08.14_ToggleButton_demo/bin/classes.dex , 561048
2013.08.14_ToggleButton_demo/bin/dexedLibs/android-support-v4-5bf4d4eb6f16ef7fc2ee6a7267d0bf3f.jar , 189231
2013.08.14_ToggleButton_demo/bin/jarlist.cache , 120
2013.08.14_ToggleButton_demo/bin/res/drawable/banner_bg.9.png , 231
2013.08.14_ToggleButton_demo/bin/res/drawable/bg.png , 14072
2013.08.14_ToggleButton_demo/bin/res/drawable/item_short_bg.png , 208
2013.08.14_ToggleButton_demo/bin/res/drawable/item_short_bg_pressed.png , 381
2013.08.14_ToggleButton_demo/bin/res/drawable/list_divider.png , 104
2013.08.14_ToggleButton_demo/bin/res/drawable/progress_thumb.png , 2122
2013.08.14_ToggleButton_demo/bin/res/drawable/progress_thumb_off.png , 1952
2013.08.14_ToggleButton_demo/bin/res/drawable/progress_thumb_pressed.png , 2424
2013.08.14_ToggleButton_demo/bin/res/drawable/toggle_bg_off.png , 2369
2013.08.14_ToggleButton_demo/bin/res/drawable/toggle_bg_on.png , 1622
2013.08.14_ToggleButton_demo/bin/res/drawable-hdpi/ic_launcher.png , 5964
2013.08.14_ToggleButton_demo/bin/res/drawable-mdpi/ic_launcher.png , 3112
2013.08.14_ToggleButton_demo/bin/res/drawable-xhdpi/ic_launcher.png , 9355
2013.08.14_ToggleButton_demo/bin/res/drawable-xxhdpi/ic_launcher.png , 17889
2013.08.14_ToggleButton_demo/bin/resources.ap_ , 71965
2013.08.14_ToggleButton_demo/gen/com/wwj/toggle/BuildConfig.java , 156
2013.08.14_ToggleButton_demo/gen/com/wwj/toggle/R.java , 3968
2013.08.14_ToggleButton_demo/ic_launcher-web.png , 51394
2013.08.14_ToggleButton_demo/libs/android-support-v4.jar , 484258
2013.08.14_ToggleButton_demo/proguard-project.txt , 781
2013.08.14_ToggleButton_demo/project.properties , 563
2013.08.14_ToggleButton_demo/res/drawable/banner_bg.9.png , 336
2013.08.14_ToggleButton_demo/res/drawable/bg.png , 35053
2013.08.14_ToggleButton_demo/res/drawable/item_short_bg.png , 3468
2013.08.14_ToggleButton_demo/res/drawable/item_short_bg_pressed.png , 3446
2013.08.14_ToggleButton_demo/res/drawable/item_short_bg_selector.xml , 361
2013.08.14_ToggleButton_demo/res/drawable/list_divider.png , 2817
2013.08.14_ToggleButton_demo/res/drawable/progress_thumb.png , 5140
2013.08.14_ToggleButton_demo/res/drawable/progress_thumb_off.png , 4827
2013.08.14_ToggleButton_demo/res/drawable/progress_thumb_off_selector.xml , 273
2013.08.14_ToggleButton_demo/res/drawable/progress_thumb_pressed.png , 5566
2013.08.14_ToggleButton_demo/res/drawable/progress_thumb_selector.xml , 277
2013.08.14_ToggleButton_demo/res/drawable/toggle_bg_off.png , 5597
2013.08.14_ToggleButton_demo/res/drawable/toggle_bg_on.png , 4627
2013.08.14_ToggleButton_demo/res/drawable/toggle_selector.xml , 296
2013.08.14_ToggleButton_demo/res/drawable-hdpi/ic_launcher.png , 7658
2013.08.14_ToggleButton_demo/res/drawable-mdpi/ic_launcher.png , 3777
2013.08.14_ToggleButton_demo/res/drawable-xhdpi/ic_launcher.png , 12516
2013.08.14_ToggleButton_demo/res/drawable-xxhdpi/ic_launcher.png , 24777
2013.08.14_ToggleButton_demo/res/layout/settings.xml , 5706
2013.08.14_ToggleButton_demo/res/menu/main.xml , 263
2013.08.14_ToggleButton_demo/res/values/dimens.xml , 220
2013.08.14_ToggleButton_demo/res/values/strings.xml , 245
2013.08.14_ToggleButton_demo/res/values/styles.xml , 697
2013.08.14_ToggleButton_demo/res/values-sw600dp/dimens.xml , 203
2013.08.14_ToggleButton_demo/res/values-sw720dp-land/dimens.xml , 277
2013.08.14_ToggleButton_demo/res/values-v11/styles.xml , 334
2013.08.14_ToggleButton_demo/res/values-v14/styles.xml , 391
2013.08.14_ToggleButton_demo/src/com/wwj/toggle/DisplayUtils.java , 714
2013.08.14_ToggleButton_demo/src/com/wwj/toggle/Setting.java , 4664
2013.08.14_ToggleButton_demo/src/com/wwj/toggle/SettingUtils.java , 1106
2013.08.14_ToggleButton_demo/src/com/wwj/toggle/ToggleListener.java , 2776
