本文实例讲述了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"?>

更多关于Android相关内容感兴趣的读者可查看本站专题:《Android编程之activity操作技巧总结》、《Android文件操作技巧汇总》、《Android编程开发之SD卡操作方法汇总》、《Android开发入门与进阶教程》、《Android资源操作技巧汇总》、《Android视图View技巧总结》及《Android控件用法总结》

希望本文所述对大家Android程序设计有所帮助。

更多相关文章

  1. [Android] Android使用序列化接口Parcelable、Serializable
  2. Android(安卓)进阶学习:事件分发机制完全解析,带你从源码的角度彻
  3. Android(安卓)ConstraintLayout 使用
  4. Android(安卓)3D旋转动画之Camera 和 Matrix
  5. 一些 Android(安卓)小知识点的总结
  6. 11、从头学Android之Android布局管理:LinerLayout线性布局
  7. Android资源文件中特殊字符未转义引起的编译错误
  8. Android中资源的引用
  9. 浅谈 MVP in Android

随机推荐

  1. android图片闪烁或帧动画
  2. Mac下完全卸载干净Android Studio
  3. msm8916 lcd 相关调试点指导
  4. android studio 调试android源码
  5. Android编程权威指南(第二版)— 第10章挑战
  6. 【Android】TV端项目开发挖坑总结
  7. Android的关键的持久数据应该在onPause()
  8. 在学习android + opencv遇到的各种问题
  9. Android加速度传感器实现“摇一摇”,带手
  10. Android软键盘弹出遮挡EidtText的解决方