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程序设计有所帮助。

(0)

相关推荐

  • Android实现底部半透明弹出框PopUpWindow效果

    Android底部半透明弹出框PopUpWindow,供大家参考,具体内容如下 layout布局: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" androi

  • Android开发中Dialog半透明背景消失

    近日,遇到一个Dialog半透明背景消失的问题,背景需求是自定义Dialog实现警告提示框: // 初始化警告弹出框 alertDialog = new EmpAlertView(context, Utils.getIdByName(context, "style", "alert_style")); alertDialog.setCanceledOnTouchOutside(false); LayoutInflater inflater = (LayoutInfl

  • Android4.4+ 实现半透明状态栏(Translucent Bars)

    Android从4.4(KitKat) 开始进行了一些视觉上的改善和提升,其中包括让状态栏(Status Bar)和下方导航栏(Navigation Bar)进行半透明处理,可以使APP内容向上下延伸,使整个画面的利用度大幅度提升,本篇就来说说这个"半透明状态栏"(Translucent Bars). 简单做了个Demo效果如下图 *这里解释个误区,国内开发者和设计师经常把这种半透明效果称为沉浸式状态栏这是不对的, 沉浸式Immersive mode,官方解释为hiding all s

  • Android编程实现设置按钮背景透明与半透明及图片背景透明的方法

    本文实例讲述了Android编程实现设置按钮背景透明与半透明及图片背景透明的方法.分享给大家供大家参考,具体如下: Button或者ImageButton的背景设为透明或者半透明: 半透明 复制代码 代码如下: <Button android:background="#e0000000" ... /> 透明 复制代码 代码如下: <Button android:background="#00000000" ... /> 颜色和不透明度 (al

  • Android仿Iphone屏幕底部弹出半透明PopupWindow效果

    本文实例为大家分享了Android仿Iphone屏幕底部弹出效果的具体代码,供大家参考,具体内容如下 main.xml如下: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent&

  • Android Menu半透明效果的开发实例

    不知道大家是否用过天天动听,对于它界面上的半透明Menu效果,笔者感觉非常漂亮.下面是天天动听半透明Menu的截图,欣赏下吧: 感觉还不错吧?那么如何实现这种半透明Menu效果呢?本文就重点讨论并给出这种Menu的具体代码实现过程. 首先分析下实现这种半透明Menu所需做的工作,并进行合理分解: 1.  利用Shaper设置一个半透明圆角背景. 2.  定义Menu布局,主要就GridView,把图标都放在这个GridView. 3.  Menu事件, 通过PopupWindow或者AlertD

  • Android中设置组件半透明和透明的效果示例

    本文介绍了Android是如何设置组件半透明和透明的效果,分享出来供大家参考,下面来看看详细的介绍: 1.Button或者ImageButton的背景设为透明或者半透明 半透明 <Button android:background="#e0000000" ... /> 透明 <Button android:background="#00000000" ... /> 颜色和不透明度 (alpha) 值以十六进制表示法表示.任何一种颜色的值范围都

  • Android编程实现popupwindow弹出后屏幕背景变成半透明效果

    本文实例讲述了Android编程实现popupwindow弹出后屏幕背景变成半透明效果的方法.分享给大家供大家参考,具体如下: android中popupwindow弹出后,屏幕背景变成半透明这个效果很普通.实现的方法也很多.我使用的可能是最简单的一种,就是设置一下getWindows的透明度.不多说上代码 /** * 设置添加屏幕的背景透明度 * @param bgAlpha */ public void backgroundAlpha(float bgAlpha) { WindowManag

  • Android编程自定义圆角半透明Dialog的方法

    本文实例讲述了Android编程自定义圆角半透明Dialog的方法.分享给大家供大家参考,具体如下: 效果图如下: 只是在实例化的时候使用带样式的构造函数即可 new MyDialog(GameActivity.this, R.style.dialog); 在value文件夹中添加mydialogthemes.xml <?xml version="1.0″ encoding=" utf-8″?> <resources> <style name="

  • 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

  • android之SeekBar控件用法详解

    MainActivity.java package com.example.mars_2400_seekbar; import android.support.v7.app.ActionBarActivity; import android.support.v7.app.ActionBar; import android.support.v4.app.Fragment; import android.app.Activity; import android.os.Bundle; import a

  • android之RatingBar控件用法详解

    MainActivity.java package com.example.mars_2500_ratingbar; import android.support.v7.app.ActionBarActivity; import android.support.v7.app.ActionBar; import android.support.v4.app.Fragment; import android.app.Activity; import android.os.Bundle; import

  • ASP.NET中Label控件用法详解

    Label 控件提供了一种在 ASP.NET 网页中以编程方式设置文本的方法.当希望在运行时更改网页中的文本(比如响应按钮单击)时,通常可以使用 Label 控件. 一.属性 Label控件的常用属性及说明如表1所示. 表1 Label控件常用属性及说明 属性 说明 ID 控件的ID名称 Text 控件显示的文本 Width 控件的宽度 Visible 控件是否可见 CssClass 控件呈现的样式 BackColor 控件的背景颜色 Enabled 控件是否可用 下面详细介绍Label控件的一

  • Python GUI编程学习笔记之tkinter中messagebox、filedialog控件用法详解

    本文实例讲述了Python GUI编程学习笔记之tkinter中messagebox.filedialog控件用法.分享给大家供大家参考,具体如下: 相关内容: messagebox 介绍 使用 filedialog 介绍 使用 首发时间:2018-03-04 22:18 messagebox: 介绍:messagebox是tkinter中的消息框.对话框 使用: 导入模块:import tkinter.messagebox 选择消息框的模式: 提示消息框:[返回"ok"] tkint

  • Android 仿淘宝、京东商品详情页向上拖动查看图文详情控件DEMO详解

    一.淘宝商品详情页效果 我们的效果 二.实现思路 使用两个scrollView,两个scrollView 竖直排列,通过自定义viewGroup来控制两个scrollView的竖直排列,以及滑动事件的处理.如下图 三.具体实现 1.继承viewGroup自定义布局View 重写onMeasure()和onLayout方法,在onLayout方法中完成对两个子ScrollView的竖直排列布局,代码如下: 布局文件: <RelativeLayout xmlns:android="http:/

  • Android仿京东淘宝自动无限循环轮播控件思路详解

    在App的开发中,很多的时候都需要实现类似京东淘宝一样的自动无限轮播的广告栏,所以就自己写了一个,下面是我自定义控件的思路和过程. 一.自定义控件属性 新建自定义控件SliderLayout继承于RelativeLayout,首先要考虑的就是自定义的控件需要扩展那些属性,把这些属性列出来.在这里是要实现类似于京东淘宝的无限轮播广告栏,那么首先想到的就是轮播的时长.轮播指示器的样式等等.我在这里列举了一些并且结合到了代码中. 1.扩展属性 (1)是否开启自动轮播的功能. (2)指示器的图形样式,一

  • ASP.NET中Image控件使用详解

    Image控件又称图像控件,主要用来显示用户的图片或图像信息. 一.属性 表1 Image控件常用属性及说明 属性 说明 ID 控件ID ImageAlign 获取或设置Image控件相对于网页上其他元素的对齐方式 ImageUrl 获取或设置在Image控件中显示的图像的位置 Width 控件的宽度 Visible 控件是否可见 CssClass 控件呈现的样式 BackColor 控件的背景颜色 Enabled 控件是否可用 Image控件的大部分属性和Label控件类似,在此主要讲解一下其

  • Android 带清除功能的输入框控件实例详解

    Android 带清除功能的输入框控件实例详解 今天,看到一个很好的自定义输入框控件,于是记录一下. 效果很好: 一,自定义一个类,名为ClearEditText package com.example.clearedittext; import android.content.Context; import android.graphics.drawable.Drawable; import android.text.Editable; import android.text.TextWatc

  • java中栈和队列的实现和API的用法(详解)

    在java中要实现栈和队列,需要用到java集合的相关知识,特别是Stack.LinkedList等相关集合类型. 一.栈的实现 栈的实现,有两个方法:一个是用java本身的集合类型Stack类型:另一个是借用LinkedList来间接实现Stack. 1.Stack实现 直接用Stack来实现非常方便,常用的api函数如下: boolean        isEmpty() // 判断当前栈是否为空 synchronized E        peek() //获得当前栈顶元素 synchro

随机推荐