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

不知道大家是否用过天天动听,对于它界面上的半透明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 半透明效果的实现,后续继续补充相关资料谢谢大家对本站的支持!

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索android
menu
android sidemenu实例、android 半透明效果、struts menu实例 csdn、android 半透明遮罩层、android半透明颜色值,以便于您获取更多的相关知识。

时间: 2024-11-05 16:29:12

Android Menu半透明效果的开发实例_Android的相关文章

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

废话不多说了,直接给大家上干货了. 以下为初次接触时 ,练手的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高德地图的简单开发实例代码(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 音乐播放器的开发实例详解_Android

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

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

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

Android 矢量室内地图开发实例_Android

矢量室内地图开发 因为公司项目的需要,需要开发一套室内地图,并实现路线的规划功能.因为之前没做过这方面的开发,相关的资料也比较少,所以只能一个人去摸索.刚开始我是使用一般的位图去当作的地图,但是这个也让我在后面吃了不少的苦头. 我们知道地图一般都会有缩放和拖拽等功能,正当我把一样利用位图开发的地图样例时,我发现了不少的问题: 1.位图缩放会失真: 2.图片加载比较慢: 3.会导致客户端内存溢出 ... 因为这些问题,我不得不放弃这种方法.要解决上面的问题只能使用矢量图进行开发了,于是我使用了HT

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

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

Android 应用指定浏览器开发实例_Android

  本文主要讲解Android浏览器的开发实例,有三部分内容:启动Android默认浏览器.指定浏览器进行访问以及打开本地的html文件.        一.启动Android默认浏览器 Java代码 Intent intent = new Intent(); intent.setAction("android.intent.action.VIEW"); Uri content_url = Uri.parse("http://www.cnblogs.com"); i

Android中的指纹识别demo开发实例_Android

 指纹识别是在Android 6.0之后新增的功能,因此在使用的时候需要先判断用户手机的系统版本是否支持指纹识别.另外,实际开发场景中,使用指纹的主要场景有两种: 纯本地使用.即用户在本地完成指纹识别后,不需要将指纹的相关信息给后台. 与后台交互.用户在本地完成指纹识别后,需要将指纹相关的信息传给后台. 由于使用指纹识别功能需要一个加密对象(CryptoObject)该对象一般是由对称加密或者非对称加密获得.上述两种开发场景的实现大同小异,主要区别在于加密过程中密钥的创建和使用,一般来说,纯本地

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

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