`

Android 在列表List中显示半透明小窗体效果的控件

阅读更多
想实现图中这样中间有半透明窗体的效果么?


Android 在列表List中显示半透明小窗体效果的控件,多的不多直接上代码,要说的都在注释里了:
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 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"  
/>  
  • 大小: 54.1 KB
分享到:
评论
1 楼 yangjiantong 2011-08-03  
不错,你好,请问一下这图片中的下载功能是怎么实现的呢?点击下载按钮,如何实现在通知上和下载管理界面上都有下载进度条,并且如何控制下载的暂停、继续、取消下载等,期望您的解答,谢谢!

相关推荐

    Android实现在列表List中显示半透明小窗体效果的控件用法详解

    在Android开发中,有时我们希望在用户滚动列表(ListView或者RecyclerView)时,显示一个半透明的小窗体,来提供一些提示或反馈。本实例详细介绍了如何实现这一效果,主要涉及以下知识点: 1. **WindowManager**: ...

    VB控件【珍藏版】

    - **Caption**: 窗体的标题,显示在窗体的标题栏上。 - **ClipControls**: 决定`Paint`事件的`Graphics`方法是重画整个对象还是仅重画新显示的区域,取值为`True`或`False`。 - **ControlBox**: 决定窗体是否包含...

    vista界面编程控件

    在Windows Vista操作系统中引入了一种新的视觉风格,被称为 Aero(Aero Glass),它带来了透明、半透明以及动态效果,极大地提升了用户体验。这种界面风格在后续的Windows 7和Windows 8中得到了延续和改进。 在VB中...

    C#编程经验技巧宝典

    6 &lt;br&gt;0014 如何锁定窗体中的控件 6 &lt;br&gt;0015 统一窗体中控件的字体设置 7 &lt;br&gt;0016 通过“格式”菜单布局窗体 7 &lt;br&gt;0017 起始页中的“Visual Studio开发人员新闻” 7 &lt;br&gt;1.3 MSDN帮助的...

    身份证号码校验.pdf

    * 创建了半透明对话框和不规则对话框应用程序 * 实现了收缩对话框应用程序和基于对话框的托盘程序 * 为对话框应用程序添加了菜单栏和工具栏 * 模式对话框与非模式对话框和属性页对话框 * 向导式对话框和为对话框应用...

    VC开发经验汇总300例

    14. 半透明窗体:利用SetLayeredWindowAttributes函数,可以设置窗口的透明度和颜色关键值。 15. 透明窗体:通过SetWindowLong改变窗口样式,加入WS_EX_LAYERED,然后调用UpdateLayeredWindow实现透明效果。 16. ...

    Visual C++程序开发范例宝典(光盘) 第四部分

    实例039 半透明窗体 实例040 创建字型窗体 实例041 百叶窗窗体 实例042 类似Office助手 第2章 控件应用 2.1 按钮控件典型实例 实例043 AVI动画按钮 实例044 GIF动画按钮 实例045 图文按钮 实例046 不规则...

    Visual C++程序开发范例宝典(光盘) 第八部分

    实例039 半透明窗体 实例040 创建字型窗体 实例041 百叶窗窗体 实例042 类似Office助手 第2章 控件应用 2.1 按钮控件典型实例 实例043 AVI动画按钮 实例044 GIF动画按钮 实例045 图文按钮 实例046 不规则...

    C#经典编程例子500

    - **半透明渐显窗体**:实现窗体的半透明效果和渐变效果。 - **动画显示窗体**:使用动画效果来显示或隐藏窗体。 - **多媒体处理**:包括视频播放、摄像头监控等。 - **数据加密技术**:涉及文件加密、数据库访问等...

    asp.net 一些基本操作

    有时我们需要让窗体的某些部分呈现半透明效果,这可以通过设置`Opacity`属性来实现。同时,我们也可以设置窗体的背景颜色以及透明度。 **示例代码**: ```csharp public Form1() { InitializeComponent(); this....

    Visual C++ 程序开发范例宝典 源码 光盘 part2

    cc实例039 半透明窗体 cc实例 040 创建字型窗体 cc实例041 百叶窗窗体 cc实例042 类似Office助手 第2章 控件应用 2.1 按钮控件典型实例 cc 实例043 AVI动画按钮 cc实例044 GIF动画按钮 cc实例045 ...

    Visual C++程序开发范例宝典(PDF扫描版).part3

     cc实例039 半透明窗体   cc实例040 创建字型窗体   cc实例041 百叶窗窗体   cc实例042 类似Office助手  第2章 控件应用   2.1 按钮控件典型实例   cc实例043 AVI动画按钮   cc实例044 GIF...

    Visual C++程序开发范例宝典(PDF扫描版).part2

     cc实例039 半透明窗体   cc实例040 创建字型窗体   cc实例041 百叶窗窗体   cc实例042 类似Office助手  第2章 控件应用   2.1 按钮控件典型实例   cc实例043 AVI动画按钮   cc实例044 GIF...

    Visual C++范例开发大全 目录.pdf

    这一章详细讲解了窗体操作,如实例003中的无子窗口MDI程序,以及如何显示和隐藏状态栏、在状态栏上加载图像和创建滚动字幕等。这些实例涵盖了基本的窗口操作和UI元素的使用。 第3章涉及对话框的应用,对话框在...

    C#在GDI+里实现橡皮条技术

    橡皮条效果通常是一个半透明的矩形,覆盖在临时线条上。最后,清除橡皮条痕迹,只保留最终的线条。 ```csharp private void pictureBox1_Paint(object sender, PaintEventArgs e) { Graphics g = e.Graphics; /...

    VC范例开发大全.docx

    【第3篇】对话框应用实例,覆盖了对话框的界面设计,如设置启动位置、半透明效果、不规则形状,以及拖动和收缩对话框的操作。对话框应用程序可以添加菜单栏、工具栏和右键菜单,同时包含了模式对话框、非模式对话框...

    QQ界面源码

    QQ界面源码实现 自绘控件 换肤 QQ界面 界面换肤 美化 异形窗口 vista 样式 透明窗体 自绘控件 vc vb delphi 编程 源码 代码 例子 磨沙 半透明 开发包 免费 破解 button dialog frame XP 下载 自绘按钮 菜单 标题栏 ...

Global site tag (gtag.js) - Google Analytics