最近在做一个关于微信公众平台服务号的小项目,主要用来实现排队叫号功能。一直都对微信公众号开发比较好奇,于是趁这次机会仔细研究了一下公众号的开发流程和逻辑架构。
微信公众平台现在分为3类:订阅号,服务号和企业号。其中,服务号和企业号的开放权限比较高,可以实现自定义菜单功能,调用摄像头以及LBS等API。
基本通信架构如图:
在项目的功能设计阶段本想搭建一个服务号Demo用来展示,但微信服务号的认证手续太麻烦,而且我也没有那个资质去开通服务号。于是打算自己做一个仿微信公众号的基本界面,先实现菜单功能,避免开发初期的公众号注册,同时也方便展示。
先上效果图:
1. 界面布局
主界面布局四部分,由上到下依次是:标题栏,消息列表,底部菜弹出的子菜单,底部菜单或输入栏。
主界面基本框架main.xml代码如下:
标题栏title_bar.xml布局如下:
完成title_bar布局后,再在valuesstyles.xml添加自定义标题栏主题
消息列表的服务端消息item布局item_left.xml
消息列表的用户消息item布局item_right.xml
弹出的子菜单布局child_menu.xml如下:
由底部菜单切换到输入框,输入框bottom_menu_layout2.xml布局如下:
2. 代码实现
MainActivity.java
package com.example.wxdemo;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnFocusChangeListener;
import android.view.ViewGroup;
import android.view.Window;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.TextView;
public class MainActivity extends Activity implements View.OnClickListener {
private LinearLayout bottomLayout;// 底部菜单父框架
private LinearLayout bottomMenuLayout1;// 底部菜单布局
private LinearLayout bottomMenuLayout2;// 底部输入框布局
private RelativeLayout btn1;// “用户绑定”按钮布局
private RelativeLayout btn2;// “扫描签到”按钮布局
private RelativeLayout btn3;// “更多”按钮布局
private LinearLayout popLayout1;
private LinearLayout popLayout2;
private LinearLayout popLayout3;// 弹出的子菜单父框架布局
private LinearLayout childLayout;// “更多”按钮的子菜单
private ListView lv;
private MyAdapter adapter;
private List
以上就是实现仿微信服务号的主要代码,菜单功能并没用完全实现,可根据实际情况和需要进行添加。同时还需注意的是,底部菜单最多为3个,每个名称限制在7个字符,包含的子菜单最多只能有5个。