搞Android系统这么久了,说实话,我连apk怎么写还真是不会,说实话能够看懂,简单改改就不错了,说来惭愧,我是嵌入式出身。最近开始学习Android应用开发,和我的底层结合起来,为了工作,咬着牙也要学下去!!!
首先,我使用的是Android Studio这个软件。
上谷歌中国网就可以下载到了,地址如下:
https://developer.android.google.cn/develop/index.html
编译环境配置,找百度看看就行了,这里不哆嗦。
安装好后,有一些工具没有安装到位可能会报下面类似的错误,看着下面的log提示找解决方案就行了,不懂就百度。作为一个开发人员,错误信息要会看。
程序实现的界面,功能如下:
(1)按下ALL ON/OFF,所有的复选框checkbox被全部选中或者全部不选中,且按钮里的字符串变成ALL ON或者ALL OFF,并打印消息led all on或者led all off
(2)勾选或者不勾选checkbox,会选中对应的LEDx,并打印对应LED on或者 LED off
首先看下Activity_main.xml,这个文件是以上这个界面的布局文件,路径在res/layout/activity_main.xml
笔记:
(1)Layout的宽度和高度,用wrap_content表示取决于它的内容
android:layout_width="wrap_content"
android:layout_height="wrap_content"
(2)表示宽度会填充整个窗口
fill_parent
(3)线性垂直
把RelativeLayout 改为如下xml代码的 LineraLayout
android:orientation="vertical" 这一行表示垂直
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity" android:orientation="vertical" > @顺序排列--->按垂直方向 <TextView android:text="First Android progame" android:layout_width="wrap_content" android:layout_height="wrap_content" /> @指定ID <Button android:id="@+id/BUTTON" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="ALL ON/OFF" /> <CheckBox android:id="@+id/LED1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="LED1" android:onClick="onCheckboxClicked" /> <CheckBox android:id="@+id/LED2" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="LED2" android:onClick="onCheckboxClicked" /> <CheckBox android:id="@+id/LED3" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="LED3" android:onClick="onCheckboxClicked" /> <CheckBox android:id="@+id/LED4" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="LED4" android:onClick="onCheckboxClicked" /> </LinearLayout>如何在布局中添加控件?如上,要添加一个控件,那么就 <控件名称 /> 在这里面添加相关的信息。
最关键的就是id。Android Studio这个软件很智能,有自动补全功能,没有的上网百度或者参考文档。
如图,打开谷歌中国,右上角,搜索,比如Button:
搜索Button会弹出:
选择android.widget.Button,会弹出以下界面:
参考的编写代码,案例都在下面,看看就会写了,非常简单。
接下来是写java代码,同样的,不管是按钮也好,复选框也好,不知道怎么写就上这个谷歌中国,搜索,就可以找到代码了。
在java中有MainActivity中有MainActivity.java中添加代码:
package com.example.administrator.app_0001_leddemo; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; //根据文档导入类 import android.view.View; import android.widget.Button; import android.widget.CheckBox; import android.widget.Toast; public class MainActivity extends ActionBarActivity { //定义一个按钮对象 private boolean ledon = false ; private Button button = null ; private CheckBox checkBoxLed1 = null ; private CheckBox checkBoxLed2 = null ; private CheckBox checkBoxLed3 = null ; private CheckBox checkBoxLed4 = null ; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //在这里添加代码 button = (Button)findViewById(R.id.BUTTON); //找到对应的ID checkBoxLed1 = (CheckBox)findViewById(R.id.LED1); checkBoxLed2 = (CheckBox)findViewById(R.id.LED2); checkBoxLed3 = (CheckBox)findViewById(R.id.LED3); checkBoxLed4 = (CheckBox)findViewById(R.id.LED4); //拷贝文档中的参考代码,设置监听器 ---> 匿名类写法 button.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { // Code here executes on main thread after user presses button ledon = !ledon ; if(ledon) { button.setText("ALL_ON"); Toast.makeText(getApplicationContext(),"led all on",Toast.LENGTH_SHORT).show(); //表示全部选中 checkBoxLed1.setChecked(true); checkBoxLed2.setChecked(true); checkBoxLed3.setChecked(true); checkBoxLed4.setChecked(true); } else { button.setText("ALL_OFF"); Toast.makeText(getApplicationContext(),"led all off",Toast.LENGTH_SHORT).show(); //表示全部不选中 checkBoxLed1.setChecked(false); checkBoxLed2.setChecked(false); checkBoxLed3.setChecked(false); checkBoxLed4.setChecked(false); } } }); } public void onCheckboxClicked(View view) { // Is the view now checked? boolean checked = ((CheckBox) view).isChecked(); // Check which checkbox was clicked switch(view.getId()) { case R.id.LED1: //表示选中 if (checked) { //打印 Toast.makeText(getApplicationContext(),"led1 on",Toast.LENGTH_SHORT).show(); } //表示不选中 else { Toast.makeText(getApplicationContext(),"led1 off",Toast.LENGTH_SHORT).show(); } break; case R.id.LED2: if (checked) { Toast.makeText(getApplicationContext(),"led2 on",Toast.LENGTH_SHORT).show(); } else { Toast.makeText(getApplicationContext(),"led2 off",Toast.LENGTH_SHORT).show(); } break; // TODO: Veggie sandwich case R.id.LED3: if (checked) { Toast.makeText(getApplicationContext(),"led3 on",Toast.LENGTH_SHORT).show(); } else { Toast.makeText(getApplicationContext(),"led3 off",Toast.LENGTH_SHORT).show(); } break ; case R.id.LED4: if (checked) { Toast.makeText(getApplicationContext(),"led4 on",Toast.LENGTH_SHORT).show(); } else { Toast.makeText(getApplicationContext(),"led4 off",Toast.LENGTH_SHORT).show(); } break ; } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } }编写好了,点击运行,会让你选择:
没有Android设备就默认OK就行了:
最终看到效果,大功告成: