Android之用PopupWindow实现弹出菜单

Android 9.0 SystemUI 状态栏屏蔽弹出的悬浮式通知 在9.0的系统ROM产品定制化开发中,在systemui的状态栏中,会在有闹钟 wifi连接等特殊弹窗通知的时候,会在接收到系统通知时,弹窗悬浮式弹窗通知,然后过几秒中, 就消失了,所以像这样的悬浮式通知,在有些产品中是不需要的,要求屏蔽掉,这就需要按照悬浮式流程来分析显示这个通知,然后屏蔽掉就可以了 阅读详情

Android之用PopupWindow实现弹出菜单


          在使用UC-WebBrowser时,你会发现它的弹出菜单跟系统自带的菜单不一样。它实现更多菜单选项的显示和分栏。其实,它的本身是PopupWindow或者是AlertDialog对话框,在里面添加两个GridView控件,一个是菜单标题栏,一个是菜单选项。菜单选项视图的切换可以通过适配器的变换,轻松地实现。该实例下载路径:http://download.youkuaiyun.com/source/3275759

          一、运行截图:

            

 

             

        二、实现要点:

        (1)屏蔽系统弹出的菜单:

          1、首先创建至少一个系统的菜单选项

        

[java]  view plain copy
  1. @Override  
  2.     public boolean onCreateOptionsMenu(Menu menu) {  
  3.           
  4.         menu.add("menu");  
  5.         return super.onCreateOptionsMenu(menu);  
  6.     }  

          2、在onMenuOpened方法里显示自己的菜单视图,并返回FALSE。

       

[java]  view plain copy
  1. @Override  
  2.     public boolean onMenuOpened(int featureId, Menu menu) {  
  3.   
  4.         myMenu.showAtLocation(findViewById(R.id.layout), Gravity.BOTTOM, 0,0);  
  5.           
  6.         return false;   // true--显示系统自带菜单;false--不显示。  
  7.     }  

        (2)点击菜单栏,切换菜单视图时,只要重新设置当前的适配器对象就可以。

        

[java]  view plain copy
  1. gv_body.setAdapter(bodyAdapter[arg2]);  //改变选项视图  

         (3)继承PopupWindow,重写一个类实现弹出对话框,主要是为了更好更简便实现弹出菜单的样式和事件响应等等。

         

[java]  view plain copy
  1. public class MyDefinedMenu extends PopupWindow { 。。。}  

        三、 具体代码如下:

        (1)布局:

          

[xhtml]  view plain copy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:id="@+id/layout"  
  4.     android:orientation="vertical"  
  5.     android:layout_width="fill_parent"  
  6.     android:layout_height="fill_parent"  
  7.     >  
  8. </LinearLayout>  

          (2)程序代码

           1、主类:MyMenu

           

[java]  view plain copy
  1. package com.myandroid.test;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.List;  
  5.   
  6. import android.app.Activity;  
  7. import android.os.Bundle;  
  8. import android.view.Gravity;  
  9. import android.view.Menu;  
  10. import android.view.View;  
  11. import android.widget.AdapterView;  
  12. import android.widget.AdapterView.OnItemClickListener;  
  13. import android.widget.Toast;  
  14.   
  15. public class MyMenu extends Activity {  
  16.     private List<String> titles;  //标题栏  
  17.     private List<List<String>> item_names;  //选项名称  
  18.     private List<List<Integer>> item_images;    //选项图标  
  19.     private MyDefinedMenu myMenu;   //弹出菜单  
  20.       
  21.       
  22.     /** Called when the activity is first created. */  
  23.     @Override  
  24.     public void onCreate(Bundle savedInstanceState) {  
  25.         super.onCreate(savedInstanceState);  
  26.         setContentView(R.layout.main);  
  27.           
  28.         //弹出菜单标题栏  
  29.         titles = addItems(new String[]{"菜单一", "菜单二", "菜单三"});  
  30.         //选项图标  
  31.         item_images = new ArrayList<List<Integer>>();  
  32.         item_images.add(addItems(new Integer[]{R.drawable.bag,  
  33.             R.drawable.bluetooth, R.drawable.earth, R.drawable.email}));  
  34.         item_images.add(addItems(new Integer[]{R.drawable.map,  
  35.                 R.drawable.news, R.drawable.reader, R.drawable.sound, R.drawable.tape}));  
  36.         item_images.add( addItems(new Integer[]{R.drawable.telephone,  
  37.                 R.drawable.bluetooth, R.drawable.earth, R.drawable.email}));  
  38.         //选项名称  
  39.         item_names = new ArrayList<List<String>>();  
  40.         item_names.add(addItems(new String[]{"购物", "蓝牙", "游览器", "邮件"}));  
  41.         item_names.add(addItems(new String[]{"地图", "新闻", "阅读器", "音箱", "录音"}));  
  42.         item_names.add(addItems(new String[]{"电话", "蓝牙", "阅读器", "邮箱"}));  
  43.         //创建弹出菜单对象  
  44.         myMenu = new MyDefinedMenu(this, titles, item_names,   
  45.                 item_images, new ItemClickEvent());  
  46.           
  47.     }  
  48.       
  49.     /** 
  50.      * 转换为List<String> 
  51.      * @param values 
  52.      * @return 
  53.      */  
  54.     private List<String> addItems(String[] values) {  
  55.           
  56.         List<String> list = new ArrayList<String>();  
  57.         for (String var : values) {  
  58.             list.add(var);  
  59.         }  
  60.           
  61.         return list;  
  62.     }  
  63.       
  64.     /** 
  65.      * 转换为List<Integer> 
  66.      * @param values 
  67.      * @return 
  68.      */  
  69.     private List<Integer> addItems(Integer[] values) {  
  70.           
  71.         List<Integer> list = new ArrayList<Integer>();  
  72.         for (Integer var : values) {  
  73.             list.add(var);  
  74.         }  
  75.           
  76.         return list;  
  77.     }  
  78.       
  79.     @Override  
  80.     public boolean onCreateOptionsMenu(Menu menu) {  
  81.           
  82.         menu.add("menu");  
  83.         return super.onCreateOptionsMenu(menu);  
  84.     }  
  85.   
  86.     @Override  
  87.     public boolean onMenuOpened(int featureId, Menu menu) {  
  88.   
  89.         myMenu.showAtLocation(findViewById(R.id.layout), Gravity.BOTTOM, 0,0);  
  90.           
  91.         return false;   // true--显示系统自带菜单;false--不显示。  
  92.     }  
  93.       
  94.     /** 
  95.      * 菜单选项点击事件 
  96.      * @author Kobi 
  97.      * 
  98.      */  
  99.     class ItemClickEvent implements OnItemClickListener {  
  100.   
  101.         @Override  
  102.         public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,  
  103.                 long arg3) {  
  104.             //显示点击的是哪个菜单哪个选项。  
  105.             Toast.makeText(MyMenu.this, "Menu: " +   
  106.                     titles.get(myMenu.getTitleIndex()) +   
  107.                     " Item: " + item_names.get(myMenu.getTitleIndex()).get(arg2),  
  108.                     Toast.LENGTH_SHORT).show();  
  109.             myMenu.dismiss();   //菜单消失  
  110.         }  
  111.           
  112.     }  
  113.       
  114.       
  115.   
  116.       
  117.       
  118. }  

            2、弹出菜单类:MyDefinedMenu、

          

[java]  view plain copy
  1. package com.myandroid.test;  
  2.   
  3. import java.util.List;  
  4.   
  5. import com.myandroid.test.MyMenu.ItemClickEvent;  
  6. import android.content.Context;  
  7. import android.graphics.Color;  
  8. import android.util.Log;  
  9. import android.view.View;  
  10. import android.view.ViewGroup.LayoutParams;  
  11. import android.widget.AdapterView;  
  12. import android.widget.AdapterView.OnItemClickListener;  
  13. import android.widget.GridView;  
  14. import android.widget.LinearLayout;  
  15. import android.widget.PopupWindow;  
  16.   
  17.   
  18.   
  19. public class MyDefinedMenu extends PopupWindow {   
  20.       
  21.     private LinearLayout layout;    //总的布局  
  22.     private GridView gv_title;      //菜单栏  
  23.     private GridView gv_body;       //选项视图  
  24.     private BodyAdatper[] bodyAdapter;  //选项适配器  
  25.     private TitleAdatper titleAdapter;  //标题适配器  
  26.     private Context context;            //上下文  
  27.     private int titleIndex;             //菜单序号  
  28.       
  29.       
  30.       
  31.     public MyDefinedMenu(Context context, List<String> titles,   
  32.             List<List<String>> item_names, List<List<Integer>> item_images,  
  33.             ItemClickEvent itemClickEvent) {  
  34.           
  35.         super(context);  
  36.         this.context = context;  
  37.           
  38.         //布局框架  
  39.         layout = new LinearLayout(context);       
  40.         layout.setOrientation(LinearLayout.VERTICAL);  
  41.         layout.setLayoutParams(new LayoutParams(  
  42.                 LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));  
  43.           
  44.         //菜单栏  
  45.         titleIndex = 0;  
  46.         gv_title = new GridView(context);  
  47.         titleAdapter = new TitleAdatper(context, titles);  
  48.         gv_title.setAdapter(titleAdapter);  
  49.         gv_title.setLayoutParams(new LayoutParams(  
  50.                 LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));  
  51.         gv_title.setNumColumns(titles.size());  //菜单个数  
  52.         gv_title.setBackgroundColor(Color.WHITE);  
  53.           
  54.         //选项视图  
  55.         bodyAdapter = new BodyAdatper[item_names.size()];   //各个视图适配器  
  56.         for (int i = 0; i < item_names.size(); i++) {  
  57.             bodyAdapter[i] = new BodyAdatper(context, item_names.get(i), item_images.get(i));  
  58.         }  
  59.         gv_body = new GridView(context);  
  60.         gv_body.setNumColumns(4);   //每行显示4个选项  
  61.         gv_body.setBackgroundColor(Color.TRANSPARENT);  
  62.         gv_body.setAdapter(bodyAdapter[0]); //设置适配器  
  63.           
  64.         //菜单项切换  
  65.         gv_title.setOnItemClickListener(new OnItemClickListener() {  
  66.   
  67.             @Override  
  68.             public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,  
  69.                     long arg3) {  
  70.                 titleIndex = arg2;  //记录当前选中菜单项序号  
  71.                 titleAdapter.setFocus(arg2);  
  72.                 gv_body.setAdapter(bodyAdapter[arg2]);  //改变选项视图  
  73.   
  74.             }  
  75.         });  
  76.           
  77.         //设置选项点击事件  
  78.         gv_body.setOnItemClickListener(itemClickEvent);  
  79.           
  80.         //添加标题栏和选项  
  81.         layout.addView(gv_title);  
  82.         layout.addView(gv_body);  
  83.           
  84.         // 添加菜单视图  
  85.         this.setContentView(layout);  
  86.         this.setWidth(LayoutParams.FILL_PARENT);  
  87.         this.setHeight(LayoutParams.WRAP_CONTENT);  
  88.         this.setFocusable(true);// menu菜单获得焦点 如果没有获得焦点menu菜单中的控件事件无法响应    
  89.           
  90.     }  
  91.       
  92.     /** 
  93.      * 获取当前选中菜单项 
  94.      * @return  菜单项序号 
  95.      */  
  96.     public int getTitleIndex() {  
  97.           
  98.         return titleIndex;  
  99.     }  
  100.   
  101.       
  102. }  

           3、菜单栏适配器:TitleAdatper

         

[java]  view plain copy
  1. package com.myandroid.test;  
  2.   
  3. import java.util.List;  
  4.   
  5. import android.content.Context;  
  6. import android.graphics.Color;  
  7. import android.view.Gravity;  
  8. import android.view.View;  
  9. import android.view.ViewGroup;  
  10. import android.view.ViewGroup.LayoutParams;  
  11. import android.widget.BaseAdapter;  
  12. import android.widget.GridView;  
  13. import android.widget.TextView;  
  14.   
  15. public class TitleAdatper extends BaseAdapter {  
  16.     private List<String> titles;  
  17.     private Context context;  
  18.     private final TextView[] tv_titels;  
  19.       
  20.       
  21.     public TitleAdatper(Context context, List<String> titles) {  
  22.         this.context = context;  
  23.         this.titles = titles;  
  24.         tv_titels = new TextView[titles.size()];  
  25.     }  
  26.   
  27.     @Override  
  28.     public int getCount() {  
  29.         // TODO Auto-generated method stub  
  30.         return titles.size();  
  31.     }  
  32.   
  33.     @Override  
  34.     public Object getItem(int position) {  
  35.         // TODO Auto-generated method stub  
  36.         return position;  
  37.     }  
  38.   
  39.     @Override  
  40.     public long getItemId(int position) {  
  41.         // TODO Auto-generated method stub  
  42.         return position;  
  43.     }  
  44.       
  45.     /** 
  46.      * 选中后,改变菜单颜色。 
  47.      * @param position 
  48.      */  
  49.     public void setFocus(int position) {  
  50.           
  51.         for (int i = 0; i < titles.size(); i++) {  
  52.               
  53.             tv_titels[i].setBackgroundColor(Color.WHITE);  
  54.         }  
  55.           
  56.         tv_titels[position].setBackgroundColor(Color.BLUE);  
  57.           
  58.     }  
  59.   
  60.     @Override  
  61.     public View getView(int position, View convertView, ViewGroup parent) {  
  62.         //菜单栏文字项  
  63.         tv_titels[position] = new TextView(context);  
  64.         tv_titels[position].setGravity(Gravity.CENTER);  
  65.         tv_titels[position].setText(titles.get(position));  
  66.         tv_titels[position].setTextSize(18);  
  67.         tv_titels[position].setLayoutParams(new GridView.LayoutParams(  
  68.                 LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));  
  69.           
  70.         return tv_titels[position];  
  71.     }  
  72.   
  73. }  

          4、菜单项视图适配器:BodyAdatper

         

[java]  view plain copy
  1. package com.myandroid.test;  
  2.   
  3. import java.util.List;  
  4.   
  5. import android.content.Context;  
  6. import android.view.Gravity;  
  7. import android.view.View;  
  8. import android.view.ViewGroup;  
  9. import android.view.ViewGroup.LayoutParams;  
  10. import android.widget.BaseAdapter;  
  11. import android.widget.GridView;  
  12. import android.widget.ImageView;  
  13. import android.widget.LinearLayout;  
  14. import android.widget.TextView;  
  15.   
  16. public class BodyAdatper extends BaseAdapter {  
  17.       
  18.     private List<String> item_names;  
  19.     private List<Integer> item_images;  
  20.     private Context context;  
  21.       
  22.       
  23.     public BodyAdatper(Context context, List<String> item_names,  
  24.             List<Integer> item_images) {  
  25.         this.context = context;  
  26.         this.item_names = item_names;  
  27.         this.item_images = item_images;  
  28.     }  
  29.   
  30.     @Override  
  31.     public int getCount() {  
  32.         // TODO Auto-generated method stub  
  33.         return item_images.size();  
  34.     }  
  35.   
  36.     @Override  
  37.     public Object getItem(int position) {  
  38.         // TODO Auto-generated method stub  
  39.         return position;  
  40.     }  
  41.   
  42.     @Override  
  43.     public long getItemId(int position) {  
  44.         // TODO Auto-generated method stub  
  45.         return position;  
  46.     }  
  47.       
  48.   
  49.     @Override  
  50.     public View getView(int position, View convertView, ViewGroup parent) {  
  51.         //总布局  
  52.         LinearLayout layout = new LinearLayout(context);  
  53.         layout.setOrientation(LinearLayout.VERTICAL);  
  54.         layout.setGravity(Gravity.CENTER);  
  55.         //选项名称  
  56.         TextView tv_item = new TextView(context);  
  57.         tv_item.setGravity(Gravity.CENTER);  
  58.         tv_item.setLayoutParams(new GridView.LayoutParams(  
  59.                 LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));  
  60.         tv_item.setText(item_names.get(position));  
  61.         //选项图表  
  62.         ImageView img_item = new ImageView(context);  
  63.         img_item.setLayoutParams(new LayoutParams(50, 50));  
  64.         img_item.setImageResource(item_images.get(position));  
  65.         //添加选项图标和名字  
  66.         layout.addView(img_item);  
  67.         layout.addView(tv_item);  
  68.           
  69.         return layout;  
  70.     }  
  71.   
  72. }  

          这里是用PopupWindow实现,当然也可以用AlertDialog或者其他自定义对话框等等,也可以改写Menu,还可以用Tab实现。实现的方法很多,但原理是相同的,例如用两个GridView,一个作为菜单栏,一个作为菜单项视图。

Android 10.0 SystemUI 状态栏屏蔽弹出的 提醒式通知 在11.0SystemUI中 有一种提醒式通知 就是在状态栏 弹出通知后 停留几秒钟后消失 这种通知就是提醒式通知 ,然后在下拉状态栏后可以看到这种通知 但是 由于客户需求要求不要弹出这种通知 所以就要求屏蔽掉 接下来就来分析这种通知是如何弹出来的 通过查阅相关资料 发现 NotificationAlertingManager.java 负责显示 悬浮式 提醒式的通知管理 路径:frameworks\base\packages\SystemUI\src\com\android\systemui\status 阅读详情

相关推荐

Android弹出菜单实例:使用PopupWindow实现

然后,我们使用LayoutInflater从布局文件中填充弹出菜单的内容,并将其设置为PopupWindow的内容。在这段代码中,我们首先通过findViewById获取到显示弹出菜单按钮的引用(在布局文件中使用id为btnShowMenu的Button)。您可以通过修改菜单布局文件和处理弹出菜单的代码来适应您的特定需求。在Android应用程序中,弹出菜单是一种常见的用户界面元素,它可以在用户点击或触摸屏幕时显示一个临时菜单。首先,我们需要创建一个布局文件来定义弹出菜单的内容。第一步:创建布局文件。

PixelLoom的博客 130

Android 移除弹窗方案

此时客户又追加需求,在他的用户协议页面长按文字时会弹出一个拷贝分享的弹窗,他也不想要这个功能,而他的用户协议使用chromium-WebView界面显示的,然后客户应用包名又必须加白名单里,上面的setForceShow这个他们又嫌麻烦,系统这边很难进行修改,咱又没有客户源码,有咱也不敢改啊。Dialog 都是弹出性提示,弹一个窗口,像长按电源键关机重启选项,音量大小调节弹窗啊,低电电量提示都是用的这个控件,其中客户要求有些系统的提示还是需要保留的。Toast 系统和应用基本都会用到的,没什么好介绍的。

ztisen的博客 8637

我的Android进阶之旅------>Android用PopupWindow实现弹出菜单实例

step1:新建项目PopWindow,并导入菜单项使用的图片到/res/drawable目录下               (项目总览图)                                                   (drawable目录截图)        step2:设置应用的UI界面  a.应用的总体界面,main.xml <LinearLayout

字节卷动 8664

安卓APP_ 控件(9)—— PopupWindow弹窗

实现效果如下: 点击触发弹窗的按钮,弹窗出现。弹窗里的按钮设置了监听事件,当点击“上海”时,弹窗不退出。点击空白处弹窗退出。因为“北京”设置了“dismiss”,所以点击“北京”直接退出弹窗。 具体细节还是通过代码呈现: MainActivity.java public class MainActivity extends AppCompatActivity { private static final String TAG = "zhua"; @Override protec

华天朱 2808

详解Android PopupWindow怎么合理控制弹出位置(showAtLocation)

本篇文章主要介绍了详解Android PopupWindow怎么合理控制弹出位置(showAtLocation),具有一定的参考价值,有兴趣的可以了解一下

VPS环境搭建及配置

VPS(Virtual Private Server)是一种虚拟化技术,可以将一台物理服务器分成多个虚拟服务器,每个虚拟服务器都有独立的操作系统和资源,相互之间互不影响。VPS可以提供类似于独立服务器的功能,但价格更便宜,适合中小企业和个人用户使用。VPS可以用于网站托管、应用程序部署、游戏服务器、数据备份等各种场景。

YJ_12340的博客 1万+

关于Dev_PopupContainerControl

关于PopupContainerControl实现复用

Mark_mwl的博客 2356

MacX DVD Ripper Pro for Mac(DVD解码器) 6.2.120190416免激活版

只需要5分钟即可转档一张DVD光碟!并允许我们在编码之前预览、编辑、裁剪、修剪或扩展视频。第一款也是唯一一款能够支持DVD到MP4,H.264,MOV,FLV,MPEG4等所有格式DVD(新DVD,99-标题DVD,损坏和无法播放的DVD)和翻录DVD / ISO映像的工具,AVI,QT,MP3等。借助350多种预设配置文件MacX DVD Ripper Pro for Mac(DVD解码器) 6...

llhf688的博客 890

android popupwindow弹出菜单,Android popupwindow实现弹出菜单效果.pdf

Android popupwindow实现弹出菜单效果上面图片中的确定按钮的效果。也就是弹出菜单。主activity布局01. 02.03.04. 05. android:id="@+id/com_example_menueffect_effect1_relativeLayout"06. android:layout_height="match_parent"07....

weixin_35639750的博客 145

IMU标定中的Allen方差

Allen方差 Allen方差是IMU标定任务中的常用工具。IMU标定可以分为确定性误差和随机误差,确定性误差包括:scale、bias、misalignment。随机误差则主要是高斯白噪声和bias随机游走。Allen方差主要用于标定随机误差。 Allen方差获取 Allen方差的计算方法如下: 保持IMU静止, 采集N个数据点。 将N个点定长分组,常用的交叠式Allen方差如下(n=3): 对于每个子集,计算均值后,计算相邻两组的方差,得到的时间-方差曲线即为Allen方差。 Alle

realjc的博客 5734

02.Palantir Foundry平台功能和应用全景图

本文深入解析 Palantir Foundry 平台核心功能与应用全景。

687

android底部弹出下拉菜单,Android PopupWindow实现右侧、左侧和底部弹出菜单

本教程为大家分享了Android PopupWindow弹出菜单的具体代码,供大家参考,具体内容如下项目SDK是5.1,建议将代码拷到自己的工程中去代码如下:MainActivity类:package com.example.popupleftmenu;import android.app.Activity;import android.content.Context;import android...

weixin_39831242的博客 779

用Charles抓包调试iOS应用?这份保姆级配置指南帮你绕过所有坑

本文提供了一份在Mac上使用Charles抓包调试iOS应用的保姆级配置指南。详细讲解了从Charles安装、Mac端代理设置、根证书安装,到iOS设备连接同一WiFi、配置代理以及最关键的系统证书信任等全流程步骤,并分享了SSL代理规则、断点调试等进阶技巧,帮助开发者高效定位和解决网络请求问题。

rice5的博客 640

[Android实例] popupwindow实现弹出菜单效果

上面图片中的确定按钮的效果。 也就是弹出菜单。 主activity布局      android:id="@+id/com_example_menueffect_effect1_relativeLayout"         android:layout_height="match_parent"         android:l

我的专栏 1129

【WRF模拟】保存wrf输出文件到指定目录+仅输出指定空间域/变量文件

修改wrf命令以更改指定输出文件目录等

WW、forever的博客 543

无线通信基础:调制与解调技术_(42).7.3.2多进制频移键控解调(MFSK解调)

MFSK解调是一种通过频谱分析和频率检测来恢复数字信号的技术。本文介绍了MFSK解调的基本原理,包括信号接收、频谱分析、频率检测和符号判决。在实际应用中,噪声会对解调性能产生影响,因此引入了信噪比优化和多步判决方法来提高解调的准确性。通过性能评估,可以更好地理解MFSK解调在不同噪声环境下的表现。这些方法和技术为MFSK在实际通信系统中的应用提供了理论和实践基础。

2401_87715305的博客 1316

android 弹出菜单动画,android popwindow实现左侧弹出菜单层及PopupWindow主要方法介绍...

PopupWindow可以实现浮层效果,主要方法有:可以自定义view,通过LayoutInflator方法;可以出现和退出时显示动画;可以指定显示位置等。为了将PopupWindow的多个功能展现并力求用简单的代码实现,编写了一个点击按钮左侧弹出菜单的功能,实现出现和退出时显示动画效果并点击其他区域时弹出层自动消失,效果图如下:源码:1.PopwindowOnLeftActivity.javap...

weixin_34401781的博客 678

为什么我的 Spark Executor / Yarn Container 只有一个vCore?

在很多集群里,在关闭了Spark的DynamicAllocation的前提下(避免自动申请空闲资源,干扰测试结果),都会观察到:提交Spark作业时,申请 1 个 driver + n 个 executor 会在Yarn上会对应创建 n+1 个 container,但是每个container只有一个vCore,通过--driver-cores和--executor-cores设定的vCore数都未奏效。有人会因此错误的认为Yarn上的一个vCore对应一个Spark的executor,这是非常错误的,正确的

Laurence的技术博客 916

Android开发技巧——使用PopupWindow实现弹出菜单

当android原生的弹出菜单已不能满足我们的需求时,自定义菜单就成了我们的唯一选择,在本文当中,我将与大家分享如何使用PopupWindow实现弹出菜单。 1.弹出菜单的封装PopMenu 1 import java.util.ArrayList; 2 import cn.com.ista.pdachina.R; 3 import android.content.Cont...

weixin_30673715的博客 124

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

android 右侧弹出layout,PopupWindow实现右侧、左侧和底部弹出菜单

先上图,4张:项目代码:http://download..net/download/jianfengwen/9124745 (需要2个分)项目SDK是5.1,建议将代码拷到自己的工程中去代码如下:MainActivity类:package com.example.popupleftmenu;import android.app.Activity;import android.content.Con...

weixin_39820588的博客 574

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

上一篇: ContentProvider 和 ContentResolver学习中的UriMatcher 和ContentUris
下一篇: android -应用软件获取缓存大小和清除缓存功能
PiCheeng
博客等级 码龄15年 3粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值