魅情景提供4种常用的情景模式(“响铃”、“震动”、“震动和响铃”、“静音”),三阶亮度调节分别对应户外,室内,夜晚的亮度(可长按进入设置亮度)。软件占用资源极小,为魅族用户提供一些便利操作(魅族的机器自动亮度的时候也可以调节亮度的)。
如果你是使用本软件觉得还可以的话,希望给个好评~
软件下载地址:http://app.meizu.com/phone/appsbyid/827024
以下是一些简要说明及源代码,如果有不好的地方,希望指正
0.软件效果
第一个为M9效果,后面为MX效果,自动适配当前机器所使用的语言
1.环境:
终于知道为什么官网会给出M9的sdk了,原来真的不一样,第一次发布的时候以为2.3手机实测过了,模拟器都过了就没事了,后来发现在M9上的显示很不满意,不过通过查阅一些网上资料,解决了适配问题——activity的多个主题的实现。
其实如果你有android开发环境,只用将下载的M9SDK_windows_1.0.zip中platforms目录下android-2.3.1放到自己配置环境的platforms目录下,重启就能搜到了,不要更新。
某些用户按官方说明最后出来的模拟器可能是官方的2.3版本,其实只要重新将android-2.3.1拷贝过来倒platforms目录即可。
2.使用方法:
“响铃”表示响铃并且不震动
“震动”表示不响铃,只有震动
“静音”表示不响铃也不震动
“响震”表示响铃并且震动
红色表示当前状态(仅第一次的时候“响震”的状态会识别为“响铃”,其他应该没问题),蓝色表示当前所选择,用于提示所选中的项目。
以上修改点确定更改生效,取消则无效
有“室外”“室内”“夜晚”三个档,亮度由亮到暗
亮度单击即可切换,长按亮度进入设置,并更改为选中档的亮度值
进入设置界面的时候,进度条所显示的亮度为选中档的亮度,返回则表示不保存,确定表示保存。
亮度小于80之后没什么实用价值,故最小亮度定义为80。
3.解决的问题:
情景模式:对手机的震动响铃的检测及修改
亮度调节:对亮度的调节,及自动亮度调节的修改
存储用户设置
多适配:activity的Dialog和Transparent同时实现,让M9不再难看。自动适配本地语言
4.代码实现:
显示Activity部分
ContextualModelActivity.java显示第一个Dialog化的Activity
package meizu.activity; import meizu.phone.R; import meizu.server.SaveUserInfo; import meizu.server.SetLight; import meizu.server.SetModel; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.graphics.Color; import android.media.AudioManager; import android.os.Bundle; import android.view.ContextMenu; import android.view.ContextMenu.ContextMenuInfo; import android.view.View; import android.view.Window; import android.widget.TextView; public class ContextualModelActivity extends Activity implements View.OnClickListener{ //情景模式 private TextView ring =null; private TextView vibrate = null; private TextView silent = null; private TextView both = null; //亮度调节 private TextView outside = null; private TextView inside = null; private TextView night = null; //控制 private TextView mksur = null; private TextView quit = null; //确定是否是震动+响铃,1表示是 private static int FLAG = 0; //当前模式及点击位置 private static int MODEL = 0; private static int INDEX = 0; //显示的是第几档亮度的R.id.*的值 private static int BRIGHTNESS = 0; //默认初始值,仅第一次有用 private static int LOW =130; private static int MIDDLE = 200; private static int HIGH = 255; public SharedPreferences sp = null; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //取消标题栏 this.requestWindowFeature(Window.FEATURE_NO_TITLE); //只能被被本程序读写,前面的字符串是一个xml文件,系统自动帮我们加上.xml sp = this.getSharedPreferences("userinfo", Context.MODE_PRIVATE); setContentView(R.layout.main); initFindById(); showNowChoice(); } /** * 显示现在正在用的模式 */ public void showNowChoice() { AudioManager audio = (AudioManager) getSystemService(Context.AUDIO_SERVICE); TextView cpy = null; FLAG = sp.getInt("FLAG", 0); switch(audio.getRingerMode()+FLAG){ case AudioManager.RINGER_MODE_NORMAL: INDEX = R.id.ring; cpy = ring; break; case AudioManager.RINGER_MODE_VIBRATE: INDEX = R.id.vibrate; cpy = vibrate; break; case AudioManager.RINGER_MODE_SILENT: INDEX = R.id.silent; cpy = silent; break; default: INDEX = R.id.both; cpy = both; } cpy.setBackgroundColor(Color.RED); cpy=null; BRIGHTNESS = sp.getInt("brightness", 0); if(BRIGHTNESS != 0) { TextView tmp = (TextView)findViewById(BRIGHTNESS); tmp.setBackgroundColor(android.graphics.Color.parseColor(this.getString(R.string.click_color))); } } /** * 分别找到自己的id,并且添加监听器 */ public void initFindById() { ring = (TextView)findViewById(R.id.ring); ring.setOnClickListener(this); vibrate = (TextView)findViewById(R.id.vibrate); vibrate.setOnClickListener(this); silent = (TextView)findViewById(R.id.silent); silent.setOnClickListener(this); both = (TextView)findViewById(R.id.both); both.setOnClickListener(this); outside = (TextView)findViewById(R.id.outside); outside.setOnClickListener(this); outside.setBackgroundColor(android.graphics.Color.parseColor(this.getString(R.string.outside_color))); registerForContextMenu(outside); inside = (TextView)findViewById(R.id.inside); inside.setOnClickListener(this); inside.setBackgroundColor(android.graphics.Color.parseColor(this.getString(R.string.inside_color))); registerForContextMenu(inside); night = (TextView)findViewById(R.id.night); night.setOnClickListener(this); night.setBackgroundColor(android.graphics.Color.parseColor(this.getString(R.string.night_color))); registerForContextMenu(night); mksur=(TextView)findViewById(R.id.mksur); mksur.setOnClickListener(this); quit = (TextView)findViewById(R.id.quit); quit.setOnClickListener(this); } /** * 为亮度调节设置长按事件 */ public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { int ID = v.getId(); BRIGHTNESS = ID; changeBrightness(); Intent intent = new Intent(); String tmp = ""; if(ID == R.id.outside) tmp = "HIGH"; else if(ID == R.id.inside) tmp = "MIDDLE"; else tmp = "LOW"; intent.putExtra("ID", tmp); intent.setClass(ContextualModelActivity.this, SetNum.class); ContextualModelActivity.this.startActivity(intent); } /** * 监听器 */ @Override public void onClick(View v) { AudioManager audio = (AudioManager) getSystemService(Context.AUDIO_SERVICE); int checkedId = v.getId(); if(checkedId!=R.id.mksur && checkedId != R.id.quit) { if(checkedId != R.id.outside && checkedId !=R.id.inside && checkedId != R.id.night) clickModel(checkedId); else clickLight(checkedId); } else if(checkedId == R.id.mksur) { FLAG = 0; switch(MODEL) { case R.id.ring: SetModel.changRing(audio); break; case R.id.vibrate: SetModel.changVibrate(audio); break; case R.id.silent: SetModel.changeSilent(audio); break; default: SetModel.changeBoth(audio); FLAG = 1; } meizu.server.SaveUserInfo.saveFLAG(sp, FLAG); finish(); } else { finish(); } } /** * 选中模式 * @param checkedId */ private void clickModel(int checkedId) { if(MODEL == 0) { MODEL = checkedId; } if(MODEL!=0)//此时MODEL为上次点击的值 { TextView tmp = (TextView)findViewById(MODEL); //如果离开的不是当前情景模式(红色),则离开后无色,否则,恢复红色 if(MODEL != INDEX) tmp.setBackgroundColor(0); else tmp.setBackgroundColor(Color.RED); tmp = (TextView)findViewById(checkedId); tmp.setBackgroundColor(Color.BLUE); MODEL = checkedId; } } /** * 选中亮度 * @param checkedId */ private void clickLight(int checkedId) { BRIGHTNESS = checkedId; TextView tmp = (TextView)findViewById(checkedId); initClick(); tmp.setBackgroundColor(android.graphics.Color.parseColor(this.getString(R.string.click_color))); changeBrightness(); } /** * 亮度改变 */ public void changeBrightness() { //亮度调节 int level ; switch(BRIGHTNESS) { case R.id.outside: if(sp.getInt("HIGH", 0) != 0) HIGH = sp.getInt("HIGH", 0); level = HIGH; break; case R.id.inside: if(sp.getInt("MIDDLE", 0) != 0) MIDDLE = sp.getInt("MIDDLE", 0); level = MIDDLE; break; default: if(sp.getInt("LOW", 0) != 0) LOW = sp.getInt("LOW", 0); level = LOW; } SetLight.setLevelBrightness(this, sp, level, sp.getInt("auto", 0)); SaveUserInfo.saveBRIGHTNESS(sp, BRIGHTNESS); //保存调节后的值 BRIGHTNESS = sp.getInt("brightness", 0); if(BRIGHTNESS != 0) { initClick(); TextView tmp = (TextView)findViewById(BRIGHTNESS); tmp.setBackgroundColor(android.graphics.Color.parseColor(this.getString(R.string.click_color))); } } /** * 亮度三级模式初始化 */ public void initClick() { outside.setBackgroundColor(android.graphics.Color.parseColor(this.getString(R.string.outside_color))); inside.setBackgroundColor(android.graphics.Color.parseColor(this.getString(R.string.inside_color))); night.setBackgroundColor(android.graphics.Color.parseColor(this.getString(R.string.night_color))); } }
SetNum.java设置亮度部分
package meizu.activity; import meizu.phone.R; import meizu.server.ChangeTextColor; import meizu.server.SaveUserInfo; import meizu.server.SetLight; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import android.view.View; import android.view.Window; import android.widget.Button; import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.SeekBar; import android.widget.SeekBar.OnSeekBarChangeListener; import android.widget.TextView; public class SetNum extends Activity implements View.OnClickListener, CheckBox.OnCheckedChangeListener{ private SharedPreferences sp = null; private TextView wordShow = null; private CheckBox checkBox = null; private SeekBar seekBar = null; private Button mksur = null; private Button change = null; private String ID = null; //亮度值 private int BRIGHTNESS = 0; private int AUTO = 0; private int ENUM = 0; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.requestWindowFeature(Window.FEATURE_NO_TITLE); sp = this.getSharedPreferences("userinfo", Context.MODE_PRIVATE); setContentView(R.layout.setting); Intent intent = getIntent(); ID = intent.getStringExtra("ID"); initFindViewById(); //先给个背景 changeColor(); } /** * onPause时候结束,并且恢复调试前状态 * 按home键或者其他中断事务 */ protected void onPause(){ super.onResume(); SetLight.setBrightness(this, BRIGHTNESS); SetLight.saveBrightness(getContentResolver(), BRIGHTNESS); seekBar.setProgress(BRIGHTNESS); SetLight.setBackAuto(this, sp); } /** * 找各自的ID并且加上触发器 */ private void initFindViewById() { // TODO Auto-generated method stub wordShow = (TextView)findViewById(R.id.wordshow); wordShow.setOnClickListener(this); checkBox = (CheckBox)findViewById(R.id.checkbox); AUTO = sp.getInt("auto", 0); if(AUTO == 1) checkBox.setChecked(true) ; else checkBox.setChecked(false); checkBox.setOnCheckedChangeListener(this); seekBar = (SeekBar)findViewById(R.id.seekbar); changeBySeekBar(); mksur = (Button)findViewById(R.id.sure); mksur.setOnClickListener(this); change = (Button)findViewById(R.id.change); change.setOnClickListener(this); } /** * seekBar 触发功能 */ private void changeBySeekBar() { // 进度条绑定最大亮度,255是最大亮度 seekBar.setMax(255); // 取得当前亮度 int normal = SetLight.getScreenBrightness(this); BRIGHTNESS = normal; // 进度条绑定当前亮度 if(normal<80) normal=80; seekBar.setProgress(normal); seekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { public void onStopTrackingTouch(SeekBar seekBar) { // 取得当前进度 int tmp = seekBar.getProgress(); //小于80时候回到80 if(tmp<80) tmp=80; seekBar.setProgress(tmp); if(SetLight.isAutoBrightness(getContentResolver())) { SetLight.stopAutoBrightness(SetNum.this); } SetLight.setBrightness(SetNum.this, tmp); //不保存亮度的话,勾选自动亮度调节,默认的亮度为当前亮度,而不是本activity的亮度 SetLight.saveBrightness(getContentResolver(), tmp); if(AUTO == 1) SetLight.startAutoBrightness(SetNum.this); // SetLight.setLevelBrightness(SetNum.this, sp, tmp, AUTO); } public void onStartTrackingTouch(SeekBar seekBar) { // TODO Auto-generated method stub } public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { // TODO Auto-generated method stub } }); } /** * 确定和点一下的触发 */ @Override public void onClick(View v) { // TODO Auto-generated method stub int chechId = v.getId(); if(chechId == R.id.sure) { BRIGHTNESS = SetLight.getScreenBrightness(this); SaveUserInfo.saveInfo(sp, BRIGHTNESS, ID, AUTO); SetLight.saveBrightness(getContentResolver(), BRIGHTNESS); finish(); } else if(chechId == R.id.change) { changeColor(); } } /** *checkbox 选中触发 */ @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { // TODO Auto-generated method stub if(checkBox.isChecked()) { AUTO = 1; if(!SetLight.isAutoBrightness(getContentResolver())) SetLight.startAutoBrightness(this); } else { AUTO = 0; if(SetLight.isAutoBrightness(getContentResolver())) SetLight.stopAutoBrightness(this); } } /** * 改变颜色及背景 */ private void changeColor() { // TODO Auto-generated method stub ChangeTextColor ctc = new ChangeTextColor(); ChangeTextColor.Couple[] couple = null; couple = ctc.initCouple(); wordShow.setTextColor(couple[ENUM].getText()); wordShow.setBackgroundColor(couple[ENUM].getBackground()); ENUM = (ENUM+1)%(ctc.getN()); } }
接下来是控制层
ChangeTextColor.java作用是显示出不同的文字情景,用于方便使用者将亮度调节至合适
package meizu.server; import android.graphics.Color; public class ChangeTextColor { private final int N = 2; private Couple[] couple = new Couple[N]; public ChangeTextColor() { super(); // TODO Auto-generated constructor stub } public int getN() { return N; } public Couple[] initCouple () { //白底灰字 couple[0] = new Couple(Color.GRAY,Color.WHITE); //黑底灰字 couple[1] = new Couple(Color.GRAY,Color.BLACK); return couple; } public class Couple { private int text = 0; private int background = 0; public Couple() { super(); // TODO Auto-generated constructor stub } public Couple(int text, int background) { super(); this.text = text; this.background = background; } public int getText() { return text; } public void setText(int text) { this.text = text; } public int getBackground() { return background; } public void setBackground(int background) { this.background = background; } } }
SaveUserInfo.java的用处是用SharedPreferences存储用户消息
package meizu.server; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; public class SaveUserInfo { public SaveUserInfo() { super(); // TODO Auto-generated constructor stub\ } /** * FLAG=1表示响铃并且震动 * FLAG=0表示只有响铃并且震动的模式 * @param sp * @param FLAG */ public static void saveFLAG(SharedPreferences sp, int FLAG) { Editor editor = sp.edit(); editor.putInt("FLAG", FLAG); editor.commit(); } /** * 显示的是第几档亮度的R.id.*的值,用于下次程序运行时候显示 * @param sp * @param BRIGHTNESS */ public static void saveBRIGHTNESS(SharedPreferences sp, int BRIGHTNESS) { Editor editor = sp.edit(); editor.putInt("brightness", BRIGHTNESS); editor.commit(); } /** * 存储亮度的值,调整的档的名称及是否开启自动 * @param sp * @param brightness * @param ID * @param AUTO */ public static void saveInfo(SharedPreferences sp, int brightness, String ID, int AUTO) { // TODO Auto-generated method stub Editor editor = sp.edit(); //更新相应亮度档次的值 editor.putInt(ID, brightness); //改变亮度之后是否启用亮度自动调整:1表示是自动,0表示关闭自动 editor.putInt("auto", AUTO); editor.commit(); } }
SetLight.java用于调节亮度和控制自动亮度调节
package meizu.server; import android.app.Activity; import android.content.ContentResolver; import android.content.SharedPreferences; import android.net.Uri; import android.provider.Settings; import android.provider.Settings.SettingNotFoundException; import android.view.WindowManager; public class SetLight { public SetLight() { super(); // TODO Auto-generated constructor stub } /** * 判断是否开启了自动亮度调节 */ public static boolean isAutoBrightness(ContentResolver aContentResolver) { boolean automicBrightness = false; try { automicBrightness = Settings.System.getInt(aContentResolver, Settings.System.SCREEN_BRIGHTNESS_MODE) == Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC; } catch (SettingNotFoundException e) { e.printStackTrace(); } return automicBrightness; } /** * 获取屏幕的亮度 */ public static int getScreenBrightness(Activity activity) { int nowBrightnessValue = 0; ContentResolver resolver = activity.getContentResolver(); try { nowBrightnessValue = android.provider.Settings.System.getInt( resolver, Settings.System.SCREEN_BRIGHTNESS); } catch (Exception e) { e.printStackTrace(); } return nowBrightnessValue; } /** * 设置亮度 */ public static void setBrightness(Activity activity, int brightness) { WindowManager.LayoutParams lp = activity.getWindow().getAttributes(); lp.screenBrightness = Float.valueOf(brightness) * (1f / 255f); activity.getWindow().setAttributes(lp); } /** * 停止自动亮度调节 */ public static void stopAutoBrightness(Activity activity) { Settings.System.putInt(activity.getContentResolver(), Settings.System.SCREEN_BRIGHTNESS_MODE, Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL); } /** * 开启亮度自动调节 * * @param activity */ public static void startAutoBrightness(Activity activity) { Settings.System.putInt(activity.getContentResolver(), Settings.System.SCREEN_BRIGHTNESS_MODE, Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC); } /** * 保存亮度设置状态 */ public static void saveBrightness(ContentResolver resolver, int brightness) { Uri uri = android.provider.Settings.System .getUriFor("screen_brightness"); android.provider.Settings.System.putInt(resolver, "screen_brightness", brightness); // resolver.registerContentObserver(uri, true, myContentObserver); resolver.notifyChange(uri, null); } /** * 设置成相应的亮度 */ public static void setLevelBrightness(Activity activity, SharedPreferences sp, int level, int auto) { // TODO Auto-generated method stub if(isAutoBrightness(activity.getContentResolver())) { stopAutoBrightness(activity); } setBrightness(activity, level); saveBrightness(activity.getContentResolver(), level); if(auto == 1) startAutoBrightness(activity); } public static void setBackAuto(Activity activity, SharedPreferences sp) { int auto = sp.getInt("auto", 0); if(auto == 1) { if(!isAutoBrightness(activity.getContentResolver())) startAutoBrightness(activity); } else { if(isAutoBrightness(activity.getContentResolver())) stopAutoBrightness(activity); } } }
SetModel.java用于控制情景模式中的响铃和震动
package meizu.server; import android.media.AudioManager; public class SetModel { public SetModel() { super(); // TODO Auto-generated constructor stub } //开铃声 public static void changRing(AudioManager audio) { // TODO Auto-generated method stub audio.setRingerMode(AudioManager.RINGER_MODE_NORMAL); audio.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_OFF); audio.setVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION, AudioManager.VIBRATE_SETTING_OFF); } //开震动 public static void changVibrate(AudioManager audio) { // TODO Auto-generated method stub audio.setRingerMode(AudioManager.RINGER_MODE_VIBRATE); audio.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_ON); audio.setVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION, AudioManager.VIBRATE_SETTING_ON); } //关铃声 public static void changeSilent(AudioManager audio) { // TODO Auto-generated method stub audio.setRingerMode(AudioManager.RINGER_MODE_SILENT); audio.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_OFF); audio.setVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION, AudioManager.VIBRATE_SETTING_OFF); } //双开 public static void changeBoth(AudioManager audio) { // TODO Auto-generated method stub audio.setRingerMode(AudioManager.RINGER_MODE_NORMAL); audio.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_ON); audio.setVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION, AudioManager.VIBRATE_SETTING_ON); } }
以下是一些配置文件
AndroidManifest.xml需要一些控制权限
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="meizu.phone" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="7" /> <uses-permission android:name="android.permission.CHANGE_CONFIGURATION"></uses-permission> <uses-permission android:name="android.permission.WRITE_SETTINGS"></uses-permission> <uses-permission android:name="android.permission.VIBRATE" ></uses-permission> <application android:icon="@drawable/eye_106"> <activity android:name="meizu.activity.ContextualModelActivity" android:label="@string/app_name" android:theme="@style/Theme.Transparent" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="meizu.activity.SetNum" android:label="@string/app_name" > </activity> </application> </manifest>
layout中的配置
main.xml:是ContextualModelActivity.java的布局
<?xml version="1.0" encoding="utf-8"?> <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:paddingTop="10dip" android:paddingBottom="10dip" > <TableRow > <TextView android:id="@+id/ring" android:layout_weight="1" android:text="@string/ring" android:gravity="center" android:textSize="22dip" android:paddingRight="20dip" android:paddingLeft="20dip" android:textColor="#C0C0C0" ></TextView> <TextView android:id="@+id/vibrate" android:layout_weight="1" android:text="@string/vibrate" android:gravity="center" android:textSize="22dip" android:paddingRight="20dip" android:paddingLeft="20dip" android:textColor="#C0C0C0" ></TextView> <TextView android:id="@+id/outside" android:layout_weight="1" android:text="@string/outside" android:gravity="center" android:textSize="22dip" android:paddingRight="20dip" android:paddingLeft="20dip" android:textColor="#C0C0C0" ></TextView> </TableRow> <TableRow > <TextView android:id="@+id/silent" android:layout_weight="1" android:text="@string/silent" android:gravity="center" android:textSize="22dip" android:paddingRight="20dip" android:paddingLeft="20dip" android:textColor="#C0C0C0" ></TextView> <TextView android:id="@+id/both" android:layout_weight="1" android:text="@string/both" android:gravity="center" android:textSize="22dip" android:paddingRight="20dip" android:paddingLeft="20dip" android:textColor="#C0C0C0" ></TextView> <TextView android:id="@+id/inside" android:layout_weight="1" android:text="@string/inside" android:gravity="center" android:textSize="22dip" android:paddingRight="20dip" android:paddingLeft="20dip" android:textColor="#C0C0C0" ></TextView> </TableRow> <TableRow > <View android:layout_span="2" android:layout_width="wrap_content" android:layout_height="2dip" android:background="#7CFC00" /> <View android:layout_span="2" android:layout_width="wrap_content" android:layout_height="2dip" android:background="#2E3A1F" /> </TableRow> <TableRow> <TextView android:id="@+id/mksur" android:layout_weight="1" android:gravity="center" android:text="@string/mksur" android:textSize="22dip" android:paddingRight="20dip" android:paddingLeft="20dip" android:textColor="#C0C0C0" /> <TextView android:id="@+id/quit" android:layout_weight="1" android:gravity="center" android:text="@string/quit" android:textSize="22dip" android:paddingRight="20dip" android:paddingLeft="20dip" android:textColor="#C0C0C0"/> <TextView android:id="@+id/night" android:layout_weight="1" android:text="@string/night" android:gravity="center" android:textSize="22dip" android:paddingRight="20dip" android:paddingLeft="20dip" android:textColor="#C0C0C0" ></TextView> </TableRow> </TableLayout>
setting.xml:是SetNum.java的布局
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:id="@+id/wordshow" android:layout_width="fill_parent" android:layout_height="300dip" android:layout_weight="0.46" android:background="#FFFFFF" android:textSize="15dip" android:autoLink="all" android:text="@string/info" /> <CheckBox android:id="@+id/checkbox" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/auto" /> <SeekBar android:id="@+id/seekbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingLeft="30dip" android:paddingRight="30dip"/> <TableLayout android:layout_width="match_parent" android:layout_height="wrap_content" > <TableRow android:layout_width="wrap_content" android:layout_height="wrap_content" > <Button android:id="@+id/sure" android:layout_height="wrap_content" android:layout_weight="1" android:paddingLeft="30dip" android:paddingRight="30dip" android:text="@string/mksur" /> <Button android:id="@+id/change" android:layout_height="wrap_content" android:layout_weight="1" android:paddingLeft="30dip" android:paddingRight="30dip" android:text="@string/click" /> </TableRow> </TableLayout> </LinearLayout>
values默认本地语言英文的时候使用
values-zh-rcn表示简体中文
values-zh-rtw表示繁体中文
这里strings.mxl给出一份,如果有需求可以自己改动即可
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">魅情景</string> <string name="outside_color">#726930</string> <string name="inside_color">#454926</string> <string name="night_color">#2E3A1F</string> <string name="click_color">#843900</string> <string name="ring">响铃</string> <string name="vibrate">震动</string> <string name="silent">静音</string> <string name="both">响震</string> <string name="mksur">确定</string> <string name="quit">取消</string> <string name="outside">室外</string> <string name="inside">室内</string> <string name="night">夜晚</string> <string name="auto">自动亮度调节</string> <string name="info">这里仅仅是一个测试:\n1、通过点击下面的”点一下“按钮可以切换为不同的情景方便您选择合适的亮度\n2、通过滑动下面的进度条来控制亮度,因为亮度小于80基本无任何意义,故最低限制为80的亮度\n3、勾选“自动亮度调节”来决定是否开启亮度调节。\n4、按“确定”保存设置\nPS:手机自动调节能力不太行的建议关掉,比较优秀的建议开启\n\n如果你对本软件有任何意见或者建议,欢迎联系我\n我的联系方式:freeaquar@163.com\n\n源代码已经上传至我的blog,欢迎一起交流~\n我的博客:http://www.cnblogs.com/FreeAquar/archive/2013/01/18/2866201.html\n</string> <string name="click">点一下</string> </resources>
styles.xml:用于多主题的显示:比如我这个要求透明并且对话框的
在AndroidManifest.xml的<activity>标签中加入以下一句话activityandroid:theme="@style/Theme.Transparent"
这些加上后可能重新编译回不过,删掉DDMS下data/data/meizu.phone/shared_prefs中的那个xml重新试试就行。
如果是真机,没有root的可能看不了,卸载了再运行吧,虚拟机可以看
<?xml version="1.0" encoding="utf-8"?> <resources> <style name="Theme.Transparent" parent="@android:style/Theme.Dialog"> <item name="android:windowIsTranslucent">true</item> <item name="android:windowBackground">@color/transparent_background</item> <item name="android:windowContentOverlay">@null</item> <item name="android:windowNoTitle">true</item> <item name="android:windowIsFloating">true</item> <item name="android:backgroundDimEnabled">true</item> </style> </resources>
color.xml对应styles.xml的@color/transparent_background,自己写的颜色好一点,可控制性强一点
前两位表示透明度,后面6位表示颜色
<?xml version="1.0" encoding="utf-8"?> <resources> <color name="transparent_background">#90000000</color> </resources>
5.还希望做的东西:
只是设想,并不一定能够实现,但是会慢慢改进的
1、显示或提示的颜色可以自行设定
2、可以自定义时间段对应相应的亮度或者情景模式
3、背光灯当手电筒,屏幕当手电筒双选
4、程序运行完成后不在最近打开那一栏里面显示
5、开前置摄像头
6.鸣谢
严重感谢:
cskiller同学的图标制作(这个图是我的想法,他把我的想法都实现了,嫌不好看喷我吧。。。。囧)。
zhongsharp同学友情英文翻译,翻译的比较搞~
off人同学的支持和M9真机实测帮我找到M9不兼容的问题。
祝大家新年快乐~~