Android实现在列表List中显示半透明小窗体效果的控件用法详解
程序员文章站
2024-03-31 17:19:46
本文实例讲述了android实现在列表list中显示半透明小窗体效果的控件用法。分享给大家供大家参考,具体如下:
android 在列表list中显示半透明小窗体效果的控...
本文实例讲述了android实现在列表list中显示半透明小窗体效果的控件用法。分享给大家供大家参考,具体如下:
android 在列表list中显示半透明小窗体效果的控件,多的不多直接上代码,要说的都在注释里了:
import com.hiapk.market.r; import android.content.context; import android.graphics.pixelformat; import android.os.handler; import android.view.layoutinflater; import android.view.view; import android.view.windowmanager; import android.view.windowmanager.layoutparams; import android.widget.textview; /** * 窗口中间显示半透明提示框的小组件 * 用法:1. new 2. showprevletter(string prevletter) * @author ll * */ public class prevletterdialog { //窗体消失的延时时间 private static final int delayed_hiden = 500; // 实现runnable接口的类 private removewindow mremovewindow = new removewindow(); //在handler里能实现对ui线程的修改 private handler mhandler; //窗体管理器 private windowmanager mwindowmanager; //显示在窗体中间半透明的字体框 private textview mdialogtext; //是否正在显示中 private boolean mshowing; //是否准备好显示了 private boolean mready; //显示在窗体中的字符 private char mprevletter = character.min_value; /** * 注明:context一定要在可见ui中通过getcontext()获得,否则会抛异常。 * @param context */ public prevletterdialog(context context) { //得到窗体管理器 mwindowmanager = (windowmanager) context.getsystemservice(context.window_service); //得到布部创建者 layoutinflater inflate = (layoutinflater) context.getsystemservice(context.layout_inflater_service); //得到textview mdialogtext = (textview) inflate.inflate(r.layout.list_position, null); //设textview为可见 mdialogtext.setvisibility(view.invisible); //通过handler把mdialogtext展示出来 mhandler = new handler(); //要用post可实现在多线程里调用ui线程并改变 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); //把textview添加到窗体中去 mwindowmanager.addview(mdialogtext, lp); } }); } //设置可见性 public void setmready(boolean mready) { this.mready = mready; } /** * 一般用在onscroll方法中,参数是字符串,不能为空,会取第一个字符显示 * @param prevletter */ public void showprevletter(string prevletter) { if (!mready) { return; } char firstletter = prevletter.charat(0); if (!mshowing && firstletter != mprevletter) { mshowing = true; mdialogtext.setvisibility(view.visible); } //设textview显示的字体 mdialogtext.settext(((character) firstletter).tostring()); //移除mremovewindow实现的runnable接口类 mhandler.removecallbacks(mremovewindow); //添加mremovewindow实现的runnable接口类,并设延时 mhandler.postdelayed(mremovewindow, delayed_hiden); mprevletter = firstletter; } /** * 实现runnable接口的类 */ private final class removewindow implements runnable { public void run() { removewindow(); } } private void removewindow() { if (mshowing) { mshowing = false; mdialogtext.setvisibility(view.invisible); } } }
以下是xml文件:
<?xml version="1.0" encoding="utf-8"?> <textview xmlns:android="http://schemas.android.com/apk/res/android" android:textsize="50sp" android:textcolor="@color/band_common_content" android:background="@drawable/common_list_title" android:minwidth="70dip" android:layout_height="wrap_content" android:padding="5dip" android:gravity="center" />
更多关于android相关内容感兴趣的读者可查看本站专题:《android编程之activity操作技巧总结》、《android文件操作技巧汇总》、《android编程开发之sd卡操作方法汇总》、《android开发入门与进阶教程》、《android资源操作技巧汇总》、《android视图view技巧总结》及《android控件用法总结》
希望本文所述对大家android程序设计有所帮助。