博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android开发 ---xml构建选项菜单、上下文菜单(长按显示菜单)、发通知、发送下载通知...
阅读量:4974 次
发布时间:2019-06-12

本文共 9307 字,大约阅读时间需要 31 分钟。

 

 

1、activity_main.xml

  描述:

    定义了一个TextView和三个按钮

2、MainActivity.java

   描述:

 

 

 

 

 

 

package com.nf.android_menu_notifaction;import android.app.Activity;import android.app.Notification;import android.app.NotificationManager;import android.app.PendingIntent;import android.content.Intent;import android.graphics.BitmapFactory;import android.graphics.Color;import android.os.Bundle;import android.os.SystemClock;import android.view.ContextMenu;import android.view.Menu;import android.view.MenuItem;import android.view.SubMenu;import android.view.View;import android.widget.LinearLayout;import android.widget.TextView;import android.widget.Toast;import java.text.SimpleDateFormat;import java.util.Date;public class MainActivity extends Activity {    private TextView mainText;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        mainText = (TextView)findViewById(R.id.mainText);        //为mainText绑定一个上下文菜单,注册上下文菜单        registerForContextMenu(mainText);    }    //-----------------------通过代码创建选项菜单------------------------------------------    //1、创建选项菜单    @Override    public boolean onCreateOptionsMenu(Menu menu){        Intent intent = new Intent(this,NewFileActivity.class);        intent.putExtra("message","Hello");        menu.add(0,0,0,"新建").setIntent(intent);        menu.add(0,1,1,"打开");        menu.add(1,2,0,"保存");        //添加子菜单        SubMenu sbMenu = menu.addSubMenu("颜色");        sbMenu.add(11,4,0,"红色");        sbMenu.add(11,5,1,"黄色");        sbMenu.add(11,6,2,"绿色");        menu.add(1,3,1,"退出");        return super.onCreateOptionsMenu(menu);    }    //2、选项菜单打开之前执行的操作    @Override    public boolean onPrepareOptionsMenu(Menu menu){        //菜单打开前进行一些设置      //将第一个菜单选择项设置为隐藏,或禁止点击        menu.getItem(0).setEnabled(false);        return super.onPrepareOptionsMenu(menu);    }    //3、选项菜单中菜单项被选中    @Override    public boolean onOptionsItemSelected(MenuItem item){        switch (item.getItemId()){            case 1:                Toast.makeText(this,"你选中了打开",Toast.LENGTH_SHORT).show();                break;            case 2:                Toast.makeText(this,"你选中了保存",Toast.LENGTH_SHORT).show();                break;            case 3:                Toast.makeText(this,"你选中了退出",Toast.LENGTH_SHORT).show();                break;            case 4:           //改变文本颜色                mainText.setTextColor(Color.RED);                break;            case 5:                mainText.setTextColor(Color.YELLOW);                break;            case 6:                mainText.setTextColor(Color.GREEN);                break;        }        return super.onOptionsItemSelected(item);    }    public void test_1(View view){        Intent intent = new Intent(this,NewFileActivity.class);        startActivity(intent);    }    //--------------------------通过代码创建上下文菜单------------------------------------   //当你长按文本内容时,就会弹出下列菜单    @Override    public void onCreateContextMenu(ContextMenu menu,View v,ContextMenu.ContextMenuInfo menuInfo){        SubMenu sm = menu.addSubMenu(3,7,0,"字体设置");      //给字体设置菜单设置菜单项        sm.add(3,9,0,"25sp");        sm.add(3,10,1,"35sp");        sm.add(3,11,2,"45sp");        menu.add(3,8,1,"删除");        super.onCreateContextMenu(menu,v,menuInfo);    }    private LinearLayout main;   //当你点击字体设置菜单中的某一项时    @Override    public boolean onContextItemSelected(MenuItem item){        switch (item.getItemId()){            case 8:           //点击的id为8时是删除                main = (LinearLayout)findViewById(R.id.activity_main);                main.removeView(mainText);                break;            case 9:           //点击的id为9时是将字体设置为25sp                mainText.setTextSize(25);                break;            case 10:           //同上                mainText.setTextSize(35);                break;            case 11:           //同上                mainText.setTextSize(45);                break;        }        return super.onContextItemSelected(item);    }    //------------------------------发通知------------------------------    //定义一个NotifactionManager对象    private NotificationManager manager;   //创建一个日历对象    private SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");    public void test_2(View view){        //获取NotifactionManager对象        manager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);        //构建一个Notifaction的Builder对象        Notification.Builder builder = new Notification.Builder(this);        //设置通知相关信息        builder.setTicker("新的通知");//设置信息提示        builder.setSmallIcon(R.mipmap.ic_launcher);//设置通知提示图标      //设置通知人的头像        builder.setLargeIcon(BitmapFactory.decodeResource(getResources(),R.drawable.user2));      //设置通知信息的标题        builder.setContentTitle("部门通知");      //设置通知信息的文本内容        builder.setContentText("今天中午一点在报告厅一开部门会议,"+sdf.format(new Date()));        builder.setAutoCancel(true);//查看后自动取消        builder.setWhen(SystemClock.currentThreadTimeMillis());//什么时候发出的通知        builder.setDefaults(Notification.DEFAULT_ALL);//消息提示模式        //设置震动规律        builder.setVibrate(new long[]{1000,2000,1000,3000});        //设置声音        //builder.setSound();        //设置灯        builder.setLights(Color.GREEN,1000,1000); //设置点击通知后执行的动作  点击通知后,跳转页面显示内容        Intent intent = new Intent(this,NewFileActivity.class);        intent.putExtra("message","今天中午一点在报告厅一开部门会议,请大家准时参加,通知发布时间:"+sdf.format(new Date()));      //获取时间        int requestId = (int) new Date().getTime();      //pendingIntent是一种特殊的Intent。主要的区别在于Intent的执行立刻的,而pendingIntent的执行不是立刻的      //第一个参数连接上下文的context
// 第二个参数是对PendingIntent的描述,请求值不同Intent就不同        // 第三个参数是一个Intent对象,包含跳转目标        // 第四个参数有4种状态
PendingIntent pendingIntent = PendingIntent.getActivity(this,requestId,intent,PendingIntent.FLAG_UPDATE_CURRENT);        builder.setContentIntent(pendingIntent);        //发出通知      //发出通知,参数是(通知栏的id,设置内容的对象)     
manager.notify(requestId,builder.build());    }    //发送一个下载通知    Notification.Builder builder;    public void test_3(View view){        manager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);        builder = new Notification.Builder(this);             builder.setTicker("文件开始下载");        builder.setSmallIcon(R.mipmap.ic_launcher);        builder.setContentTitle("文件下载");        builder.setContentText("文件正在下载中......");        builder.setWhen(SystemClock.currentThreadTimeMillis());        builder.setDefaults(Notification.DEFAULT_LIGHTS);        builder.setProgress(100,0,false);        //模拟正在执行下载        new Thread(new Runnable() {            @Override            public void run() {                for (int i=1;i<=100;i++){
             builder.setProgress(100,i,false); if (i ==100){ builder.setContentText("文件下载完毕!"); } manager.notify(1,builder.build()); SystemClock.sleep(100);//模拟下载 } manager.cancel(1); } }).start(); }

3、activity_new_file.xml

4、NewFileActivity.java

 

 

 

 

 

package com.nf.android_menu_notifaction;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.ContextMenu;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.widget.LinearLayout;import android.widget.Toast;public class NewFileActivity extends Activity {    private LinearLayout main;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_new_file);         Intent intent = getIntent();        String msg = intent.getStringExtra("message");        if (msg!=null&&msg.length()>0){            Toast.makeText(this,msg,Toast.LENGTH_SHORT).show();        }        main = (LinearLayout)findViewById(R.id.acticity_new_file);      //为activity_new_file绑定一个上下文菜单,注册上下文菜单        registerForContextMenu(main);    }    //--------------------------使用XML构建选项菜单---------------------------------------    @Override    public boolean onCreateOptionsMenu(Menu menu){        //投影加载XML文件        getMenuInflater().inflate(R.menu.menu_option,menu);        return super.onCreateOptionsMenu(menu);    }    @Override    public boolean onOptionsItemSelected(MenuItem item){        switch(item.getItemId()){            case R.id.m1:                Toast.makeText(this,"吃饭",Toast.LENGTH_SHORT).show();                break;        }        return super.onOptionsItemSelected(item);    }    //------------------------使用XML构建上下文菜单----------------------------------------    @Override    public void onCreateContextMenu(ContextMenu menu, View v,ContextMenu.ContextMenuInfo menuInfo){        getMenuInflater().inflate(R.menu.menu_option,menu);        super.onCreateContextMenu(menu,v,menuInfo);    }}

5、menu/menu_option.xml

6、AndroidManifest.xml

7、头像资源

 

转载于:https://www.cnblogs.com/zn615/p/8242494.html

你可能感兴趣的文章
软件开发文档以及项目开发流程理解
查看>>
2019微软Power BI 每月功能更新系列——Power BI 4月版本功能完整解读
查看>>
truncate 、delete、drop的区别
查看>>
DynamoDB 中的限制
查看>>
mysql做主从配置
查看>>
Docker练习例子:基于 VNCServer + noVNC 构建 Docker 桌面系统
查看>>
《码出高效 Java开发手册》第六章 数据结构与集合
查看>>
Python获取本机外网IP
查看>>
sleep和wait的区别
查看>>
[导入]弯管机3D DEMO
查看>>
关于51单片机使用printf串口调试
查看>>
软件工程-读书笔记(1-3章)
查看>>
Sublime 快捷键
查看>>
GNU make manual 翻译(二十六)
查看>>
poj1436
查看>>
iOS 电话在后台运行时,我的启动图片被压缩
查看>>
MySQL修复打不开的视图定义
查看>>
PHP max_execution_time 超时
查看>>
NTBootAutofix:一款极为优秀的自动修复XP/VISTA/WIN7系统引导的工具
查看>>
js获取对象、数组的实际长度,元素实际个数
查看>>