Android仿微信实现下拉列表

本文要实现微信6.1中点击顶部菜单栏的“+”号按钮时,会弹出一个列表框。这里用的了Activity实现,其实最好的方法可以用ActionBar,不过这货好像只支持3.0以后的版本。本文的接上文Android仿微信底部菜单栏+顶部菜单栏

效果

一、仿微信下拉列表布局pop_dialog.xml

<?xml version="1.0" encoding="UTF-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content" > 

 <RelativeLayout
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"
 android:layout_marginTop="45dp"
 android:layout_marginRight="20dp"> 

 <LinearLayout
 android:id="@+id/id_pop_dialog_layout"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_alignParentRight="true"
 android:layout_alignParentTop="true"
 android:background="@drawable/pop_item_normal"
 android:orientation="vertical" > 

 <LinearLayout
 android:id="@+id/id_groupchat"
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:layout_marginLeft="5dp"
 android:layout_marginRight="5dp"
 android:layout_marginTop="5dp"
 android:background="@drawable/pop_list_selector" > 

 <ImageView
  android:id="@+id/id_imageView1"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_gravity="center_vertical"
  android:layout_marginLeft="8dp"
  android:src="@drawable/pop_group" /> 

 <TextView
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:padding="8dp"
  android:text="发起聊天"
  android:layout_gravity="center_vertical"
  android:textColor="#fff"
  android:textSize="16sp" />
 </LinearLayout> 

 <ImageView
 android:id="@+id/id_imageView5"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:src="@drawable/pop_line" /> 

 <LinearLayout
 android:id="@+id/id_addfrd"
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:layout_marginLeft="5dp"
 android:layout_marginRight="5dp"
 android:background="@drawable/pop_list_selector" > 

 <ImageView
  android:id="@+id/id_imageView2"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_gravity="center_vertical"
  android:layout_marginLeft="8dp"
  android:src="@drawable/pop_add" /> 

 <TextView
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:padding="8dp"
  android:text="添加朋友"
  android:layout_gravity="center_vertical"
  android:textColor="#fff"
  android:textSize="16sp" />
 </LinearLayout> 

 <ImageView
 android:id="@+id/id_imageView5"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:src="@drawable/pop_line" /> 

 <LinearLayout
 android:id="@+id/id_find"
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:layout_marginLeft="5dp"
 android:layout_marginRight="5dp"
 android:background="@drawable/pop_list_selector" > 

 <ImageView
  android:id="@+id/id_imageView3"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_gravity="center_vertical"
  android:layout_marginLeft="8dp"
  android:src="@drawable/pop_qrcode" /> 

 <TextView
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:padding="8dp"
  android:text="扫一扫"
  android:layout_gravity="center_vertical"
  android:textColor="#fff"
  android:textSize="16sp" />
 </LinearLayout> 

 <ImageView
 android:id="@+id/id_imageView5"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:src="@drawable/pop_line" /> 

 <LinearLayout
 android:id="@+id/id_feedback"
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:layout_marginBottom="3dp"
 android:layout_marginLeft="5dp"
 android:layout_marginRight="5dp"
 android:background="@drawable/pop_list_selector" > 

 <ImageView
  android:id="@+id/id_imageView4"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_gravity="center_vertical"
  android:layout_marginLeft="8dp"
  android:src="@drawable/pop_feedback" /> 

 <TextView
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:padding="8dp"
  android:text="帮助与反馈"
  android:layout_gravity="center_vertical"
  android:textColor="#fff"
  android:textSize="16sp" />
 </LinearLayout>
 </LinearLayout>
 </RelativeLayout> 

</RelativeLayout>

其中,按下图片后变换颜色:
android:background="@drawable/pop_list_selector" > 
pop_list_selector.xml如下

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

 <item android:drawable="@drawable/pop_item_pressed" android:state_focused="true"/>
 <item android:drawable="@drawable/pop_item_pressed" android:state_pressed="true"/>
 <item android:drawable="@drawable/pop_item_pressed" android:state_selected="true"/>
 <item android:drawable="@drawable/pop_item_normal"/> 

</selector>

看看效果,这是去掉标题栏后的(也可以用代码去掉)

去掉标题栏的方法:

二、对应代码
pop_dialog.xml对应的代码为PopDialogActivity.java
如下:

package com.example.tabexample;
import android.app.Activity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.Window;
import android.view.View.OnClickListener;
import android.widget.LinearLayout; 

public class PopDialogActivity extends Activity implements OnClickListener{
 //定义四个按钮区域
 private LinearLayout mGroupChat;
 private LinearLayout mAddFrd;
 private LinearLayout mFind;
 private LinearLayout mFeedBack; 

 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 requestWindowFeature(Window.FEATURE_NO_TITLE);
 setContentView(R.layout.pop_dialog); 

 initView();
 } 

 /**
 * 初始化组件
 */
 private void initView(){
 //得到布局组件对象并设置监听事件
 mGroupChat = (LinearLayout)findViewById(R.id.id_groupchat);
 mAddFrd = (LinearLayout)findViewById(R.id.id_addfrd);
 mFind = (LinearLayout)findViewById(R.id.id_find);
 mFeedBack = (LinearLayout)findViewById(R.id.id_feedback); 

 mGroupChat.setOnClickListener(this);
 mAddFrd.setOnClickListener(this);
 mFind.setOnClickListener(this);
 mFeedBack.setOnClickListener(this);
 } 

 @Override
 public boolean onTouchEvent(MotionEvent event){
 finish();
 return true;
 } 

 @Override
 public void onClick(View v) { 

 }
}

三、设置背景透明
     如果单这样,当这个Activity出来后,就会把之前的Activity覆盖,但是如果把它背景设置成透明的不就可以了么?方法如下:
在AndroidManifest.xml中添加:

<!-- 这里一定要注册上这个activity,否则跳转将会失败,因为系统找不到这个activity -->
t;activity
 android:name="com.example.tabexample.PopDialogActivity"
 android:label="@string/app_name"
 android:theme="@style/MyDialogStyleTop">
t;/activity> 

其中
"@style/MyDialogStyleTop" 
是我自己定义的格式,在value/style下添加:

<style name="MyDialogStyleTop" parent="android:Theme.Dialog">
 <item name="android:windowFrame">@null</item><!-- 边框 -->
 <item name="android:windowIsFloating">true</item> <!-- 是否浮现在activity之上 -->
 <item name="android:windowIsTranslucent">false</item><!-- 半透明 -->
 <item name="android:windowNoTitle">true</item> <!-- 无标题 -->
 <item name="android:windowBackground">@android:color/transparent</item><!-- 背景透明 -->
 <item name="android:backgroundDimEnabled">false</item><!-- 模糊 -->
</style>

四、使用
其实使用就是Activity的跳转了,方法很简单,一句:
startActivity(new Intent(MainActivity.this,PopDialogActivity.class)); 
把这句放在“+”按钮的点击事件当中去,这里添加点击事件就不用说了,很简单,然后最终的效果如下:

本文已被整理到了《Android微信开发教程汇总》,欢迎大家学习阅读。

以上就是本文的全部内容,希望对大家学习Android软件编程有所帮助。

(0)

相关推荐

  • Android下拉列表spinner的实例代码

    spinner组件有点类型于HTML中的下拉框<Select></select>的样子,让用户每次从下拉框中选取一个,本文为大家分享了Android下拉列表spinner的具体实现代码,供大家参考,具体内容如下 mian.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.c

  • android中一些特殊字符(如:←↑→↓等箭头符号)的Unicode码值

    在项目中,有时候在一些控件(如Button.TextView)中要添加一些符号,如下图所示:                         这个时候可以使用图片的方式来显示,不过这些可以直接使用Unicode码就直接显示出来了. 4个箭头图标的代码如下: <RelativeLayout android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight=&

  • Android下拉列表(Spinner)效果(使用C#和Java分别实现)

    效果如下: C#实现代码 using Android.App; using Android.OS; using Android.Widget; namespace SpinnerDemo { [Activity(Label = "@string/ApplicationName", MainLauncher = true, Icon = "@drawable/icon")] public class MainActivity : Activity { private

  • Android自定义Spinner下拉列表(使用ArrayAdapter和自定义Adapter实现)

    今天学习了Spinner组件的使用,非常好用的一款组件,相当于从下拉列表中选择项目,今天收获颇多,下面给大家演示一下Spinner的使用(分别使用ArrayAdapter和自定义Adapter实现),具体内容如下. (一):使用ArrayAdapter进行适配数据: ①:首先定义一个布局文件: <span style="font-size:16px;"><?xml version="1.0" encoding="utf-8"?&

  • Android列表选择框Spinner使用方法详解

    安卓提供的列表选择框(Spinner)相当于web端用户注册时的选择下拉框,比如注册候选择省份城市等.如下图便是一个列表选择框 下拉列表的列表选择项能够通过xml文件的android:entries属性指定,或是在java代码中导入,属性android:prompt是列表项的标题. 一 列表项数据 实际运用当中,很多下拉列表项的数据实际是可知的,可以放在xml资源文件中.这时,开发者可以通过xml属性进行指定数据. 除了资源文件之外,开发者还能够使用适配器适配数据源.(适配器:如果您的电脑不能接

  • Android RecyclerView实现下拉列表功能

    现在市面上的很多的应用,都带有下拉列表的功能,将所有选项都放在下拉列表中,当用户点击选择的时候,弹出所有的选项,用户选择一项后,下拉列表自动隐藏,很多下拉列表都是用ListView + PopupWindow来实现的,由于Google推出了替代ListView的RecyclerView,所以简单实现一下: MainActivity.java package com.jackie.countdowntimer; import android.graphics.drawable.BitmapDraw

  • Android自定义ViewGroup实现带箭头的圆角矩形菜单

    本文和大家一起做一个带箭头的圆角矩形菜单,大概长下面这个样子: 要求顶上的箭头要对准菜单锚点,菜单项按压反色,菜单背景色和按压色可配置. 最简单的做法就是让UX给个三角形的图片往上一贴,但是转念一想这样是不是太low了点,而且不同分辨率也不太好适配,干脆自定义一个ViewGroup吧! 自定义ViewGroup其实很简单,基本都是按一定的套路来的. 一.定义一个attrs.xml 就是声明一下你的这个自定义View有哪些可配置的属性,将来使用的时候可以自由配置.这里声明了7个属性,分别是:箭头宽

  • Android实现三级联动下拉框 下拉列表spinner的实例代码

    主要实现办法:动态加载各级下拉值的适配器 在监听本级下拉框,当本级下拉框的选中值改变时,随之修改下级的适配器的绑定值              XML布局: 复制代码 代码如下: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_w

  • Android组件实现列表选择框功能

    android提供的列表选择框(Spinner)相当于web端用户注册时的选择下拉框,比如注册候选择省份城市等.如下图便是一个列表选择框 下拉列表的列表选择项能够通过xml文件的android:entries属性指定,或是在java代码中导入,属性android:prompt是列表项的标题. 一    列表项数据: 实际运用当中,很多下拉列表项的数据实际是可知的,可以放在xml资源文件中.这时,开发者可以通过xml属性进行指定数据. 除了资源文件之外,开发者还能够使用适配器适配数据源.(适配器:

  • Android下拉列表选项框及指示箭头动画

    android原生的Spinner提供了下拉列表选项框,但在一些流行的APP中,原生的Spinner似乎不太受待见,而通常会有下图所示的下拉列表选项框: 初始化状态: 点击弹出下拉选择选项框: 选中后: 注意那个指示箭头,如果把这个控件写的比较精细的话,在下拉-选择-复位过程中箭头是应该有动画旋转效果的. 这种样式的选择框实现方案很多,并且常见.常用,我自己写了一个,我写的这个例子的代码运行结果就是上图所示. 首先是MainActivity.Java: package zhangphil.app

随机推荐