android基础-对话框

来源:互联网 发布:善领dsa2016最新数据 编辑:程序博客网 时间:2024/05/17 23:40

1.对话框

这里写图片描述

1.1使用AlertDialog创建对话框
这里写图片描述

public class MainActivity extends Activity {    TextView show;    String[] items = new String[] {            "疯狂Java讲义", "疯狂Ajax讲义",            "轻量级Java EE企业应用实战",            "疯狂Android讲义" };    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        show = (TextView) findViewById(R.id.show);    }    public void simple(View source)    {        AlertDialog.Builder builder = new AlertDialog.Builder(this)                // 设置对话框标题                .setTitle("简单对话框")                // 设置图标                .setIcon(R.drawable.tools)                .setMessage("对话框的测试内容\n第二行内容");        // 为AlertDialog.Builder添加“确定”按钮        setPositiveButton(builder);        // 为AlertDialog.Builder添加“取消”按钮        setNegativeButton(builder)                .create()                .show();    }    public void simpleList(View source)    {        AlertDialog.Builder builder = new AlertDialog.Builder(this)                // 设置对话框标题                .setTitle("简单列表对话框")                // 设置图标                .setIcon(R.drawable.tools)                // 设置简单的列表项内容                .setItems(items, new DialogInterface.OnClickListener()                {                    @Override                    public void onClick(DialogInterface dialog, int which)                    {                        show.setText("你选中了《" + items[which] + "》");                    }                });        // 为AlertDialog.Builder添加“确定”按钮        setPositiveButton(builder);        // 为AlertDialog.Builder添加“取消”按钮        setNegativeButton(builder)                .create()                .show();    }    public void singleChoice(View source)    {        AlertDialog.Builder builder = new AlertDialog.Builder(this)                // 设置对话框标题                .setTitle("单选列表项对话框")                // 设置图标                .setIcon(R.drawable.tools)                // 设置单选列表项,默认选中第二项(索引为1)                .setSingleChoiceItems(items, 1, new DialogInterface.OnClickListener()                {                    @Override                    public void onClick(DialogInterface dialog, int which)                    {                        show.setText("你选中了《" + items[which] + "》");                    }                });        // 为AlertDialog.Builder添加“确定”按钮        setPositiveButton(builder);        // 为AlertDialog.Builder添加“取消”按钮        setNegativeButton(builder)                .create()                .show();    }    public void multiChoice(View source)    {        AlertDialog.Builder builder = new AlertDialog.Builder(this)                // 设置对话框标题                .setTitle("多选列表项对话框")                // 设置图标                .setIcon(R.drawable.tools)                // 设置多选列表项,设置勾选第2项、第4项                .setMultiChoiceItems(items                        , new boolean[]{false , true ,false ,true}, null);        // 为AlertDialog.Builder添加“确定”按钮        setPositiveButton(builder);        // 为AlertDialog.Builder添加“取消”按钮        setNegativeButton(builder)                .create()                .show();    }    public void customList(View source)    {        AlertDialog.Builder builder = new AlertDialog.Builder(this)                // 设置对话框标题                .setTitle("自定义列表项对话框")                // 设置图标                .setIcon(R.drawable.tools)                // 设置自定义列表项                .setAdapter(new ArrayAdapter<String>(this                        , R.layout.array_item                        , items), null);        // 为AlertDialog.Builder添加“确定”按钮        setPositiveButton(builder);        // 为AlertDialog.Builder添加“取消”按钮        setNegativeButton(builder)                .create()                .show();    }    public void customView(View source)    {        // 装载app\src\main\res\layout\login.xml界面布局文件        TableLayout loginForm = (TableLayout)getLayoutInflater()                .inflate( R.layout.login, null);        new AlertDialog.Builder(this)                // 设置对话框的图标                .setIcon(R.drawable.tools)                // 设置对话框的标题                .setTitle("自定义View对话框")                // 设置对话框显示的View对象                .setView(loginForm)                // 为对话框设置一个“确定”按钮                .setPositiveButton("登录", new DialogInterface.OnClickListener() {                    @Override                    public void onClick(DialogInterface dialog,                                        int which) {                        // 此处可执行登录处理                    }                })                // 为对话框设置一个“取消”按钮                .setNegativeButton("取消", new DialogInterface.OnClickListener()                {                    @Override                    public void onClick(DialogInterface dialog,                                        int which)                    {                        // 取消登录,不做任何事情                    }                })                // 创建并显示对话框                .create()                .show();    }    private AlertDialog.Builder setPositiveButton(            AlertDialog.Builder builder)    {        // 调用setPositiveButton方法添加“确定”按钮        return builder.setPositiveButton("确定", new DialogInterface.OnClickListener()        {            @Override            public void onClick(DialogInterface dialog, int which)            {                show.setText("单击了【确定】按钮!");            }        });    }    private AlertDialog.Builder setNegativeButton(            AlertDialog.Builder builder)    {        // 调用setNegativeButton方法添加“取消”按钮        return builder.setNegativeButton("取消", new DialogInterface.OnClickListener()        {            @Override            public void onClick(DialogInterface dialog, int which)            {                show.setText("单击了【取消】按钮!");            }        });    }}

1.2 使用PopupWindow
这里写图片描述

public class MainActivity extends Activity{    @Override    public void onCreate(Bundle savedInstanceState)    {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        // 装载R.layout.popup对应的界面布局        View root = this.getLayoutInflater().inflate(R.layout.popup, null);        // 创建PopupWindow对象        final PopupWindow popup = new PopupWindow(root, 560, 720);        Button button = (Button) findViewById(R.id.bn);        button.setOnClickListener(new OnClickListener()        {            @Override            public void onClick(View v)            {                // 以下拉方式显示                // popup.showAsDropDown(v);                //将PopupWindow显示在指定位置                popup.showAtLocation(findViewById(R.id.bn),                    Gravity.CENTER, 20,20);            }        });        // 获取PopupWindow中的“关闭”按钮        root.findViewById(R.id.close).setOnClickListener(            new View.OnClickListener()            {                public void onClick(View v)                {                    // 关闭PopupWindow                    popup.dismiss(); // ①                }            });    }}
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical"     android:layout_width="match_parent"    android:layout_height="match_parent"    android:gravity="center_horizontal"><ImageView     android:layout_width="240dp"    android:layout_height="wrap_content"    android:src="@drawable/java"    /><Button    android:id="@+id/close"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:text="关闭"     /></LinearLayout>

1.3 使用ProgressDialog创建进度对话框
这里写图片描述

public class MainActivity extends Activity{    final static int MAX_PROGRESS = 100;    // 该程序模拟填充长度为100的数组    private int[] data = new int[50];    // 记录进度对话框的完成百分比    int progressStatus = 0;    int hasData = 0;    ProgressDialog pd1,pd2;    // 定义一个负责更新的进度的Handler    Handler handler = new Handler()    {        @Override        public void handleMessage(Message msg)        {            // 表明消息是由该程序发送的            if (msg.what == 0x123)            {                pd2.setProgress(progressStatus);            }        }    };    @Override    public void onCreate(Bundle savedInstanceState)    {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);    }    public void showSpinner(View source)    {        // 调用静态方法显示环形进度条        ProgressDialog.show(this, "任务执行中"                , "任务执行中,请等待", false, true); // ①    }    public void showIndeterminate(View source)    {        pd1 = new ProgressDialog(MainActivity.this);        // 设置对话框的标题        pd1.setTitle("任务正在执行中");        // 设置对话框显示的内容        pd1.setMessage("任务正在执行中,敬请等待...");        // 设置对话框能用“取消”按钮关闭        pd1.setCancelable(true);        // 设置对话框的进度条风格        pd1.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);        // 设置对话框的进度条是否显示进度        pd1.setIndeterminate(true);        pd1.show(); // ②    }    public void showProgress(View source)    {        // 将进度条的完成进度重设为0        progressStatus = 0;        // 重新开始填充数组        hasData = 0;        pd2 = new ProgressDialog(MainActivity.this);        pd2.setMax(MAX_PROGRESS);        // 设置对话框的标题        pd2.setTitle("任务完成百分比");        // 设置对话框显示的内容        pd2.setMessage("耗时任务的完成百分比");        // 设置对话框不能用“取消”按钮关闭        pd2.setCancelable(false);        // 设置对话框的进度条风格        pd2.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);        // 设置对话框的进度条是否显示进度        pd2.setIndeterminate(false);        pd2.show(); // ③        new Thread()        {            public void run()            {                while (progressStatus < MAX_PROGRESS)                {                    // 获取耗时操作的完成百分比                    progressStatus = MAX_PROGRESS                            * doWork() / data.length;                    // 发送空消息到Handler                    handler.sendEmptyMessage(0x123);                }                // 如果任务已经完成                if (progressStatus >= MAX_PROGRESS)                {                    // 关闭对话框                    pd2.dismiss();                }            }        }.start();    }    // 模拟一个耗时的操作    public int doWork()    {        // 为数组元素赋值        data[hasData++] = (int) (Math.random() * 100);        try        {            Thread.sleep(100);        }        catch (InterruptedException e)        {            e.printStackTrace();        }        return hasData;    }}
<?xml version="1.0" encoding="utf-8"?><LinearLayout    xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:gravity="center_horizontal">    <Button        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="环形进度条"        android:onClick="showSpinner" />    <Button        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="不显示进度的进度条"        android:onClick="showIndeterminate" />    <Button        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="显示进度的进度条"        android:onClick="showProgress" /></LinearLayout>

这里写图片描述

2.0 使用活动条(ActionBar)

2.1 使用ActionBar实现Tab导航
这里写图片描述

整段垮掉,不知道为什么运行不了

public class MainActivity extends FragmentActivity        implements ActionBar.TabListener{    ViewPager viewPager;    ActionBar actionBar;    @Override    public void onCreate(Bundle savedInstanceState)    {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        // 获取ActionBar对象        actionBar = getActionBar();        // 获取ViewPager        viewPager = (ViewPager) findViewById(R.id.pager);        // 创建一个FragmentPagerAdapter对象,该对象负责为ViewPager提供多个Fragment        FragmentPagerAdapter pagerAdapter = new FragmentPagerAdapter(                getSupportFragmentManager())        {            // 获取第position位置的Fragment            @Override            public Fragment getItem(int position)            {                Fragment fragment = new DummyFragment();                Bundle args = new Bundle();                args.putInt(DummyFragment.ARG_SECTION_NUMBER, position + 1);                fragment.setArguments(args);                return fragment;            }            // 该方法的返回值i表明该Adapter总共包括多少个Fragment            @Override            public int getCount()            {                return 3;            }            // 该方法的返回值决定每个Fragment的标题            @Override            public CharSequence getPageTitle(int position)            {                switch (position)                {                    case 0:                        return "第一页";                    case 1:                        return "第二页";                    case 2:                        return "第三页";                }                return null;            }        };        // 设置ActionBar使用Tab导航方式        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);        // 遍历pagerAdapter对象所包含的全部Fragment        // 每个Fragment对应创建一个Tab标签        for (int i = 0; i < pagerAdapter.getCount(); i++)        {            actionBar.addTab(actionBar.newTab()                    .setText(pagerAdapter.getPageTitle(i))                    .setTabListener(this));        }        // 为ViewPager组件设置FragmentPagerAdapter        viewPager.setAdapter(pagerAdapter); // ①        // 为ViewPager组件绑定事件监听器        viewPager.setOnPageChangeListener(                new ViewPager.SimpleOnPageChangeListener()                {                    // 当ViewPager显示的Fragment发生改变时激发该方法                    @Override                    public void onPageSelected(int position)                    {                        actionBar.setSelectedNavigationItem(position);                    }                });    }    @Override    public void onTabUnselected(ActionBar.Tab tab,                                FragmentTransaction fragmentTransaction)    {    }    // 当指定Tab被选中时激发该方法    @Override    public void onTabSelected(ActionBar.Tab tab,                              FragmentTransaction fragmentTransaction)    {        viewPager.setCurrentItem(tab.getPosition());  // ②    }    @Override    public void onTabReselected(ActionBar.Tab tab,                                FragmentTransaction fragmentTransaction)    {    }}

这个fragment没搞明白不知道咋回事,不兼容,一个是自己创建的Fragment一个是v4下的Fragment好像new是不对的

原创粉丝点击