Android Menu半透明效果的开发实例

不知道大家是否用过天天动听,对于它界面上的半透明Menu效果,笔者感觉非常漂亮。下面是天天动听半透明Menu的截图,欣赏下吧:

感觉还不错吧?那么如何实现这种半透明Menu效果呢?本文就重点讨论并给出这种Menu的具体代码实现过程。

首先分析下实现这种半透明Menu所需做的工作,并进行合理分解:

1.  利用Shaper设置一个半透明圆角背景。

2.  定义Menu布局,主要就GridView,把图标都放在这个GridView。

3.  Menu事件, 通过PopupWindow或者AlertDialog或者透明Activity显示到页面即可。

4.  按钮的监听事件,实例中没加。需要的话自己在Adapter里加。

比较简单,不多说了。

半透明圆角背景xml:

XML/HTML代码

<?xml version="1.0" encoding="UTF-8"?> 

<shape android:shape="rectangle">  

 <solid android:color="#b4000000" /> 

 <stroke android:width="2.0dip" android:color="#b4ffffff" android:dashWidth="3.0dip" android:dashGap="0.0dip" /> 

 <padding android:left="7.0dip" android:top="7.0dip" android:right="7.0dip" android:bottom="7.0dip" /> 

 <corners android:radius="8.0dip" /> 

</shape>

Menu布局:

XML/HTML代码

<?xml version="1.0" encoding="UTF-8"?> 

<LinearLayout 

  android:orientation="vertical" 

  android:layout_width="wrap_content" 

  android:layout_height="fill_parent"> 

  <GridView android:gravity="center" 

    android:layout_gravity="center" 

    android:id="@+id/menuGridChange" 

    android:background="@drawable/menu_bg_frame" 

    android:padding="5.0dip" 

    android:layout_width="fill_parent" 

    android:layout_height="wrap_content" 

    android:horizontalSpacing="10.0dip" 

    android:verticalSpacing="3.0dip" 

    android:stretchMode="columnWidth" 

    android:columnWidth="60.0dip" 

    android:numColumns="auto_fit"/> 

</LinearLayout>

主要类:

Java代码

package com.yfz; 

import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.Context;
import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import android.util.Log;
import android.view.ContextMenu;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.view.ContextMenu.ContextMenuInfo;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.PopupWindow;
import android.widget.TextView;
import android.widget.LinearLayout.LayoutParams; 

public class MenuTest extends Activity {   

  private String TAG = this.getClass().getSimpleName();   

  private int[] resArray = new int[] {
    R.drawable.icon_menu_addto, R.drawable.icon_menu_audioinfo,
    R.drawable.icon_menu_findlrc, R.drawable.icon_menu_scan
  };   

  private String[] title = new String[]{
    "添加歌曲", "歌曲信息", "查找歌词", "搜索歌词"
  };   

  private static boolean show_flag = false;
  private PopupWindow pw = null;   

  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.main);
  } 

  @Override 

  public boolean onCreateOptionsMenu(Menu menu) {
    Log.e(TAG, "------ onCreateOptionsMenu ------");
    //用AlertDialog弹出menu 

//    View view = LayoutInflater.from(this).inflate(R.layout.menu, null); 

//    GridView grid1 = (GridView)view.findViewById(R.id.menuGridChange); 

//    grid1.setAdapter(new ImageAdapter(this)); 

//    Builder build = new AlertDialog.Builder(this); 

//    build.setView(view); 

//    build.show(); 

    LayoutInflater inflater = (LayoutInflater)this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);   

    View view = inflater.inflate(R.layout.menu, null); 

    GridView grid1 = (GridView)view.findViewById(R.id.menuGridChange); 

    grid1.setAdapter(new ImageAdapter(this));     

    //用Popupwindow弹出menu
    pw = new PopupWindow(view,LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);     

    //NND, 第一个参数, 必须找个View
    pw.showAtLocation(findViewById(R.id.tv), Gravity.CENTER, 0, 300);     

    return true;
  } 

  @Override 

  public boolean onOptionsItemSelected(MenuItem item) {
    return super.onOptionsItemSelected(item);
  } 

  public class ImageAdapter extends BaseAdapter {
    private Context context;     

    public ImageAdapter(Context context) {
      this.context = context;
    }     

    @Override
    public int getCount() {
      return resArray.length;
    } 

    @Override
    public Object getItem(int arg0) {
      return resArray[arg0];
    } 

    @Override
    public long getItemId(int arg0) {
      return arg0;
    } 

    @Override
    public View getView(int arg0, View arg1, ViewGroup arg2) {
      LinearLayout linear = new LinearLayout(context); 

      LinearLayout.LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 

      linear.setOrientation(LinearLayout.VERTICAL);       

      ImageView iv = new ImageView(context); 

      iv.setImageBitmap(((BitmapDrawable)context.getResources().getDrawable(resArray[arg0])).getBitmap()); 

      LinearLayout.LayoutParams params2 = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 

      params2.gravity=Gravity.CENTER; 

      linear.addView(iv, params2);       

      TextView tv = new TextView(context); 

      tv.setText(title[arg0]); 

      LinearLayout.LayoutParams params3 = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 

      params3.gravity=Gravity.CENTER;       

      linear.addView(tv, params3);
      return linear;
    }
  }
}

到此,大家是不是觉得半透明Menu效果也是比较好实现的呢?可以根据自己的需要对此实例进行修改以求更美观好用。

以上就是对Android Menu 半透明效果的实现,后续继续补充相关资料谢谢大家对本站的支持!

(0)

相关推荐

  • Android中设置组件半透明和透明的效果示例

    本文介绍了Android是如何设置组件半透明和透明的效果,分享出来供大家参考,下面来看看详细的介绍: 1.Button或者ImageButton的背景设为透明或者半透明 半透明 <Button android:background="#e0000000" ... /> 透明 <Button android:background="#00000000" ... /> 颜色和不透明度 (alpha) 值以十六进制表示法表示.任何一种颜色的值范围都

  • Android4.4+ 实现半透明状态栏(Translucent Bars)

    Android从4.4(KitKat) 开始进行了一些视觉上的改善和提升,其中包括让状态栏(Status Bar)和下方导航栏(Navigation Bar)进行半透明处理,可以使APP内容向上下延伸,使整个画面的利用度大幅度提升,本篇就来说说这个"半透明状态栏"(Translucent Bars). 简单做了个Demo效果如下图 *这里解释个误区,国内开发者和设计师经常把这种半透明效果称为沉浸式状态栏这是不对的, 沉浸式Immersive mode,官方解释为hiding all s

  • Android编程实现popupwindow弹出后屏幕背景变成半透明效果

    本文实例讲述了Android编程实现popupwindow弹出后屏幕背景变成半透明效果的方法.分享给大家供大家参考,具体如下: android中popupwindow弹出后,屏幕背景变成半透明这个效果很普通.实现的方法也很多.我使用的可能是最简单的一种,就是设置一下getWindows的透明度.不多说上代码 /** * 设置添加屏幕的背景透明度 * @param bgAlpha */ public void backgroundAlpha(float bgAlpha) { WindowManag

  • Android仿Iphone屏幕底部弹出半透明PopupWindow效果

    本文实例为大家分享了Android仿Iphone屏幕底部弹出效果的具体代码,供大家参考,具体内容如下 main.xml如下: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent&

  • Android实现底部半透明弹出框PopUpWindow效果

    Android底部半透明弹出框PopUpWindow,供大家参考,具体内容如下 layout布局: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" androi

  • Android编程自定义圆角半透明Dialog的方法

    本文实例讲述了Android编程自定义圆角半透明Dialog的方法.分享给大家供大家参考,具体如下: 效果图如下: 只是在实例化的时候使用带样式的构造函数即可 new MyDialog(GameActivity.this, R.style.dialog); 在value文件夹中添加mydialogthemes.xml <?xml version="1.0″ encoding=" utf-8″?> <resources> <style name="

  • Android编程实现设置按钮背景透明与半透明及图片背景透明的方法

    本文实例讲述了Android编程实现设置按钮背景透明与半透明及图片背景透明的方法.分享给大家供大家参考,具体如下: Button或者ImageButton的背景设为透明或者半透明: 半透明 复制代码 代码如下: <Button android:background="#e0000000" ... /> 透明 复制代码 代码如下: <Button android:background="#00000000" ... /> 颜色和不透明度 (al

  • Android开发中Dialog半透明背景消失

    近日,遇到一个Dialog半透明背景消失的问题,背景需求是自定义Dialog实现警告提示框: // 初始化警告弹出框 alertDialog = new EmpAlertView(context, Utils.getIdByName(context, "style", "alert_style")); alertDialog.setCanceledOnTouchOutside(false); LayoutInflater inflater = (LayoutInfl

  • Android实现在列表List中显示半透明小窗体效果的控件用法详解

    本文实例讲述了Android实现在列表List中显示半透明小窗体效果的控件用法.分享给大家供大家参考,具体如下: Android 在列表List中显示半透明小窗体效果的控件,多的不多直接上代码,要说的都在注释里了: import com.hiapk.market.R; import android.content.Context; import android.graphics.PixelFormat; import android.os.Handler; import android.view

  • Android Menu半透明效果的开发实例

    不知道大家是否用过天天动听,对于它界面上的半透明Menu效果,笔者感觉非常漂亮.下面是天天动听半透明Menu的截图,欣赏下吧: 感觉还不错吧?那么如何实现这种半透明Menu效果呢?本文就重点讨论并给出这种Menu的具体代码实现过程. 首先分析下实现这种半透明Menu所需做的工作,并进行合理分解: 1.  利用Shaper设置一个半透明圆角背景. 2.  定义Menu布局,主要就GridView,把图标都放在这个GridView. 3.  Menu事件, 通过PopupWindow或者AlertD

  • 关于Android高德地图的简单开发实例代码(DEMO)

    废话不多说了,直接给大家上干货了. 以下为初次接触时 ,练手的DEMO import android.app.Activity; import android.app.ProgressDialog; import android.content.ContentValues; import android.database.Cursor; import android.database.SQLException; import android.database.sqlite.SQLiteDatab

  • Android和PHP MYSQL交互开发实例

    总述 简单的说,安卓客户端通过Http向本地服务器发出请求,访问指定的php代码,服务器端通过php代码执行数据库的操作, 返回相应的JSON数据.服务器可以理解为运行着某些服务器容器的电脑,比如你的电脑安装了Apache并保持运行,那么电脑就变成了一台服务器,只是这台服务器没有入网,只能本地访问.安卓客户端通过HttpURLConnection向服务器中指定的php文件提交POST或GET请求,服务器端相应php代码接受来自客户端的参数(如果是带参传递)进行数据库的操作,返回JSON数据给客户

  • Android 音乐播放器的开发实例详解

    本文将引导大家做一个音乐播放器,在做这个Android开发实例的过程中,能够帮助大家进一步熟悉和掌握学过的ListView和其他一些组件.为了有更好的学习效果,其中很多功能我们手动实现,例如音乐播放的快进快退等. 先欣赏下本实例完成后运行的界面效果: 首先我们建立项目,我使用的SDK是Android2.2的,然后在XML中进行布局. 上方是一个ListView用来显示我们的音乐列表,中间是一个SeekBar可以拖动当前音乐的播放进度,之所以用SeekBar而不用ProgressBar是因为我们需

  • Android实现放大镜效果的方法实例(附源码)

    前言 应该有很多用过英语应用的同学都看多一个放大镜的效果,就是选中一段文字后,会有一个放大镜,这个究竟怎么实现的呢,我们今天来分析分析. 源码分析 public class ShaderView extends View { private final Bitmap bitmap; private final ShapeDrawable drawable; // 放大镜的半径 private static final int RADIUS = 80; // 放大倍数 private static

  • Android Kotlin开发实例(Hello World!)及语法详解

    Android Kotlin开发实例及语法详解 前言 Kotlin是一种在 Java虚拟机上执行的静态型别编程语言,它主要是由俄罗斯圣彼得堡的JetBrains开发团队所发展出来的编程语言.该语言有几个优势 1. 简洁 它大大减少你需要写的样板代码的数量. 2. 安全 避免空指针异常等整个类的错误. 3. 通用 构建服务器端程序.Android 应用程序或者在浏览器中运行的前端程序. 4. 互操作性 通过 100% Java 互操作性,利用 JVM 既有框架和库. 配置 在我们的AndroidS

  • Android miniTwitter登录界面开发实例

    本文要演示的Android开发实例是如何完成一个Android中的miniTwitter登录界面,下面将分步骤讲解怎样实现图中的界面效果,让大家都能轻松的做出美观的登录界面. 先贴上最终要完成的效果图: miniTwitter登录界面的布局分析 首先由界面图分析布局,基本可以分为三个部分,下面分别讲解每个部分. 第一部分是一个带渐变色背景的LinearLayout布局,关于背景渐变色就不再贴代码了,效果如下图所示: 第二部分,红色线区域内,包括1,2,3,4 如图所示: 红色的1表示的是一个带圆

  • Android自定义TitleView标题开发实例

    Android开发过程中,经常遇到一个项目需要重复的定义相同样式的标题栏,Android相继推出了actionBar, toolBar, 相信有用到的朋友也会遇到一些不如意的时候,比如标题栏居中时,需要自定义xml文件给toolBar等,不了解actionBar,toolBar的可以去找相应的文章了解,这里介绍自定义titleBar满足国内主题风格样式的情况. 为了提前看到效果,先上效果图: 前期准备 1.为标题栏titleView预定义id,在values下的ids.xml中 <?xml ve

  • Android圆形旋转菜单开发实例

    最近帮朋友做了一个动画菜单,感觉有一定的实用价值,就在此给大家分享一下,先看看效果: 实现思路: 从图中可以看出,这三个(或更多,需要自己再实现)菜单是围绕着中心点旋转的,旋转分为2层,背景旋转和菜单旋转,背景旋转可以直接用旋转动画来实现:菜单的旋转是在以中心点为圆心的圆环上,所以这里用了根据旋转角度求此点在直角坐标系中的坐标点的函数(x = r * cos(rotation* 3.14 / 180) 和y = r * sin(rotation* 3.14 / 180) ),然后根据获取到的点的

随机推荐