Android课程---进度条及菜单的学习

<?xml version="1.0" encoding="utf-8"?>
<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:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:orientation="vertical"
    tools:context="com.hanqi.test5.UIActivity2">
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="长按触发上下文菜单"
        android:id="@+id/bt_changan"/>
    <ProgressBar
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/pb_1"/>
    <ProgressBar
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        style="?android:attr/progressBarStyleHorizontal"
        android:max="100"
        android:progress="50"
        android:secondaryProgress="70"
        android:id="@+id/pb_2" /><!--max:最大值   progress:当前进度  secondaryProgress:第二进度值-->
    <ProgressBar
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        style="@android:style/Widget.ProgressBar.Small"/>
    <ProgressBar
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        style="@android:style/Widget.ProgressBar.Large"/>
    <ProgressBar
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        style="@android:style/Widget.ProgressBar.Large.Inverse"/>
    <ProgressBar
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        style="@android:style/Widget.ProgressBar.Inverse"/><!--不可拖动-->
    <SeekBar
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:max="100"
        android:progress="20"
        android:secondaryProgress="50"
        android:id="@+id/sb_1"/><!--可拖动-->
    <RatingBar
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:numStars="7"
        android:rating="3.5"
        android:isIndicator="true"/>
    <!--星星进度条 numStars:星星数目 rating:当前默认星级 isIndicator:是否允许修改星级:true为不可修改-->

</LinearLayout>
package com.hanqi.test5;

import android.app.Activity;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.SubMenu;
import android.view.View;
import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.SeekBar;
import android.widget.Toast;

public class UIActivity2 extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_ui2);
        Button bt_changan = (Button)findViewById(R.id.bt_changan);
        bt_changan.setOnCreateContextMenuListener(this);/*this代表当前Activity,实现了这个接口*/

        //进度条
        //有final时,生命周期长,不加final的话就只是当前方法的,加final可以延长生命周期,或者定义成员变量
        final ProgressBar pb_1 =(ProgressBar)findViewById(R.id.pb_1);
        final ProgressBar pb_2 =(ProgressBar)findViewById(R.id.pb_2);
        final SeekBar sb_1 =(SeekBar)findViewById(R.id.sb_1);

        sb_1.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            //onProgressChanged进度条变化,进度改变就会触发
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                pb_2.setProgress(seekBar.getProgress());
            }

            //onStartTrackingTouch开始拖动
            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {

            }

            //onStopTrackingTouch停止拖动
            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {
                pb_2.setProgress(seekBar.getProgress());

                if (seekBar.getProgress() == seekBar.getMax())
                {
                    //设置不可见
                    pb_1.setVisibility(View.GONE);
                    /*INVISIBLE不可见(占空间) VISIBLE可见 GONE不可见(不占空间)*/
                }
                else
                {
                    pb_1.setVisibility(View.VISIBLE);
                }

            }
        });

    }

    @Override
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
        menu.add(0,1,0,"添加");
        menu.add(0,2,1,"修改");
        menu.add(0, 3, 2, "删除");
        SubMenu m = menu.addSubMenu(0, 4, 3, "子菜单");

        m.add(0,41,0,"子菜单项1");
        m.add(0,42,1,"子菜单项2");
        m.add(0,43,2,"子菜单项3");
        m.add(0,44,3,"子菜单项4");
//        MenuInflater mi =getMenuInflater();
//        mi.inflate(R.menu.mymenu,menu);
        super.onCreateContextMenu(menu, v, menuInfo);
    }

    @Override
    public boolean onContextItemSelected(MenuItem item) {
        switch (item.getItemId())
        {
            case R.id.it_2:
                Toast.makeText(UIActivity2.this, "触发了添加1功能", Toast.LENGTH_SHORT).show();
                break;
            case R.id.it_1:
                Toast.makeText(UIActivity2.this, "触发了删除1功能", Toast.LENGTH_SHORT).show();
                break;
        }
        return super.onContextItemSelected(item);
    }

    @Override
    //重写  创建选项菜单的方法
    public boolean onCreateOptionsMenu(Menu menu) {

        //添加菜单项
        //纯编码方式
//        menu.add(0,1,0,"添加");
//        menu.add(0,2,2,"删除");
//        menu.add(0,3,1,"修改");

        //加载菜单文件方式
        //1.获取菜单加载器
        MenuInflater mi =getMenuInflater();
        mi.inflate(R.menu.mymenu,menu);
        return super.onCreateOptionsMenu(menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {

        //Toast.makeText(UIActivity2.this, "选中的菜单项是" + item.getTitle(), Toast.LENGTH_SHORT).show();
        //根据菜单项的不同响应不同功能
        switch (item.getItemId())
        {
            case 1:
                Toast.makeText(UIActivity2.this, "触发了添加功能", Toast.LENGTH_SHORT).show();
                break;
            case 2:
                Toast.makeText(UIActivity2.this, "触发了删除功能", Toast.LENGTH_SHORT).show();
                break;
            case 3:
                Toast.makeText(UIActivity2.this, "触发了修改功能", Toast.LENGTH_SHORT).show();
                break;
            case R.id.it_2:
                Toast.makeText(UIActivity2.this, "触发了添加1功能", Toast.LENGTH_SHORT).show();
                break;
            case R.id.it_1:
                Toast.makeText(UIActivity2.this, "触发了删除1功能", Toast.LENGTH_SHORT).show();
                break;
        }

        return super.onOptionsItemSelected(item);
    }
}

mymenu.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:id="@+id/it_1" android:title="删除1"
        android:icon="@drawable/delete"></item>
    <item android:id="@+id/it_2" android:title="添加1" android:icon="@drawable/open"></item>
</menu>

效果实现图:

时间: 2024-10-06 05:07:53

Android课程---进度条及菜单的学习的相关文章

Android自定义进度条样式

最近在做一个widget,上面需要一个progressbar,产品经理和设计师给出来的东西是要实现一个圆角的progress和自定义的颜色,研究一小下,分享出来给大家哦. 测试于:Android4.0+ 操作步骤: 1.创建你的layout文件引用progressbar如下,标红处引用你自定的样式: <ProgressBar android:id="@+id/progressDownload" style="?android:attr/progressBarStyleH

Android自定义进度条-带文本(文字进度)的水平进度条(ProgressBar)

/** * 带文本提示的进度条 */ public class TextProgressBar extends ProgressBar { private String text; private Paint mPaint; public TextProgressBar(Context context) { super(context); initText(); } public TextProgressBar(Context context, AttributeSet attrs, int d

[Android]组件-进度条1

多式样ProgressBar 普通圆形ProgressBar 该类型进度条也就是一个表示运转的过程,例如发送短信,连接网络等等,表示一个过程正在执行中. 一般只要在XML布局中定义就可以了. <progressBar android:id="@+id/widget43" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layou

Android中进度条类型的控件定义和妙用技巧

Android中进度条控件有3个(不算ProgressDialog),分别是ProgressBar,SeekBar和RatingBar,对于自定义样式来说又得按照需求分为2中情况,第一种是刻度型,第二种是循环类型. 第一种是"刻度型",也就是他有起点和终点,起点值小于终点值 这种样式的修改,要修改三个属性即可 分别是:背景(主要是进度的轨道样式),第一级别滚动条progressDrawable,第二级别progressDrawable 遗憾的是Android提供的api很难设置,不过可

Android之进度条2

我之前有写过一篇“Android之进度条1”,那个是条形的进度条(显示数字进度),这次实现圆形进度条. 点击查看Android之进度条1:http://www.cnblogs.com/caidupingblogs/p/5102745.html> MainActivity继承Activity实现Runnable接口: package com.cdp.progressbar; import android.app.Activity; import android.os.Bundle; import

android 自定义进度条颜色

先看图 基于产品经理各种自定义需求,经过查阅了解,下面是自己对Android自定义进度条的学习过程!   这个没法了只能看源码了,还好下载了源码, sources\base\core\res\res\  下应有尽有,修改进度条颜色只能找progress ,因为是改变样式,首先找styles.xml 找到xml后,进去找到 [html] view plaincopyprint? <span style="font-size: 18px;">    <style name

android的进度条使用

android的进度条 1.实现的效果 2.布局代码 先写一个my_browser.xml文件 存放WebView <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" a

Android -- ProgressBar(进度条的使用)

我们在开发程序是经常会需要软件全屏显示.自定义标题(使用按钮等控件)和其他的需求,今天这一讲就是如何控制Android应用程序的窗体显示. requestWindowFeature可以设置的值有:(具体参考 点击链接查看效果)    1.DEFAULT_FEATURES:系统默认状态,一般不需要指定        // 2.FEATURE_CONTEXT_MENU:启用ContextMenu,默认该项已启用,一般无需指定        // 3.FEATURE_CUSTOM_TITLE:自定义标

android 14 进度条和拖动条

进度条: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <ProgressBar 默认进度条 andr