首页

android ToggleButton 开关按钮实例源码

java

2020-7-16

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);
		}
	}

}


资源下载此资源下载价格为2D币(VIP免费),请先
资源文件列表
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
没有账号? 忘记密码?

社交账号快速登录