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

本文实例讲述了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程序设计有所帮助。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索android
, 控件
, list
, 显示
, 列表
半透明小窗体
wpf 半透明窗体、c 半透明窗体、vb半透明窗体、delphi 半透明窗体、winform 窗体半透明,以便于您获取更多的相关知识。

时间: 2024-09-20 04:52:16

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

android之RatingBar控件用法详解_Android

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

android之SeekBar控件用法详解_Android

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之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

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

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

Android自定义日历控件实例详解_Android

为什么要自定义控件 有时,原生控件不能满足我们对于外观和功能的需求,这时候可以自定义控件来定制外观或功能:有时,原生控件可以通过复杂的编码实现想要的功能,这时候可以自定义控件来提高代码的可复用性. 如何自定义控件 下面我通过我在github上开源的Android-CalendarView项目为例,来介绍一下自定义控件的方法.该项目中自定义的控件类名是CalendarView.这个自定义控件覆盖了一些自定义控件时常需要重写的一些方法. 构造函数 为了支持本控件既能使用xml布局文件声明,也可在ja

Android UI组件AppWidget控件入门详解_Android

Widget引入  我们可以把Widget理解成放置在桌面上的小组件(挂件),有了Widget,我们可以很方便地直接在桌面上进行各种操作,例如播放音乐.  当我们长按桌面时,可以看到Widget选项,如下图所示:  点击上图中箭头处的widgets图标,会出现如下界面:(都是widget)  长按上图中的任意一个widget,就可以将其放到桌面上.  Widget的使用Widget的实现思路  (1)在AndroidManifest中声明AppWidget:  (2)在xml目录中定义AppWi

Android滚轮选择时间控件使用详解_Android

滚轮选择控件 Android自带的选择时间控件有点丑,往往产品和设计都比较嫌弃,希望做成ios一样的滚轮选择,下面是我在NumberPicker的基础上自定义的选择控件,效果如下: 原理 基于NumberPicker实现 动态填充数值 联动 接口监听回调 实现滚轮效果有github上mark比较多的WheelView,但是阅读源码发现数据是一次性填入的,选择时间的话,填入10年就是10*365=3650条数据,也就是new出三千多个TextView,想想都觉得恐怖,肯定是不行的,于是便想到用Nu

.net 实现图片上传的同时在网页中显示,主要是上传控件没有事件,想不出怎么弄,求大手指点

问题描述 .net实现图片上传的同时在网页中显示,主要是上传控件没有事件,想不出来怎么弄,求大手指点 解决方案 解决方案二:如果你是用的服务器控件,那也有事件的啊如果你不是的话,那就要用js来通知更新,可以的方法有:1.后台返回js,更新指定img2.前端定时轮询,超出次数则提示上传失败