联系人列表字母排序索引(二)
来源:互联网 发布:摩卡监控软件 编辑:程序博客网 时间:2024/05/18 02:24
上一篇讲到自定义View,右边字母索引,如果还没看第一篇文章的,请先看联系人列表字母排序索引(一)。今天这里讲如何展示悬浮窗并显示对应的字母。
首先,我们需要一个悬浮窗,然后将悬浮窗和字母索引链接起来。
1.悬浮窗的实现。要实现一个悬浮窗口,我们需要通过WindowManger来实现,这个使用是比较简单的。
新建一个类,LetterWindow.class 这个类需要完成的功能是,显示窗口,关闭窗口,显示指定字母,可以更新字母。对应的方法为
show(),update;hide()。
package com.mjc.contactlistdemo.sort_by_letter;import android.app.Activity;import android.content.Context;import android.graphics.Color;import android.graphics.PixelFormat;import android.util.DisplayMetrics;import android.view.Gravity;import android.view.WindowManager;import android.widget.TextView;import com.mjc.contactlistdemo.R;/** * Created by mjc on 2016/5/12. * 字母索引显示窗口 */public class LetterWindow { private final TextView tv; private WindowManager.LayoutParams mParams; private Context context; private WindowManager wm; public LetterWindow(Activity context) { this.context = context; wm = (WindowManager) context.getSystemService( Context.WINDOW_SERVICE); mParams = new WindowManager.LayoutParams(); mParams.type = WindowManager.LayoutParams.TYPE_APPLICATION_SUB_PANEL; mParams.format = PixelFormat.TRANSLUCENT; mParams.flags |= WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE; DisplayMetrics dm = new DisplayMetrics(); context.getWindowManager().getDefaultDisplay().getMetrics(dm); mParams.width = dm.widthPixels / 5;//窗口的宽和高 mParams.height = dm.widthPixels / 5; mParams.x = 0;//窗口不偏移 mParams.y = 0; //创建TextView tv = new TextView(context); tv.setTextColor(Color.WHITE); tv.setBackgroundResource(R.drawable.bg_contact); tv.setTextSize(30); tv.setGravity(Gravity.CENTER); } public void show(String s) { tv.setText(s); wm.addView(tv, mParams); } public void update(String s) { tv.setText(s); wm.updateViewLayout(tv, mParams); } public void hide() { wm.removeView(tv); }}构造方法中,指定了窗口的类型为应用窗口的子窗口,并设置了不接收触摸事件,不偏移,指定了窗口的宽和高等参数。这样一个简单的浮动窗口就实现了。
2.点击字母索引,显示浮动窗口,滑动时更新,以及释放关闭。
<com.mjc.contactlistdemo.sort_by_letter.IndexView android:id="@+id/civ" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_gravity="right" />
首先在activity的布局文件中,放入我们自定义的字母索引控件。然后在Activity中得到这个控件,设置监听事件
mIndexView = (IndexView) findViewById(R.id.civ); mIndexView.setOnLetterTouchedListener(this);
mLetterWindow = new LetterWindow(this);
实现字母索引的监听方法
@Override public void onTouch(String s) { mLetterWindow.show(s); } @Override public void onLetterChanged(String preLetter, String letter) { mLetterWindow.update(letter); } @Override public void onRelease() { mLetterWindow.hide(); }
很简单,效果就出来了。
0 0
- 联系人列表字母排序索引(二)
- 联系人列表字母排序索引(一)
- 联系人列表字母排序索引(三)
- 实现联系人列表字母索引
- 仿微信联系人列表滑动字母索引
- Android实现字母索引查找地名、联系人(二)
- 仿联系人列表或其他上的字母索引
- android开发中联系人列表显示字母索引
- 联系人字母索引实现
- 联系人索引字母条
- Android 联系人字母排序(仿微信)
- Android 仿联系人字母索引
- Android 仿联系人列表 实现ListView的A-Z字母排序和过滤搜索功能,并挤压效果(一)
- Android实现字母索引查找地名、联系人(一)
- Android字母索引列表
- AddressBook 联系人字母排序法
- Android带索引联系人列表
- android仿微信联系人索引列表
- java中list、set和map 的区别
- Entity Framework Code First (六)存储过程
- Eclipse安装SVN插件
- db2 数据库备份详解
- Android sdk 全下载
- 联系人列表字母排序索引(二)
- 二进制位翻转:
- java方法重载、方法重写
- Entity Framework Code First (七)空间数据类型 Spatial Data Types
- atom 编辑器安装
- runloop的mode作用是什么
- 【Linux】super daemon的配置文件
- Android仿外卖购物车
- 闲暇之余,兴趣所致