其中overlay是提示字母View的布局文件,如下:
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="100dp" android:maxWidth="100dp" android:gravity="center"
android:textSize="55sp" android:textColor="#ffffffff"
android:background="@drawable/blue_bg" android:padding="10dp"
android:layout_margin="8dp" android:visibility="invisible" />
MainActivity中,onCreate方法如下:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mWindowManager = (WindowManager)getSystemService(Context.WINDOW_SERVICE);
setListAdapter(new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, mStrings));
getListView().setOnScrollListener(this);
LayoutInflater inflate = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mDialogText = (TextView) inflate.inflate(R.layout.overlay, null);
mDialogText.setVisibility(View.INVISIBLE);
mHandler.post(new Runnable() {
public void run() {
mReady = true;
WindowManager.LayoutParams lp = new WindowManager.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.TYPE_APPLICATION,
WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE
| WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
PixelFormat.TRANSLUCENT);
mWindowManager.addView(mDialogText, lp);
}});
}
首先像ListView中填充数据:
setListAdapter(new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, mStrings));
加载首字母提示的View布局:
LayoutInflater inflate = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mDialogText = (TextView) inflate.inflate(R.layout.overlay, null);
mDialogText.setVisibility(View.INVISIBLE);
mHandler.post(new Runnable() {
public void run() {
mReady = true;
WindowManager.LayoutParams lp = new WindowManager.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.TYPE_APPLICATION,
WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE
| WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
PixelFormat.TRANSLUCENT);
mWindowManager.addView(mDialogText, lp);
}});
注册滑动监听事件:
getListView().setOnScrollListener(this);
在滑动时间onScroll方法中,修改展示首字母提示:
if (mReady) {
char firstLetter = mStrings[firstVisibleItem].charAt(0);
if (!mShowing && firstLetter != mPrevLetter) {
mShowing = true;
mDialogText.setVisibility(View.VISIBLE);
}
mDialogText.setText(((Character)firstLetter).toString());
mHandler.removeCallbacks(mRemoveWindow);
mHandler.postDelayed(mRemoveWindow, 1000);
mPrevLetter = firstLetter;
}
mHandler.postDelayed(mRemoveWindow, 1000);
延迟一秒执行.项目源码见:http://bigcateasymorse.googlecode.com/svn/trunk/listview_fristletter/
分享到:
相关推荐
实现"ListView滑动时首字母提示"这一功能,主要涉及以下几个关键点: 1. 数据结构与排序:首先,你需要确保你的数据模型(如Java Bean)包含一个表示首字母的字段,例如`firstChar`。在加载数据时,先根据这个字段...
综上所述,实现"ListView滑动显示首字母"的功能涉及了自定义ListView适配器、滑动事件监听、首字母计算和显示、性能优化以及测试等多个方面。在实际开发中,可以参考提供的listview_fristletter项目,结合以上知识点...
本示例源码“Android应用源码之带有拼音首字母排序的listview”着重于如何在ListView中实现基于拼音首字母的排序功能,这在中文应用中非常常见,如联系人应用或各类列表检索。下面将详细介绍这一功能的实现原理和...
在Android的ListView中,这种功能通常通过实现一个可滚动的侧边栏与ListView同步,当用户点击字母时,ListView会跳转到对应首字母的数据项。 【描述】"ListviewFilter-master(listView右侧字母索引).zip"是一个项目...
10. **第三方库支持**:Android社区提供了许多库,如SectionIndexer、FastScroll、SwipeRefreshLayout等,可以帮助开发者更轻松地实现快速滑动和首字母提示功能。 通过理解和熟练掌握以上知识点,开发者可以创建出...
侧边栏的点击事件需要与ListView的滚动事件关联,当用户选择一个字母时,计算出对应首字母的数据项在列表中的位置,并调用ListView的`smoothScrollToPosition()`方法实现平滑滚动。 4. **搜索关键字功能**: 实现...
总的来说,创建一个带有首字母提示的快速滑动列表需要对Android的ListView、Adapter机制有深入理解,同时掌握事件监听、视图复用和数据异步加载等技巧。通过实践和不断优化,我们可以为用户提供流畅且高效的接触人...
在Android开发中,快速滑动列表(FastScroll ListView)结合首字母提示功能是常见的用户界面设计,尤其在处理大量数据时,如通讯录应用。这种功能可以提高用户体验,让用户能够迅速定位并选择所需项。本教程将深入...
本篇文章将详细讲解如何在Android中实现ListView的字母排序以及调整字母位置。 首先,我们需要理解字母排序的基本原理。通常,我们可以通过对数据源进行排序来实现这一目标。假设我们的数据源是一个包含字符串的...
2. **计算首字母**:在ListView的滚动监听事件中,计算当前可视范围内第一个Item的首字母,并更新Header View中的TextView。 3. **处理边界情况**:确保在ListView顶部时,首字母提示为第一个数据项的首字母;在...
它的作用是在ListView的右侧或顶部显示一个可滑动的字母条,用户可以通过点击字母来快速跳转到对应首字母的数据项。这种设计在联系人应用或者带有大量分类数据的列表中非常常见。 要实现这个功能,我们主要涉及以下...
- 字母索引通常通过一个侧面的"索引栏"(也称为快速滚动条)来实现,用户点击字母时,ListView滚动到对应首字母的数据位置。 - 首先,需要对数据进行预处理,计算每个条目的首字母,并根据首字母构建一个索引列表...
通过学习和理解这个源码项目,开发者不仅可以掌握如何在Android应用中实现按字母索引滑动的功能,还能深入理解Adapter模式、触摸事件处理、性能优化等相关技术,这对提升Android开发技能大有裨益。
这个压缩包文件“安卓A-Z字母排序索引相关-匹配中文字符串的拼音首字母或英文字符串的首字母缩写.rar”很可能包含了一系列实现这一功能的代码示例。 匹配中文字符串的拼音首字母通常涉及到以下知识点: 1. 汉字转...
在提供的`SlippingSearch`文件中,可能包含了实现滑动字母定位功能的相关代码,包括自定义的侧边栏布局、ListView适配器以及滚动监听器的实现。通过阅读和理解这些代码,你可以更深入地掌握滑动字母定位的实现细节,...
在Android开发中,实现“快速滑动列表+首字母提示”功能,通常是为了提供类似iPhone通讯录的用户体验。这个功能让用户能够迅速定位并选择所需的联系人,通过滑动右侧的字母栏,列表会自动滚动到对应首字母的联系人。...
滑动显示首字母的ListView是一种在Android开发中常见的优化ListView用户体验的设计。这种设计通常用于大量数据的列表展示,特别是当数据需要按照字母顺序排列时,用户可以通过滑动来快速定位到目标条目。以下是对这...
以上就是如何在Android中实现ListView字母排序、字母挤压效果、右侧快速选中字母和搜索关键字功能的详细步骤。在实际开发中,你可能需要根据项目需求对这些功能进行微调,但基本思路和代码结构应当类似。希望这个...
`Android字母索引ListView`是ListView的一个增强版,它模仿了微信等应用中常见的联系人列表功能,允许用户通过点击屏幕侧边的字母栏快速跳转到对应首字母的条目,提高用户体验。这个实现通常涉及到自定义Adapter、...