android高级界面

来源:互联网 发布:拍摄淘宝照片背景图片 编辑:程序博客网 时间:2024/06/05 14:47

RadioButton与CheckBox

  • RadioGroup 和RadioButton

RadioButton一定要放在RadioGroup
Checked=“true”当按钮选中后
勾选事件监听
OnCheckedChangeListener
练习
石头,剪刀,布
MainActivity.java

import android.app.Activity;import android.os.AsyncTask;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.RadioButton;import android.widget.TextView;public class MainActivity extends Activity implements OnClickListener {    TextView tv;    Button btn_begin;    RadioButton radiobtn[]=new RadioButton[3];    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        radiobtn[0] =(RadioButton) findViewById(R.id.radio0);        radiobtn[1]=(RadioButton) findViewById(R.id.radio1);        radiobtn[2]=(RadioButton) findViewById(R.id.radio2);        tv=(TextView) findViewById(R.id.textView1);        btn_begin=(Button) findViewById(R.id.btn_begin);        btn_begin.setOnClickListener(this);    }    @Override    public void onClick(View v) {        //生成随机数         int random=(int) (Math.random()*10+10);         new AsyncTask<Integer, Integer, String>() {             //后台线程             @Override                protected String doInBackground(Integer... params) {                     int num=params[0];                     int i=0;                     while(i<num){                         i++;                         publishProgress(i%radiobtn.length);                         try {                            Thread.sleep(200);                        } catch (InterruptedException e) {                            e.printStackTrace();                        }                     }                     return radiobtn[i%radiobtn.length].getText().toString();                }             protected  void onProgressUpdate(Integer... values) {                 int count=values[0];                 radiobtn[count].setChecked(true);             };             protected void onPostExecute(String result) {                 super.onPostExecute(result);                 tv.setText(result);             };        }.execute(random);    }}

Activity_main.xml

<RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context="com.example.android_829_radiobutton.MainActivity" >    <TextView        android:id="@+id/textView1"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_alignParentTop="true"        android:layout_centerHorizontal="true"        android:layout_marginTop="70dp"        android:textSize="30sp"        android:text="猜拳" />    <RadioGroup        android:id="@+id/radioGroup1"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_below="@+id/textView1"        android:layout_centerHorizontal="true"        android:layout_marginTop="16dp" >        <RadioButton            android:id="@+id/radio0"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:checked="true"            android:text="石头" />        <RadioButton            android:id="@+id/radio1"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="剪刀" />        <RadioButton            android:id="@+id/radio2"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="布" />    </RadioGroup>    <Button        android:id="@+id/btn_begin"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_below="@+id/radioGroup1"        android:layout_centerHorizontal="true"        android:layout_marginTop="27dp"        android:text="开始" /></RelativeLayout>

菜单Menu

PopupMenu
MainActivity.java

import android.app.Activity;import android.os.Bundle;import android.view.MenuItem;import android.view.View;import android.view.View.OnClickListener;import android.widget.PopupMenu;import android.widget.PopupMenu.OnMenuItemClickListener;public class MainActivity extends Activity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        findViewById(R.id.button1).setOnClickListener(new OnClickListener() {            @Override            public void onClick(View v) {                //创建PopupMenu                PopupMenu pop=new PopupMenu(MainActivity.this, v);                //解析文件                getMenuInflater().inflate(R.menu.main, pop.getMenu());                //显示                pop.show();                //监听PopupMenu菜单                pop.setOnMenuItemClickListener(new OnMenuItemClickListener() {                    @Override                    public boolean onMenuItemClick(MenuItem item) {                        int id=item.getItemId();                        if(id==R.id.item2){                            finish();                        }                        return false;                    }                });            }        });    }}

main.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    tools:context="com.example.android_829_menu.MainActivity" >    <item        android:id="@+id/item0"        android:orderInCategory="100"        android:showAsAction="never"        android:title="登录"/>    <item        android:id="@+id/item1"        android:orderInCategory="100"        android:showAsAction="never"        android:title="注册"/>    <item        android:id="@+id/item2"        android:orderInCategory="100"        android:showAsAction="never"        android:title="退出"/></menu>

activity_main.xml

<RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context="com.example.android_829_menu.MainActivity" >    <Button        android:id="@+id/button1"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_alignParentTop="true"        android:layout_centerHorizontal="true"        android:layout_marginTop="137dp"        android:text="Button" /></RelativeLayout>

OptionMenu
点击menu按钮,显示菜单

@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); //添加子菜单          SubMenu sub1=menu.addSubMenu("设置");          sub1.add(1,SET_ITEM1,300,"设置声音");        sub1.add(1,SET_ITEM2,400,"设置桌面");        SubMenu sub2=menu.addSubMenu("选择");        sub2.add(1,SET_ITEM3,300,"选择一");        sub2.add(1,SET_ITEM4,400,"选择二");          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();        if (id == R.id.item0) {            return true;        }else if(id==R.id.item1){            finish();            return true;        }else if(id==R.id.item2){            return true;        }        return super.onOptionsItemSelected(item);    }

ContextMenu
长按控件,显示菜单

TextView tv;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        tv=(TextView) findViewById(R.id.textView1);        //注册tv,当用户长按tv时,触发上下文菜单        registerForContextMenu(tv);    }  //创建上下文菜单    @Override    public void onCreateContextMenu(ContextMenu menu, View v,            ContextMenuInfo menuInfo) {        // TODO Auto-generated method stub        super.onCreateContextMenu(menu, v, menuInfo);        menu.addSubMenu(0, 1, 0, "收藏");        menu.addSubMenu(0, 2, 0, "删除");        Toast.makeText(MainActivity.this, "长按后", Toast.LENGTH_SHORT).show();    }   @Override    public boolean onContextItemSelected(MenuItem item) {           if(item.getItemId() == 1){                Toast.makeText(this, "收藏", Toast.LENGTH_SHORT).show();            }else if(item.getItemId() == 2){                Toast.makeText(this, "删除", Toast.LENGTH_SHORT).show();            }           return super.onContextItemSelected(item);    }

对话框

对话框是在当前界面弹出的一个小窗口,用于显示重要提示信息,提示用户输入信息,确认信息,或者显示某种状态,如下载进度,退出提示等等。一般情况下,用户要与对话框进行交互,然后返回到被遮盖的界面以继续运行当前的应用程序。
AlertDialog常用方法
要创建一个AlertDialog就要用到AlertDialog.Builder中的create()方法
1. setTitle:为对话框设置标题
2. setIcon:为对话框设置图标
3. setMessage:为对话框设置内容
4. setView:为对话框设置自定义样式
5. setItems:设置对话框要显示的一个list
6. setMutiChoiceItems:设置对话框显示一系列的复选框
7. setSingleChoiceItems:设置单选按钮
8. setNeutralButton:普通按钮
9. setPositiveButton:确认按钮
10. setNegativeButton:取消按钮
ProgressDialog

MainActivity.javaimport android.app.Activity;import android.app.ProgressDialog;import android.app.AlertDialog.Builder;import android.content.DialogInterface;import android.os.Bundle;import android.util.Log;import android.view.LayoutInflater;import android.view.View;import android.view.View.OnClickListener;public class MainActivity extends Activity implements OnClickListener {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        findViewById(R.id.button1).setOnClickListener(this);        findViewById(R.id.button2).setOnClickListener(this);        findViewById(R.id.button3).setOnClickListener(this);        findViewById(R.id.button4).setOnClickListener(this);        findViewById(R.id.button5).setOnClickListener(this);        findViewById(R.id.button6).setOnClickListener(this);    }    @Override    public void onClick(View v) {        int id=v.getId();        if(id==R.id.button1){            //默认对话框            onCreateNormalDialog();        }else if(id==R.id.button2){            //单选按钮对话框            onCreateSingleChoiceItems();        }else if(id==R.id.button3){            //多选按钮对话框            onCreateMutiChoiceItems();        }else if(id==R.id.button4){            //列表按钮对话框            onCreateItems();        }else if(id==R.id.button5){            //自定义对话框            createDialog();        }else if(id==R.id.button6){            CreateProgressDialog();        }    }    private void CreateProgressDialog() {        final ProgressDialog pd=ProgressDialog.show(this, "搜索网络", "请耐心等待...");        new Thread(new Runnable() {            @Override            public void run() {                try {                    Thread.sleep(3000);                } catch (InterruptedException e) {                    // TODO Auto-generated catch block                    e.printStackTrace();                }                //结束ProgressDialog                pd.dismiss();            }        }).start();    }    private void createDialog() {        Builder builder=new Builder(this);        builder.setTitle("注册");        //自定义布局        View view =LayoutInflater.from(this).inflate(R.layout.register, null);        builder.setView(view);        builder.setPositiveButton("确定", null);        builder.setNegativeButton("取消", null);        builder.create();        builder.show();    }    private void onCreateItems() {        Builder b=new Builder(this);        b.setIcon(R.drawable.ic_launcher);        b.setTitle("部门成员列表");        String items[]={"项目经理","策划","测试","美工","程序员"};        b.setItems(items, new DialogInterface.OnClickListener() {            @Override            public void onClick(DialogInterface dialog, int which) {              Log.d("Tag", "which="+which);            }        });        b.create();        b.show();    }    private void onCreateMutiChoiceItems() {        Builder b=new Builder(this);        b.setTitle("爱好");        b.setIcon(R.drawable.ic_launcher);        String items[]={"篮球","足球","乒乓球","排球"};        b.setMultiChoiceItems(items, null, new DialogInterface.OnMultiChoiceClickListener() {            @Override            public void onClick(DialogInterface dialog, int which, boolean isChecked) {                Log.d("Tag", "which="+which+",isChecked="+isChecked);            }        });        b.create();        b.show();    }    private void onCreateSingleChoiceItems() {        Builder builder =new Builder(this);        builder.setTitle("请选择性别");        builder.setIcon(R.drawable.ic_launcher);        String items[]={"男","女","保密"};        builder.setSingleChoiceItems(items, 2, new DialogInterface.OnClickListener() {            @Override            public void onClick(DialogInterface dialog, int which) {                Log.d("Tag", "which="+which);            }        });        builder.create();        builder.show();    }    private void onCreateNormalDialog() {        Builder builder=new Builder(this);        builder.setTitle("退出");        builder.setIcon(R.drawable.ic_launcher);        builder.setMessage("确定要退出吗?");        builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {            @Override            public void onClick(DialogInterface dialog, int which) {                finish();            }        });        builder.setNeutralButton("中间", null);        builder.setNegativeButton("取消", null);        builder.create();        builder.show();    }}

Register.xml

<?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" >    <EditText        android:id="@+id/editText1"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:ems="10"         android:hint="输入用户名">        <requestFocus />    </EditText>    <EditText        android:id="@+id/editText2"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:ems="10"        android:inputType="textPassword"        android:hint="输入密码" />    <EditText        android:id="@+id/editText3"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:ems="10"        android:inputType="textPassword"         android:hint="输入密码"/></LinearLayout>

activity_main.xml

<RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context="com.example.android_829_alertdialog.MainActivity" >    <LinearLayout        android:layout_width="match_parent"        android:layout_height="match_parent"        android:layout_alignParentTop="true"        android:layout_centerHorizontal="true"        android:orientation="vertical" >        <Button            android:id="@+id/button1"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="普通对话框" />        <Button            android:id="@+id/button2"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="单选按钮对话框" />        <Button            android:id="@+id/button3"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="多选按钮对话框" />        <Button            android:id="@+id/button4"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="列表对话框" />        <Button            android:id="@+id/button5"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="自定义对话框" />        <Button            android:id="@+id/button6"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="进度条对话框" />    </LinearLayout></RelativeLayout>

PopupWindow
PopupWindow这个类用来实现一个弹出框,可以使用任意布局View作为其内容,这个弹出框悬浮在当前activity之上。
构造PopupWindow
注意:生成一个PopupWindow必须设置三个条件:View contentView,int Width,int height, 少任意一个就不能弹出PopupWindow。

1 1
原创粉丝点击