Android微信右上角弹出的对话选择框实现



Android微信右上角弹出的对话选择框实现


我在之前的文章中曾给出了一个开源的微信UI大体实现方案具体代码实现,参见附录文章1。本文单单挑出一个微信的UI实现点:微信右上角弹出的选择对话框。如图所示:


代码实现方案是网上流传的,我已经将其push到github上,链接地址:https://github.com/zhangphil/WeiXinPopupDialog.git

要实现图中所示效果,基本素材代码包里面有,在上层Java代码中,只需要关注几个核心的部位即可:

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. import android.app.Activity;  
  2. import android.os.Bundle;  
  3. import android.view.View;  
  4. import android.view.View.OnClickListener;  
  5. import android.view.ViewGroup.LayoutParams;  
  6. import android.widget.ImageButton;  
  7.   
  8. /** 
  9.  * 功能描述:第一种实现方式,PopupWindow实现方式 
  10.  */  
  11. public class CustomTitleActivity01 extends Activity {  
  12.     // 定义标题栏上的按钮  
  13.     private ImageButton titleBtn;  
  14.   
  15.     // 定义标题栏弹窗按钮  
  16.     private TitlePopup titlePopup;  
  17.   
  18.     @Override  
  19.     protected void onCreate(Bundle savedInstanceState) {  
  20.         super.onCreate(savedInstanceState);  
  21.         setContentView(R.layout.activity_title);  
  22.   
  23.         initView();  
  24.   
  25.         initData();  
  26.     }  
  27.   
  28.     /** 
  29.      * 初始化组件 
  30.      */  
  31.     private void initView() {  
  32.         // 实例化标题栏按钮并设置监听  
  33.         titleBtn = (ImageButton) findViewById(R.id.title_btn);  
  34.         titleBtn.setOnClickListener(new OnClickListener() {  
  35.             @Override  
  36.             public void onClick(View v) {  
  37.                 //弹出微信样式的选择对话框  
  38.                 titlePopup.show(v);  
  39.             }  
  40.         });  
  41.   
  42.         // 实例化标题栏弹窗  
  43.         titlePopup = new TitlePopup(this, LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);  
  44.     }  
  45.   
  46.     /** 
  47.      * 初始化数据 
  48.      */  
  49.     private void initData() {  
  50.         // 给标题栏弹窗添加子类  
  51.         titlePopup.addAction(new ActionItem(this"发起聊天", R.drawable.mm_title_btn_compose_normal));  
  52.         titlePopup.addAction(new ActionItem(this"听筒模式", R.drawable.mm_title_btn_receiver_normal));  
  53.         titlePopup.addAction(new ActionItem(this"登录网页", R.drawable.mm_title_btn_keyboard_normal));  
  54.         titlePopup.addAction(new ActionItem(this"扫一扫", R.drawable.mm_title_btn_qrcode_normal));  
  55.     }  
  56.   
  57. }  


如代码所示,实现一个微信样式的弹出选择对话框,

第1步:定义一个TitlePopup:

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. private TitlePopup titlePopup;  
  2.   
  3. ...  
  4.   
  5. // 实例化标题栏弹窗  
  6.         titlePopup = new TitlePopup(this, LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);  


第2步:为这个TitlePopup初始化数据:

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. /** 
  2.      * 初始化数据 
  3.      */  
  4.     private void initData() {  
  5.         // 给标题栏弹窗添加子类  
  6.         titlePopup.addAction(new ActionItem(this"发起聊天", R.drawable.mm_title_btn_compose_normal));  
  7.         titlePopup.addAction(new ActionItem(this"听筒模式", R.drawable.mm_title_btn_receiver_normal));  
  8.         titlePopup.addAction(new ActionItem(this"登录网页", R.drawable.mm_title_btn_keyboard_normal));  
  9.         titlePopup.addAction(new ActionItem(this"扫一扫", R.drawable.mm_title_btn_qrcode_normal));  
  10.     }  

第3步,将这个TitlePopup在某个锚位置弹出显示出来:

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. //弹出微信样式的选择对话框  
  2.                 titlePopup.show(v);  

所需的资源如图片和布局文件代码资源均已在项目的代码包中。


附录文章:
1,《Android开源之仿微信UI》链接地址:http://blog.csdn.net/zhangphil/article/details/50302495

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值