一、TextView/EditView
知识点说明
/**textview 文本框 展示
* 1.文本字体的大小textSize(sp)
* 2.autoLink:none(默认),web(Linkify.WEB_URLS)
* email,phone,map,all(包括web|email|phone|map)
* 3.ellipsize:设置缺省属性 none(默认),start(省略头部),middle,end marquee
* 4.password="true"设置改文本为密码输入框
* 5.backgroup 带边框的
* 6.phoneNumber=true
*
* editview 输入框 操作
* 继承textview
* */
二、Button
知识点说明
/**
* button --生成按钮上的文字
* ImageButton--生产带图片的按钮 即使设置了text也不会显示
* xx.9.png--用来优化android资源的小图片
* 被拉伸却不失真
* 9png图片打包后会减小2个像素
* 制作9png --在android/tools/draw9patch.bat
* */
代码演示
<TableLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:orientation="horizontal"
android:layout_height="match_parent">
<TableRow>
<!-- 普通文字按钮 -->
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/red1"
android:text="普通按钮"
android:textSize="10pt"
/>
<!-- 普通图片按钮 -->
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/red1"
android:background="#000000"
/>
</TableRow>
<TableRow>
<!-- 按下时显示不同图片的按钮 -->
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/button_selector"
android:background="#000000"
/>
<!-- 带文字的图片按钮-->
<Button
android:id="@+id/test"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/button_selector"
android:text="带文字的图片按钮"
/>
</TableRow>
<TableRow>
<!-- 普通图片 -->
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btc"
/>
<!-- 9Patch图片 -->
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/bt9"
/>
</TableRow>
</TableLayout>
super.onCreate(savedInstanceState);
setContentView(R.layout.button);
private Button bt9;
private Button btc;
bt9 = (Button) findViewById(R.id.bt9);
btc = (Button) findViewById(R.id.btc);
// button.setBackgroundDrawable(getResource.getDrawable(xxx))
//9png设置背景貌似只能通过此方法,否则会不起作用
bt9.setBackgroundDrawable(getResources().getDrawable(R.drawable.lbjn));
btc.setBackgroundDrawable(getResources().getDrawable(R.drawable.lbjnc));
效果图
.

关于9png
打开draw9patch.bat-->show bad patches 就可以画出自己要设计的png了。

这里找了张图片,说明下
1号黑色条位置向下覆盖的区域表示图片横向拉伸时,只拉伸该区域
2号黑色条位置向右覆盖的区域表示图片纵向拉伸时,只拉伸该区域
3号黑色条位置向左覆盖的区域表示图片纵向显示内容的区域
4号黑色条位置向上覆盖的区域表示图片横向显示内容的区域
没有黑色条的位置覆盖的区域是图片拉伸时保持不变(比如,如果图片的四角为弧形的时候,当图片被任意拉伸时,四角的弧形都不会发生改变)
5、如果失误多选了部分,可按住shift键,点击鼠标左键去掉黑色条
6、右边3个黑色图形区域为显示当前拉伸效果
7、选择好区域后,点击左上file-》save 9-path,保存图片,后缀名为xxx.9.png
2号黑色条位置向右覆盖的区域表示图片纵向拉伸时,只拉伸该区域
3号黑色条位置向左覆盖的区域表示图片纵向显示内容的区域
4号黑色条位置向上覆盖的区域表示图片横向显示内容的区域
没有黑色条的位置覆盖的区域是图片拉伸时保持不变(比如,如果图片的四角为弧形的时候,当图片被任意拉伸时,四角的弧形都不会发生改变)
5、如果失误多选了部分,可按住shift键,点击鼠标左键去掉黑色条
6、右边3个黑色图形区域为显示当前拉伸效果
7、选择好区域后,点击左上file-》save 9-path,保存图片,后缀名为xxx.9.png
实际开发中,一般是一对出现的,也就是14一对(当我们需要拉伸图片的横向),23一对(当我们需要拉伸图片的纵向)
三、单选/复选框
知识点
单选框 RadioButton需要嵌套在一个RadioGroup中,通过isChecked来判断是否组件有被选中
复选框checkbox则不需要如此。直接上代码,没什么好说的。
代码
<RadioGroup android:id="@+id/radionGroup"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:orientation="horizontal">
<RadioButton android:id="@+id/radioFemale"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:text="女" />
<RadioButton android:id="@+id/radioMale"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:text="男" android:checked="true" />
<Button android:id="@+id/ok" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="确定" />
</RadioGroup>
ok.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String result="你选择的是:";
if(radioFemale.isChecked()){
setTitle(result+"女");
}else{
setTitle(result+"男");
}
}
});
checkbox
<CheckBox android:id="@+id/plain_cb" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="AA" />
<CheckBox android:id="@+id/serif_cb" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="BB" />
<CheckBox android:id="@+id/bold_cb" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="CC" />
<CheckBox android:id="@+id/italic_cb" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="DD" />
<Button android:id="@+id/button1" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="获取checkbox" />
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String result="";
if(plainCB.isChecked()){
result+=plainCB.getText()+"、";
}
if(serifCB.isChecked()){
result+=serifCB.getText()+"、";
}
if(boldCB.isChecked()){
result+=boldCB.getText()+"、";
}
if(italicCB.isChecked()){
result+=italicCB.getText()+"、";
}
if(!"".equals(result)){
result=result.substring(0,result.length()-1);
}else{
result="你没有选择!!!";
}
setTitle("Checked:"+result);
}
});
四、状态开关按钮(toggleButton)
知识点
checked-->setChecked textOff-->非选中的值 textOn-->选中的值
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="是否是码农:"></TextView>
<ToggleButton android:textOn="是" android:textOff="否"
android:checked="true" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:id="@+id/toggleBt">
</ToggleButton>
checked=ture表示默认选则textOn
toggleBt.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
// TODO Auto-generated method stub
String toggleText = toggleBt.getText().toString();// 获得触发前的text
if (isChecked) {//当选中的时候触发
setTitle("我是码农");
} else {
setTitle("我不是码农");
}
}
});
五、时钟(DlalogClock/DigitalClock)
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:orientation="vertical" android:gravity="center_horizontal">
<!-- 模拟时钟 -->
<AnalogClock android:layout_width="fill_parent"
android:layout_height="wrap_content"></AnalogClock>
<!-- 数字时钟 继承 textview -->
<DigitalClock android:layout_width="fill_parent"
android:gravity="center_horizontal" android:layout_height="wrap_content"
android:textSize="14pt">
</DigitalClock>
</LinearLayout>

关于计时器chronometer
<!-- 计时器 -->
<Chronometer
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/chronometer"
></Chronometer>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/chBt"
android:text="开始计时"
></Button>
chronometer=(Chronometer) findViewById(R.id.chronometer);
chBt=(Button) findViewById(R.id.chBt);
chBt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
chronometer.setBase(SystemClock.elapsedRealtime());
chronometer.start();
}
});
chronometer.setOnChronometerTickListener( new Chronometer.OnChronometerTickListener() {
@Override
public void onChronometerTick(Chronometer chronometer) {
// TODO Auto-generated method stub
if(SystemClock.elapsedRealtime()-chronometer.getBase()>10*1000){
chronometer.stop();//当运行10秒后停止
}
}
});
六、图像ImageView
知识点
ImageView类可以加载各种来源的图片(如资源或图片库),需要计算图像的尺寸,比便它可以在其他布局中使用,并提供例如缩放和着色
附:更详细的scaleType说明:
CENTER /center 在视图中心显示图片,并且不缩放图片
CENTER_CROP / centerCrop 按比例缩放图片,使得图片长 (宽)的大于等于视图的相应维度
CENTER_INSIDE / centerInside 按比例缩放图片,使得图片长 (宽)的小于等于视图的相应维度
FIT_CENTER / fitCenter 按比例缩放图片到视图的最小边,居中显示
FIT_END / fitEnd 按比例缩放图片到视图的最小边,显示在视图的下部分位置
FIT_START / fitStart 把图片按比例扩大/缩小到视图的最小边,显示在视图的上部分位置
FIT_XY / fitXY 把图片不按比例缩放到视图的大小显示
MATRIX / matrix 用矩阵来绘制
更多参考:农民伯伯
<ImageView android:id="@+id/imageView1"
android:src="@drawable/upan"
android:scaleType="centerInside"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:background="@drawable/imageview_bg"
/>

imageView1 = (ImageView) findViewById(R.id.imageView1);
imageView1.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
BitmapDrawable drawable = (BitmapDrawable) imageView1
.getDrawable();
if (!drawable.getBitmap().isRecycled()) {
drawable.getBitmap().recycle();// 回收资源
}
imageView1.setImageBitmap(BitmapFactory.decodeResource(
getResources(), R.drawable.bg));
imageView1.setScaleType(ScaleType.FIT_CENTER);
return false;
}
});

七、自动完成(AutoCompleteTextView)

<AutoCompleteTextView android:id="@+id/auto_complete"
android:layout_width="200px" android:layout_height="wrap_content"
android:layout_x="23px" android:layout_y="98px" android:textSize="18px" />
static final String[] COUNTRIES = new String[] {
"China" ,"Russia", "Germany",
"Ukraine", "Belarus", "USA" ,"China1" ,"China12", "Germany",
"Russia2", "Belarus", "USA" ,"UAA","UBC","UBB","CCC","BBB","广州1","广州2","广州3","广州4","广东1","广东2","广东3",
};
autoComplete=(AutoCompleteTextView)findViewById(R.id.auto_complete);
cleanButton=(Button)findViewById(R.id.cleanButton);
ArrayAdapter<String> adapter=new ArrayAdapter<String>(AutoCompleteTextViewActivity.this,android.R.layout.simple_dropdown_item_1line,COUNTRIES);
autoComplete.setAdapter(adapter);
//清空
cleanButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
autoComplete.setText("");
}
});

八、下拉框(Spinner)
<Spinner android:id="@+id/spinner1" android:layout_width="150dip"
android:layout_height="wrap_content" android:drawSelectorOnTop="false" />
赋值一
android:entries
赋值二
private String[] mCounties={"beijing","guangdong","guangxi","hunan"};
private List<String> allCounties=new ArrayList<String>();
for(int i=0;i<mCounties.length;i++){
allCounties.add(mCounties[i]);
}
countiesAdapter=new ArrayAdapter<String>(SpinnerActivity.this,android.R.layout.simple_spinner_item,allCounties);
countiesAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner1.setAdapter(countiesAdapter);
赋值三
ArrayAdapter adapter=ArrayAdapter.createFromResource(SpinnerActivity.this,R.array.counties,android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner1.setAdapter(adapter);
arryas.xml
<resources>
<string-array name="counties">
<item>AAA</item>
<item>BBB</item>
<item>CCC</item>
<item>DDD</item>
<item>EEE</item>
</string-array>
</resources>
跟很多控件一样,可以自定义baseAdapter,来自定义spinner,有兴趣的朋友可以先自行研究。
九、日期/时间选择器(DatePicker/TimePicker)
<DatePicker android:id="@+id/datePicker1"
android:layout_width="wrap_content" android:layout_height="wrap_content" />
<TimePicker android:id="@+id/timePicker1"
android:layout_width="wrap_content" android:layout_height="wrap_content" />
//int year =c.get(Calendar.YEAR);//建议通过此种方式获取 datePicker1=(DatePicker)findViewById(R.id.datePicker1); timePicker1=(TimePicker)findViewById(R.id.timePicker1); datePickerButton=(Button)findViewById(R.id.datePickerButton1); datePicker1.init(year,month,day, null); /** datePicker1.init(year, month, day, new DatePicker.OnDateChangedListener() { @Override public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) { //DatePickerActivity.this.year=year; } });
timePicker1.setCurrentHour(hour);timePicker1.setCurrentMinute(minute);timePicker1.setIs24HourView(true);datePickerButton.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {setTitle("你选择的是:"+datePicker1.getYear()+"年"+datePicker1.getMonth()+"月"+datePicker1.getDayOfMonth()+"日 "+timePicker1.getCurrentHour()+"小时"+timePicker1.getCurrentMinute()+"分");}});*/
![]()
十、进度条(ProgressBar)
研究进度条浪费了很多时间,主要是布局出现了问题,button按钮居然显示不出来,不废话,大局为重
找到问题了,
layout_height改成wrap_content 去掉代码中屏蔽的就OK了这里就不修改了

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout android:layout_width="match_parent"
android:layout_height="match_parent">
<ProgressBar android:layout_width="200dip" android:id="@+id/pro1"
android:layout_height="wrap_content" android:max="100"
style="?android:attr/progressBarStyleHorizontal" android:progress="0"
android:secondaryProgress="20" android:visibility="gone"></ProgressBar>
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content" android:id="@+id/ptext"></TextView>
</LinearLayout>
<LinearLayout android:layout_width="match_parent"
android:layout_height="match_parent">
<Button android:layout_width="wrap_content"
android:layout_height="wrap_content" android:id="@+id/pstart"
android:text="启动"></Button>
</LinearLayout>
</LinearLayout>
pro1.setVisibility(View.VISIBLE);
final Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
if (msg.what == 0x101) {
pro1.setProgress(count);
pro1.setSecondaryProgress(count + 10);// 这里设置的作用是可以看到下一个滚动的值
ptext.setText(count + "%");
}
super.handleMessage(msg);
}
};
// pstart.setOnClickListener(new OnClickListener() {
// @Override
// public void onClick(View v) {
// TODO Auto-generated method stub
new Thread() {
@Override
public void run() {
// Message msg=new Message();//不能放在这里 否则有异常 This message is
// already in use.
while (count < 100) {
count += 10;
Message msg = new Message();
msg.what = 0x101;
handler.sendMessage(msg);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}.start();
// }
// });
}

这里只是简单介绍了下进度条,主要的配置都在xml中去完成了,更多待续吧。继续继续
十一、拖动条(SeekBar)
<ImageView android:layout_width="match_parent"
android:layout_height="wrap_content" android:id="@+id/simage"
android:src="@drawable/imageview_bg"></ImageView>
<SeekBar android:layout_width="fill_parent"
android:layout_height="wrap_content" android:id="@+id/seekbar1"
android:max="255" android:progress="255" android:thumb="@drawable/seekbar_thumb"></SeekBar>
seekbar1 = (SeekBar) findViewById(R.id.seekbar1);
simage = (ImageView) findViewById(R.id.simage);
seekbar1.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) {
simage.setAlpha(progress);
}
});

十二、星级评分条(RatingBar)
<RatingBar android:id="@+id/rating_bar"
android:layout_width="wrap_content" android:layout_height="wrap_content"
ratingBarStyleSmall="true" />
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="展现图片" />
<ImageView android:id="@+id/imageView" android:src="@drawable/nobody"
android:layout_width="wrap_content" android:layout_height="wrap_content" />
ratingBar=(RatingBar)findViewById(R.id.rating_bar);
imageView=(ImageView)findViewById(R.id.imageView);
ratingBar.setMax(255);//设置最大值
ratingBar.setStepSize(0.5f);//设置每次点击最小点半颗星 默认也是05.f
ratingBar.setProgress(0);//设置当前不选中星星
ratingBar.setNumStars(5);//设置展示几颗星
ratingBar.setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener() {
@Override
public void onRatingChanged(RatingBar ratingBar, float rating,
boolean fromUser) {
imageView.setAlpha((int)rating*255/5);
}
});
