android UI组件

自定义UI

View子类,复写onRraw()方法。

 

public class CustomView extends View {

@Override

protected void onDraw(Canvas canvas) {

// TODO Auto-generated method stub

super.onDraw(canvas);

Paint paint=new Paint();

paint.setAntiAlias(true);

paint.setColor(Color.GREEN);

canvas.drawCircle(20, 20, 15, paint);

}

 

/**

 * @param context

 */

public CustomView(Context context) {

super(context);

// TODO Auto-generated constructor stub

}

 

}

 

 

public class MainActivity extends Activity {

 

private CustomView customView;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

customView=new CustomView(this);

this.setContentView(customView);

}

 

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.main, menu);

return true;

}

 

}

 

 

ListViewListActivity的适配

1、ArrayAdapter

 

public class MainActivity extends Activity {

 

private ListView list;

private String[]contents={"java","C++","C#","android","ios"};

 

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

list=(ListView)this.findViewById(R.id.list1);

//调用系统的View显示

ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,

android.R.layout.simple_list_item_1contents);

list.setAdapter(adapter);

}

 

 

2、SimpleAdapter

 

主要是针对List<Map<>>集合的ListView的适配

 

public class MainActivity extends Activity {

 

private ListView list;

private String[]contents={"面向对象","移动开发","面向过程"};

private String[]oo={"java","android","C langue"};

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

list=(ListView)this.findViewById(R.id.list1);

//所有列的数据

List<Map<String,String>> list1=new ArrayList<Map<String,String>>();

for(int i=0;i<contents.length;i++){

//每一行的数据用map集合保存

Map<String,String> map=new HashMap<String, String>();

map.put("head",android.R.drawable.sym_contact_card+"");

map.put("txt1"contents[i]);

map.put("txt2",oo[i]);

list1.add(map);

}

//适配器中第一个参数是当前的上下文,第二个是list集合,第三个是每一行要显示的布局,第四个是集合中的key值,第五个是集合中的值要填充的具体控件

SimpleAdapter adapter=new SimpleAdapter(this, list1,R.layout.my_simple_text_view,

new String[]{"head","txt1","txt2"},new int[]{R.id.head_img,R.id.text_view1,R.id.text_view2});

list.setAdapter(adapter);

}

 

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.main, menu);

return true;

}

 

}


布局文件:(有可能覆盖)

<?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"

   >

 

    <ImageView

        android:id="@+id/head_img"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content" />

 

    <LinearLayout

        android:layout_width="match_parent"

        android:layout_height="60sp"

        android:orientation="vertical" >

 

        <TextView

            android:id="@+id/text_view1"

            android:layout_width="wrap_content"

            android:layout_height="30dp" />

 

        <TextView

            android:id="@+id/text_view2"

            android:layout_width="wrap_content"

            android:layout_height="30dp" 

            android:textColor="#ff0000"/>

    </LinearLayout>

 

</LinearLayout>

 

 

ListView布局

 

Spinner布局如下:


 




radioGroup



适配器每项数据要显示的布局文件:

<?xml version="1.0" encoding="utf-8"?>

<TextView xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="match_parent"

    android:layout_height="wrap_content"

    android:textColor="#f00"

    android:textSize="15sp"

    android:padding="10dp"

    >"

    

</TextView>

 

package com.example.android_ui;

 

import android.app.Activity;

import android.os.Bundle;

import android.util.Log;

import android.view.Menu;

import android.view.View;

//import android.widget.AdapterView;

import android.widget.AdapterView;

import android.widget.AdapterView.OnItemClickListener;

import android.widget.AdapterView.OnItemSelectedListener;

import android.widget.ArrayAdapter;

import android.widget.CompoundButton;

import android.widget.RadioGroup.OnCheckedChangeListener;

//import android.widget.CompoundButton.OnCheckedChangeListener;

import android.widget.ListView;

import android.widget.RadioButton;

import android.widget.RadioGroup;

import android.widget.Spinner;

import android.widget.Toast;

 

public class ViewActivity extends Activity {

 

private String[] contents={"C","C++","java","android","C#","javaWeb","asp.net"};

private RadioButton radioButton1,radioButton2;

private RadioGroup radioGroup ;

private ListView listView;

private Spinner spinner;

private void initView(){

radioButton1=(RadioButton)this.findViewById(R.id.radio_1);

radioButton2=(RadioButton)this.findViewById(R.id.radio_2);

radioGroup=(RadioGroup)this.findViewById(R.id.rg_1);

listView=(ListView)this.findViewById(R.id.list_view);

spinner=(Spinner)this.findViewById(R.id.spinner1);

Log.i("<<<<""initView()完成");

}

private void setListenr(){

//radioButon多选按钮

/*radioButton1.setOnCheckedChangeListener(new OnCheckedChangeListener() {

//RadionButton 实例的监听接口

@Override

public void onCheckedChanged(CompoundButton arg0, boolean arg1) {

Toast.makeText(ViewActivity.this,"您选择了1000"+arg1, 1000).show();

}

});

radioButton2.setOnCheckedChangeListener(new OnCheckedChangeListener() {

@Override

public void onCheckedChanged(CompoundButton arg0, boolean arg1) {

// TODO Auto-generated method stub

Toast.makeText(ViewActivity.this,"您选择了2000"+arg1, 1000).show();

}

});*/

//radioGroupd单选按钮,获得radioGroup实例即可

radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() {

@Override

public void onCheckedChanged(RadioGroup arg0, int arg1) {

// TODO Auto-generated method stub

if(arg1==R.id.rg_1_java){

Toast.makeText(ViewActivity.this,"您选择了java"+arg1, 1000).show();

}

else{

Toast.makeText(ViewActivity.this,"您选择了android"+arg1, 1000).show();

}

}

 

});

//listView实例绑定监听器,arg2是每项的索引值

/*listView.setOnItemClickListener(new OnItemClickListener() {

 

@Override

public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,

long arg3) {

Toast.makeText(ViewActivity.this,"您选择了"+contents[arg2], 1000).show();

}

});

*/

spinner.setOnItemSelectedListener(new OnItemSelectedListener() {

 

@Override

public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,

long arg3) {

Toast.makeText(ViewActivity.this,"您选择了"+contents[arg2], 1000).show();

}

 

@Override

public void onNothingSelected(AdapterView<?> arg0) {

Toast.makeText(ViewActivity.this,"您尚未选择", 1000).show();

}

 

});

}

private void setAdapter(){

//第一个参数是上下文,第二个是内容显示布局,第三个是要显示的内容

ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,

R.layout.item_viewcontents);

//listView.setAdapter(adapter);

spinner.setAdapter(adapter);

}

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

//实例化组件

initView();

//设置适配器

setAdapter();

//设置监听

setListenr();

}

 

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.main, menu);

return true;

}

 

}

 

 

自定义对话框

 

布局:

<?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:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:paddingBottom="15px"

        android:text="请输入登录信息:"

        android:textColor="#00ff00"

        android:textSize="25sp" />

 

    <TableLayout

        android:layout_width="match_parent"

        android:layout_height="wrap_content" >

 

        <TableRow>

 

            <TextView

                android:layout_width="match_parent"

                android:layout_height="wrap_content"

                android:paddingLeft="20dp"

                android:text="姓名:"

                android:textSize="20sp" />

 

            <EditText

                android:id="@+id/edit_user_name"

                android:layout_width="match_parent"

                android:layout_height="wrap_content"

                android:hint="请输入姓名" />

        </TableRow>

 

        <TableRow>

 

            <TextView

                android:layout_width="match_parent"

                android:layout_height="wrap_content"

                android:paddingLeft="20dp"

                android:text="密码:"

                android:textSize="20sp" />

 

            <EditText

                android:id="@+id/edit_user_password"

                android:layout_width="match_parent"

                android:layout_height="wrap_content"

                android:hint="请输入密码" />

        </TableRow>

        

      

    </TableLayout>

  <Button

                android:id="@+id/sure"

                android:layout_width="wrap_content"

                android:layout_height="wrap_content"

                android:text="确定" 

           

                android:layout_marginLeft="150dp"

                />

</LinearLayout>

 


//自定义对话框

private void showCustomDialog(){

Button btnCustomDialog=(Button)this.findViewById(R.id.btn_custom_dialog);

btnCustomDialog.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

Dialog dialog=new Dialog( BaseDialog.this);

dialog.setContentView(R.layout.custom_dialog);

dialog.setTitle("登录");

dialog.show();

//handleDialog();

}

});

}

 

 

AlterDialog对话框


 

//alertdialog

private void showAlertDialog(){

Button btnAlertDialog=(Button)this.findViewById(R.id.btn_alert_dialog);

btnAlertDialog.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

//首先获取当前ActivityLayoutInflater

  LayoutInflater layout=BaseDialog.this.getLayoutInflater();

//接着使用LayoutInflater对象获取Layout

          View view=layout.inflate(R.layout.custom_dialog,null);

          //获得AlertDialog的实例

AlertDialog alertDialog=new AlertDialog.Builder(BaseDialog.this).setIcon(android.R.drawable.dialog_frame)

.setTitle("提示")

.setMessage("确定退出?")

.setCancelable(false)

.setView(view)//可以自己定义该对话框的风格

.setNegativeButton("No",new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

dialog.cancel();//

//dialog.dismiss();

}

} )

.setPositiveButton("Yes",new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

// TODO Auto-generated method stub

BaseDialog.this.finish();

}

}).show();//不能忘记!!!

}

});

}

 

ProgressDialog 可以在子线程里更新UI



 

private void progressDialog(){

progressDialog=new ProgressDialog(BaseDialog.this);

progressDialog.setTitle("模拟任务完成进度");

progressDialog.setMax(100);

progressDialog.setMessage("任务进行中,请稍后......");

progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);

progressDialog.show();

/*Button button=(Button)this.findViewById(R.id.btn_progress_dialog);

button.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {*/

new Thread(new Runnable() {

@Override

public void run() {

try {

for(int i=0;i<50;i++){

Thread.sleep(1000);

//progressDialog可以在子线程里更新进度公式=当前值和总大小的比值乘上progress设置的最大值

progressDialog.setProgress(i*100/50);

}

catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}).start();

//}

//});

}

 

 

 

DatePickerDialog


 

private void showDatePickerDialog(){

Button button=(Button)findViewById(R.id.btn_date_dialog);

button.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

//先获得日历实例

Calendar calendar=Calendar.getInstance();

//注意日期对话框

new DatePickerDialog(BaseDialog.this,

new DatePickerDialog.OnDateSetListener() {

@Override

public void onDateSet(DatePicker view, int year, int monthOfYear,int dayOfMonth) {

Toast.makeText(BaseDialog.this,"设置时间是:"+year+""+monthOfYear+""+dayOfMonth+"", 1000).show();

}

}, calendar.get(Calendar.YEAR),calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH)).show();

}

});

}

 

 

 

 

 

 

TimePickerDialog

 



 

private void showTimePickerDialog(){

Button button=(Button)findViewById(R.id.btn_time_dialog);

button.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

Calendar calendar=Calendar.getInstance();

new TimePickerDialog(BaseDialog.this,new OnTimeSetListener() {

@Override

public void onTimeSet(TimePicker view, int hourOfDay, int minute) {

Toast.makeText(BaseDialog.this,"设置时间是:"+ hourOfDay+""+minute+"", 1000).show();

}

}, calendar.get(Calendar.HOUR_OF_DAY),calendar.get(Calendar.MINUTE),true).show();

}

});

}

 

 

 

 

 

AutoCompleteTextView:

 

//自动完成文本

private void showAutoCompleteTextView(){

AutoCompleteTextView autoCompleteTextView=(AutoCompleteTextView)this.findViewById(R.id.actv);

//建立数据源

     String[] countries = new String[]{

       "Afghanistan""Albania""Algeria""American Samoa""Andorra",

       "Angola""Anguilla""Antarctica""Antigua and Barbuda""Argentina",

       "Armenia""Aruba""Australia""Austria""Azerbaijan",

       "Bahrain""Bangladesh""Barbados""Belarus""Belgium",

       "Belize""Benin""Bermuda""Bhutan""Bolivia",

       "Bosnia and Herzegovina""Botswana""Bouvet Island""Brazil""British Indian Ocean Territory",

       "British Virgin Islands""Brunei""Bulgaria""Burkina Faso""Burundi",

       "Cote d'Ivoire""Cambodia""Cameroon""Canada""Cape Verde",

       "Cayman Islands""Central African Republic""Chad""Chile""China",

       "Christmas Island""Cocos (Keeling) Islands""Colombia""Comoros""Congo",

       "Cook Islands""Costa Rica""Croatia""Cuba""Cyprus""Czech Republic",

       "Democratic Republic of the Congo""Denmark""Djibouti""Dominica""Dominican Republic",

       "East Timor""Ecuador""Egypt""El Salvador""Equatorial Guinea""Eritrea",

       "Estonia""Ethiopia""Faeroe Islands""Falkland Islands""Fiji""Finland",

       "Former Yugoslav Republic of Macedonia""France""French Guiana""French Polynesia",

       "French Southern Territories""Gabon""Georgia""Germany""Ghana""Gibraltar",

       "Greece""Greenland""Grenada""Guadeloupe""Guam""Guatemala""Guinea""Guinea-Bissau",

       "Guyana""Haiti""Heard Island and McDonald Islands""Honduras""Hong Kong""Hungary",

       "Iceland""India""Indonesia""Iran""Iraq""Ireland""Israel""Italy""Jamaica",

       "Japan""Jordan""Kazakhstan""Kenya""Kiribati""Kuwait""Kyrgyzstan""Laos",

       "Latvia""Lebanon""Lesotho""Liberia""Libya""Liechtenstein""Lithuania""Luxembourg",

       "Macau""Madagascar""Malawi""Malaysia""Maldives""Mali""Malta""Marshall Islands",

       "Martinique""Mauritania""Mauritius""Mayotte""Mexico""Micronesia""Moldova",

       "Monaco""Mongolia""Montserrat""Morocco""Mozambique""Myanmar""Namibia",

       "Nauru""Nepal""Netherlands""Netherlands Antilles""New Caledonia""New Zealand",

       "Nicaragua""Niger""Nigeria""Niue""Norfolk Island""North Korea""Northern Marianas",

       "Norway""Oman""Pakistan""Palau""Panama""Papua New Guinea""Paraguay""Peru",

       "Philippines""Pitcairn Islands""Poland""Portugal""Puerto Rico""Qatar",

       "Reunion""Romania""Russia""Rwanda""Sqo Tome and Principe""Saint Helena",

       "Saint Kitts and Nevis""Saint Lucia""Saint Pierre and Miquelon",

       "Saint Vincent and the Grenadines""Samoa""San Marino""Saudi Arabia""Senegal",

       "Seychelles""Sierra Leone""Singapore""Slovakia""Slovenia""Solomon Islands",

       "Somalia""South Africa""South Georgia and the South Sandwich Islands""South Korea",

       "Spain""Sri Lanka""Sudan""Suriname""Svalbard and Jan Mayen""Swaziland""Sweden",

       "Switzerland""Syria""Taiwan""Tajikistan""Tanzania""Thailand""The Bahamas",

       "The Gambia""Togo""Tokelau""Tonga""Trinidad and Tobago""Tunisia""Turkey",

       "Turkmenistan""Turks and Caicos Islands""Tuvalu""Virgin Islands""Uganda",

       "Ukraine""United Arab Emirates""United Kingdom",

       "United States""United States Minor Outlying Islands""Uruguay""Uzbekistan",

       "Vanuatu""Vatican City""Venezuela""Vietnam""Wallis and Futuna""Western Sahara",

       "Yemen""Yugoslavia""Zambia""Zimbabwe"}  ; 

     ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,R.layout.item_view1, countries);

     autoCompleteTextView.setAdapter(adapter);

    

}

 

五星评分条:


//五星评分条

private void showRatingBar(){

RatingBar bar=(RatingBar)this.findViewById(R.id.rating_bar);

bar.setOnRatingBarChangeListener(new OnRatingBarChangeListener() {

@Override

public void onRatingChanged(RatingBar ratingBar, float rating,

boolean fromUser) {

Toast.makeText(MainActivity.this,"rating="+rating, 1000).show();

}

});

}

 

 

 

QuickContactBadge

  <QuickContactBadge 

                 android:id="@+id/quick_contact_badge"

           android:layout_width="match_parent"

           android:layout_height="wrap_content"

           android:background="#00ffff"

               android:src="@drawable/ic_launcher"

               />

           M没有这个图标是显示不出来的!!!




private void showQuickContactBadge(){

QuickContactBadge badge=(QuickContactBadge)this.findViewById(R.id.quick_contact_badge);

//true表示点击才有动作

badge.assignContactFromPhone("13047220489",true);

}

 

 

 

 

 

Seekbar


 <SeekBar 

                 android:id="@+id/seek_bar"

           android:layout_width="match_parent"

           android:layout_height="wrap_content"

           android:max="100"

           android:progress="20"

               

               />

 

//拖动条

private void showSeeBar(){

SeekBar bar=(SeekBar)this.findViewById(R.id.seek_bar);

bar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {

@Override

public void onStopTrackingTouch(SeekBar seekBar) {

Toast.makeText(MainActivity.this,"停止进度="+seekBar.getProgress(), 1000).show();

}

@Override

public void onStartTrackingTouch(SeekBar seekBar) {

Toast.makeText(MainActivity.this,"开始进度="+seekBar.getProgress(), 1000).show();

}

@Override

public void onProgressChanged(SeekBar seekBar, int progress,

boolean fromUser) {

Toast.makeText(MainActivity.this,"进度="+progress, 1000).show();

}

});

}


CheckBox

 

 

 

private void showCheckBox(){

CheckBox box1=(CheckBox)this.findViewById(R.id.check_box1);

box1.setOnCheckedChangeListener(new OnCheckedChangeListener() {

@Override

public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

if(isChecked==true)

Toast.makeText(MainActivity.this,"您选择了"+buttonView.getText().toString(),1000).show();

else{

Toast.makeText(MainActivity.this,"尚未选择!!!",1000).show();

}

}

});

CheckBox box2=(CheckBox)this.findViewById(R.id.check_box2);

box2.setOnCheckedChangeListener(new OnCheckedChangeListener() {

@Override

public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

if(isChecked==true)

Toast.makeText(MainActivity.this,"您选择了"+buttonView.getText().toString(),1000).show();

else{

Toast.makeText(MainActivity.this,"尚未选择!!!",1000).show();

}

}

});

}


ToggleButton




数值选择器

private void showNumberPicker(){

//获得引用

NumberPicker numberPicker=(NumberPicker)this.findViewById(R.id.number_picker_button);

//设置初值

numberPicker.setMaxValue(200);

numberPicker.setMinValue(10);

numberPicker.setValue(5);

numberPicker.setOnValueChangedListener(new OnValueChangeListener() {

@Override

public void onValueChange(NumberPicker picker, int oldVal, int newVal) {

if(newVal==100){

AlertDialog alertDialog=new AlertDialog.Builder(MainActivity.this).setIcon(android.R.drawable.title_bar)

.setTitle("提示")

.setMessage("恭喜正确!!!")

.setNegativeButton("关闭对话框"new OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

// TODO Auto-generated method stub

dialog.cancel();

}

}).show();

}

}

});

}

 

 

 

 

 

 





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值