android 仿微信demo————微信顶部操作栏搜索按钮实现(查询通讯录好友功能)
Posted 你要永远相信光z
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android 仿微信demo————微信顶部操作栏搜索按钮实现(查询通讯录好友功能)相关的知识,希望对你有一定的参考价值。
android 仿微信demo————注册功能实现(移动端)
android 仿微信demo————注册功能实现(服务端)
android 仿微信demo————登录功能实现(移动端)
android 仿微信demo————登录功能实现(服务端)
android 仿微信demo————微信消息界面实现(移动端)
android 仿微信demo————微信消息界面实现(服务端)
android 仿微信demo————微信通讯录界面功能实现(移动端,服务端)
android 仿微信demo————微信顶部操作栏界面实现
android 仿微信demo————微信顶部操作栏搜索按钮实现(查询通讯录好友功能)
android 仿微信demo————微信顶部操作栏加号按钮实现(弹出子菜单)
上一篇中实现微信顶部操作栏界面,并没有实现按钮点击事件跳转的activity,这一篇主要实现搜索按钮功能(查询通讯录好友)
微信顶部操作栏搜索按钮实现(查询通讯录好友功能)
下面我们来实现第一个按钮功能(搜索通讯录好友)
观察微信,当点击搜索按钮时页面会发送变化,页面的顶部是一个搜索框,右边还包括一个取消按钮,点击可返回到之前的页面,下面就是一些可以搜索的指定内容(不实现),在搜索框中可以搜索联系人,可通过字母搜索(这里只实现首字母检索),和名称检索。
上面这些功能,总的来说就是点击按钮跳转到另一个activity,然后在activity实现这些布局,搜索功能在activity中进行处理
下面给出点击搜索按钮跳转的activity的布局
search.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@color/white">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:background="#E5E5E5">
<android.support.v7.widget.SearchView
android:id="@+id/searview"
android:layout_width="300dp"
android:layout_height="30dp"
android:layout_marginLeft="10dp"
android:layout_marginTop="30dp"
android:background="@color/white"
app:iconifiedByDefault="false"
app:queryHint="搜索" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:background="@null"
android:text="取消"
android:textColor="@color/massageLogin"
android:onClick="back"/>
</LinearLayout>
<LinearLayout
android:id="@+id/label"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="#E5E5E5">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:layout_gravity="center_horizontal"
android:text="搜索指定内容"
android:textColor="#BEBEBE"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:divider="@drawable/login_dvier"
android:gravity="center_horizontal"
android:layout_marginTop="30dp"
android:showDividers="middle">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingHorizontal="30dp"
android:text="朋友圈"
android:textColor="@color/massageLogin"
android:textSize="14dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingHorizontal="30dp"
android:text="文章"
android:textColor="@color/massageLogin"
android:textSize="14dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingHorizontal="30dp"
android:text="公众号"
android:textColor="@color/massageLogin"
android:textSize="14dp" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:divider="@drawable/login_dvier"
android:gravity="center_horizontal"
android:layout_marginTop="30dp"
android:layout_marginLeft="-6dp"
android:showDividers="middle">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingHorizontal="30dp"
android:text="小程序"
android:textColor="@color/massageLogin"
android:textSize="14dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingHorizontal="30dp"
android:text="音乐"
android:textColor="@color/massageLogin"
android:textSize="14dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingHorizontal="30dp"
android:text=" 表情"
android:textColor="@color/massageLogin"
android:textSize="14dp" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:divider="@drawable/login_dvier"
android:layout_marginLeft="40dp"
android:layout_marginTop="30dp"
android:showDividers="middle">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingHorizontal="30dp"
android:text="服务"
android:textColor="@color/massageLogin"
android:textSize="14dp" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/top"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:text="联系人"
android:textColor="#A8A8A8"/>
<View
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:layout_marginLeft="10dp"
android:background="#90909090" />
</LinearLayout>
<ListView
android:id="@+id/listView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:divider="@drawable/main_list_divider_line"
android:dividerHeight="1.5px"
android:layout_marginBottom="50dp">
</ListView>
</LinearLayout>
上面布局包括我们前面说过的搜索框(searchview),右边的取消按钮(button),以及下面的搜索指定内容,对应事件的处理代码在activity中进行处理,还有当在搜索框输入内容显示的联系人和listview(默认情况下不显示),下面给出对应的actiivty
创建上面布局对应的activity
Search.java
package com.zhang.test.wxchatdemo1;
import android.graphics.Color;
import android.os.Build;
import android.os.Bundle;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.SearchView;
import android.text.TextUtils;
import android.view.View;
import android.widget.BaseAdapter;
import android.widget.LinearLayout;
import android.widget.ListView;
import com.zhang.test.wxchatdemo1.adapter.SearchSortAdapter;
import com.zhang.test.wxchatdemo1.tools.User;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
public class Search extends AppCompatActivity {
//声明组件
private SearchView mSearchView;
private ListView mListView;
private LinearLayout label;
private LinearLayout top;
//创建集合用户处理搜索功能
private List<User> list = MainWeixin.list;
private List<User> list1 = null;
public static List<Map<String, String>> data = MainWeixin.data;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.search);
/* 隐藏自带标题*/
ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
actionBar.hide();
}
if (Build.VERSION.SDK_INT >= 21) {
View decorView = getWindow().getDecorView();
int option = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN //全屏显示
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR; //因为背景为浅色所以将状态栏字体设置为黑色
decorView.setSystemUiVisibility(option);
getWindow().setStatusBarColor(Color.TRANSPARENT);
}
//初始化组件
mListView = (ListView) findViewById(R.id.listView);
label = (LinearLayout) findViewById(R.id.label);
top = (LinearLayout) findViewById(R.id.top);
mSearchView = (SearchView) findViewById(R.id.searview);
//设置searchview适配器
mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return true;
}
//获取输入内容
@Override
public boolean onQueryTextChange(String newText) {
//如果newText是长度为0的字符串,则显示下面的指定搜索内容,不显示listview和联系人
if (TextUtils.isEmpty(newText)){
label.setVisibility(View.VISIBLE);
mListView.setVisibility(View.GONE);
top.setVisibility(View.GONE);
}else { //否则显示listview显示结果,其他都隐藏掉
label.setVisibility(View.GONE);
mListView.setVisibility(View.VISIBLE);
System.out.println("+++++" + newText);
list1 = new ArrayList<>();//创建集合,存储检索到的数据
/*检索数据*/
for (int i = 0; i < list.size(); i ++) {
char[] inputText = newText.toCharArray();
char[] chars = list.get(i).getName().toCharArray();
for (int j = 0; j < inputText.length; j++) {
if (j < chars.length) {
if (inputText[j] == chars[j] ||
newText.equalsIgnoreCase(list.get(i).getFirstLetter())) {
if (j == (inputText.length - 1)) {
top.setVisibility(View.VISIBLE);
list1.add(new User(list.get(i).getName()));
}
}else {
break;
}
}
}
}
if (list1.size() != 0) {
//创建自定义的适配器,用于把数据显示在组件上
BaseAdapter adapter = new SearchSortAdapter(getApplicationContext(), data,
list1, newText, mListView);
//设置适配器
mListView.setAdapter(adapter);
以上是关于android 仿微信demo————微信顶部操作栏搜索按钮实现(查询通讯录好友功能)的主要内容,如果未能解决你的问题,请参考以下文章
android 仿微信demo————微信顶部操作栏加号按钮实现(弹出子菜单)
android 仿微信demo————微信顶部操作栏加号按钮实现(弹出子菜单)
android 仿微信demo————微信顶部操作栏搜索按钮实现(查询通讯录好友功能)
android 仿微信demo————微信顶部操作栏搜索按钮实现(查询通讯录好友功能)