Android之常见控件
在我们开发Android的时候,有各种各样常见的控件供我们使用,今天就记录一下这些常见的控件有哪些,其实他们的用法大多一样,希望能举一反三,
第一个常见的控件恐怕就是EditText、TextView、Button,使用的例子如下:
activity_main.xml布局文件:
<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:orientation="vertical" > <EditText android:id="@+id/factorOne" android:layout_width="fill_parent" android:layout_height="wrap_content" /> <TextView android:id="@+id/symbol" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <EditText android:id="@+id/factorTwo" android:layout_width="fill_parent" android:layout_height="wrap_content" /> <Button android:id="@+id/calc" android:layout_width="fill_parent" android:layout_height="wrap_content" /> </LinearLayout>
对应的activity:
package cn.bridgeli.demo; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; public class MainActivity extends Activity { private EditText factorOne = null; private TextView symbol = null; private EditText factorTwo = null; private Button calc = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); factorOne = (EditText) findViewById(R.id.factorOne); symbol = (TextView) findViewById(R.id.symbol); factorTwo = (EditText) findViewById(R.id.factorTwo); calc = (Button) findViewById(R.id.calc); symbol.setText(R.string.symbol); calc.setText(R.string.calc); calc.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { String firstNum = factorOne.getText().toString(); String secondNum = factorTwo.getText().toString(); Intent intent = new Intent(); intent.setClass(MainActivity.this, ResultActivity.class); intent.putExtra("firstNum", firstNum); intent.putExtra("secondNum", secondNum); startActivity(intent); } }); } }
result.xml布局文件就比较简单了,只有一个TextView
<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:orientation="vertical" > <TextView android:id="@+id/result" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout>
同样第二个activity也比较简单,接收第一个activity传来的参数,进行计算,并展示出来:
package cn.bridgeli.demo; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.widget.TextView; public class ResultActivity extends Activity{ private TextView result = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.result); Intent intent = getIntent(); int firstNum = Integer.parseInt(intent.getStringExtra("firstNum")); int secondNum = Integer.parseInt(intent.getStringExtra("secondNum")); result = (TextView) findViewById(R.id.result); int i = firstNum * secondNum; result.setText(i + ""); } }
接下来我们看看另外的常见控件单选按钮Radio和复选按钮checkBox:
同样布局文件:
<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:orientation="vertical" > <RadioGroup android:id="@+id/genderGroup" android:layout_width="match_parent" android:layout_height="match_parent" > <RadioButton android:id="@+id/femaleButton" android:layout_width="match_parent" android:layout_height="match_parent" android:text="@string/female"/> <RadioButton android:id="@+id/maleButton" android:layout_width="match_parent" android:layout_height="match_parent" android:text="@string/male"/> </RadioGroup> <CheckBox android:id="@+id/swimButton" android:layout_width="match_parent" android:layout_height="match_parent" android:text="" /> <CheckBox android:id="@+id/runButton" android:layout_width="match_parent" android:layout_height="match_parent" android:text="" /> <CheckBox android:id="@+id/readButton" android:layout_width="match_parent" android:layout_height="match_parent" android:text="" /> </LinearLayout>
记着Radio有一个组的概念,对应的activity就比较简单了
package cn.bridgeli.demo; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.RadioButton; import android.widget.RadioGroup; import android.widget.Toast; public class MainActivity extends ActionBarActivity { private RadioGroup radioGroup = null; private RadioButton female = null; private RadioButton male = null; private CheckBox swimButton = null; private CheckBox runButton = null; private CheckBox readButton = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); radioGroup = (RadioGroup) findViewById(R.id.genderGroup); female = (RadioButton) findViewById(R.id.femaleButton); male = (RadioButton) findViewById(R.id.maleButton); radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, int checkId) { if(female.getId() == checkId){ Toast.makeText(MainActivity.this, "female", Toast.LENGTH_SHORT).show(); }else if(male.getId() == checkId){ Toast.makeText(MainActivity.this, "male", Toast.LENGTH_SHORT).show(); } } }); swimButton = (CheckBox) findViewById(R.id.swimButton); runButton = (CheckBox) findViewById(R.id.runButton); readButton = (CheckBox) findViewById(R.id.readButton); swimButton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) { if(isChecked){ System.out.println("swim is checked"); }else{ System.out.println("swim is unchecked"); } } }); } }
其实就是找到他们,并为他们设置监听器而已,这其中有一个控件是Toast,这个控件其实在我们开发的时候用途是非常大的,例如:用户填写表单时的数据验证,提示用户;我们的应用需要网路,而用户没有联网时,提示用户联网;还有我们最最常见的提示用户连点两次back键时,退出应用。
下面在让我们看看Android中的另外几个控件进度条,首先是普通的进度条:
<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:orientation="vertical" > <ProgressBar android:id="@+id/firstBar" style="?android:attr/progressBarStyleHorizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:visibility="gone"/> <ProgressBar android:id="@+id/secondBar" style="?android:attr/progressBarStyle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:visibility="gone"/> <Button android:id="@+id/begin" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </LinearLayout>
对应的activity:
package cn.bridgeli.demo3; import android.os.Bundle; import android.support.v7.app.ActionBarActivity; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.ProgressBar; import android.widget.RatingBar; import android.widget.RatingBar.OnRatingBarChangeListener; import android.widget.SeekBar; import android.widget.SeekBar.OnSeekBarChangeListener; public class MainActivity extends ActionBarActivity { private ProgressBar firstBar = null; private ProgressBar secondBar = null; private Button begin = null; int i = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); firstBar = (ProgressBar) findViewById(R.id.firstBar); secondBar = (ProgressBar) findViewById(R.id.secondBar); begin = (Button) findViewById(R.id.begin); begin.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { if(0 == i){ firstBar.setVisibility(View.VISIBLE); secondBar.setVisibility(View.VISIBLE); }else if(i <= 100){ firstBar.setProgress(i); firstBar.setSecondaryProgress(i+10); secondBar.setProgress(i); }else{ firstBar.setVisibility(View.GONE); secondBar.setVisibility(View.GONE); } } }); } }
接下来还有两个比较常见的进度条:SeekBar和RatingBar,他们的用法也很简单,首先来看SeekBar:
seekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { @Override public void onStopTrackingTouch(SeekBar seekBar) { } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { } });
这个bar最大的特点就是用户可以自己手动拖动调整当前进度,其常见于视频、音频播放器的进度表示,接下来我们再看看另一个RatingBar,
ratingBar.setNumStars(5); ratingBar.setStepSize((float) 0.5); ratingBar.setOnRatingBarChangeListener(new OnRatingBarChangeListener() { @Override public void onRatingChanged(RatingBar ratingBar, float progress, boolean fromUser) { } });
这个bar和其他几个bar明显不同,它的特别非常明显,以星星的形式展示,我们可以自己决定星星的个数以及步长,这个应用也比较多,相信大家已经想到了:打分,当让用户评价一个东西是,我们可以让用户选择给几颗星,那么这个时候这个bar就派上用场了。
其实Android中有很多常见的控件供我们使用,他们大多也不难,就是在布局文件中设置一下(当然也可以在activity中设置),然后我们的activity中给他们设置监听器,重写监听器中的方法仅此而已,相信大家看了此文,自己动手做几个小实验,就会明白这些控件怎么用了,同时也希望大家能举一反三,根据网上的资料当遇到其他常见控件的时候能灵活运用!
PS:第一次写Android的东西,既是初学还是自学,也没做过项目,所以不免有错误的地方和有点抓不住重点,还请大家能留言交流,谢谢
作 者: BridgeLi,https://www.bridgeli.cn
原文链接:http://www.bridgeli.cn/archives/135
版权声明:非特殊声明均为本站原创作品,转载时请注明作者和原文链接。
近期评论