Android简单手电筒的应用可以设置不同的颜色
手电筒对于Android来说是极其常见的一个应用,常见的是通过摄像头发出光线进行照明,这里我们没有采取那样做而是通过采取通过界面Layout的一些方法来设置可拥有显示不同颜色。其整体的思路不是太难,首先我们应该在values建立一个color.xml文件来存储不同的颜色信息:
<?xml version="1.0" encoding="utf-8"?><resources><color name="white">#FFFFFF</color><color name="yellow">#FFD700</color><color name="red">#FF0000</color><color name="pink">#FF34B3</color><color name="black">#000000</color><color name="lightSkyBlue">#87CEFA</color></resources>
然后以下是我们的源码文件:
public class MainActivity extends Activity { /** Called when the activity is first created. */private LinearLayout mylayout;private Resources mycolor;public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //改背layout背景颜色 mylayout=(LinearLayout)findViewById(R.id.myline); //手电筒默认为白色的光 setColor(R.color.white); //这里默认最大亮度 setBright(1.0f); }/* * 选择设置背景颜色 * (non-Javadoc) * @see android.app.Activity#onCreateOptionsMenu(android.view.Menu) */ @Overridepublic boolean onCreateOptionsMenu(Menu menu){// TODO Auto-generated method stubmenu.addSubMenu(0, Menu.FIRST,1, "选择背景颜色");menu.addSubMenu(0, Menu.FIRST+1,2,"调节背景亮度");menu.addSubMenu(0,Menu.FIRST+2,3, "关于");menu.addSubMenu(0,Menu.FIRST+3,4,"退出");return super.onCreateOptionsMenu(menu);}/* * 选择处理 * (non-Javadoc) * @see android.app.Activity#onMenuItemSelected(int, android.view.MenuItem) */@Overridepublic boolean onMenuItemSelected(int featureId, MenuItem item){// TODO Auto-generated method stubswitch (item.getItemId()){case Menu.FIRST:selectColor();break;case Menu.FIRST+1:selectBright();break;case Menu.FIRST+2:about();break;case Menu.FIRST+3:MainActivity.this.finish();break;default:break;}return super.onMenuItemSelected(featureId, item);}/* * 选择背景颜色进行设置 */private void selectColor(){// 显示并且设置一些参数final String[] items = {"白色", "红色", "黑色","黄色","粉色","亮蓝色"};new AlertDialog.Builder(MainActivity.this).setTitle("请选择颜色").setItems(items,new DialogInterface.OnClickListener(){@Overridepublic void onClick(DialogInterface dialog, int which){// TODO Auto-generated method stubswitch (which){case 0:setColor(R.color.white);break; case 1: setColor(R.color.red); break; case 2: setColor(R.color.black); break; case 3: setColor(R.color.yellow); break; case 4: setColor(R.color.pink); break; case 5: setColor(R.color.lightSkyBlue); break;default:break;}}}).create().show();}/* * 设置亮度 */private void selectBright(){final String[] items = {"100%", "75%", "50%","25%","10%"}; new AlertDialog.Builder(MainActivity.this).setTitle("请选择亮度").setItems(items,new DialogInterface.OnClickListener(){@Overridepublic void onClick(DialogInterface dialog, int which){// TODO Auto-generated method stubswitch (which){case 0:setBright(1.0f);break; case 1: setBright(0.75f); break; case 2: setBright(0.5f); break; case 3: setBright(0.25f); break; case 4: setBright(0.1f); break;default:break;}}}).create().show();}private void about(){new AlertDialog.Builder(MainActivity.this).setTitle("关于我们!!").setMessage("ZY只为你做更实用的软件!\n邮箱:xxxx@163.com\n联系我们!!").setPositiveButton("确定", new DialogInterface.OnClickListener(){@Overridepublic void onClick(DialogInterface dialog, int which){// TODO Auto-generated method stub}}).create().show();} /* * 设置背景颜色 */ private void setColor(int color) { //得到资源的一个对象 mycolor=getBaseContext().getResources(); Drawable usecolor=mycolor.getDrawable(color); //设置手电筒光的背景颜色 mylayout.setBackgroundDrawable(usecolor); } /* * 设置亮度 */ private void setBright(float light) { WindowManager.LayoutParams lp=getWindow().getAttributes(); lp.screenBrightness=light; getWindow().setAttributes(lp); } }布局文件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/myline" ><TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" android:textSize="30sp" android:textColor="@color/white" />
</LinearLayout>
整体来说,代码并不是太难,很容易理解,Menu和其中设置等一些操作需要我们注意!