欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android實現(xiàn)在列表List中顯示半透明小窗體效果的控件用法詳解

 更新時間:2016年06月28日 09:04:42   作者:zeo  
這篇文章主要介紹了Android實現(xiàn)在列表List中顯示半透明小窗體效果的控件用法,結(jié)合實例形式分析了Android半透明提示框的實現(xiàn)與設(shè)置技巧,需要的朋友可以參考下

本文實例講述了Android實現(xiàn)在列表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;
  // 實現(xiàn)Runnable接口的類
  private RemoveWindow mRemoveWindow = new RemoveWindow();
  //在Handler里能實現(xiàn)對UI線程的修改
  private Handler mHandler;
  //窗體管理器
  private WindowManager mWindowManager;
  //顯示在窗體中間半透明的字體框
  private TextView mDialogText;
  //是否正在顯示中
  private boolean mShowing;
  //是否準(zhǔn)備好顯示了
  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);
    //得到布部創(chuàng)建者
    LayoutInflater inflate = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    //得到TextView
    mDialogText = (TextView) inflate.inflate(R.layout.list_position, null);
    //設(shè)TextView為可見
    mDialogText.setVisibility(View.INVISIBLE);
    //通過handler把mDialogText展示出來
    mHandler = new Handler();
    //要用post可實現(xiàn)在多線程里調(diào)用UI線程并改變
    mHandler.post(new Runnable() {
      public void run() {
        mReady = true;
        //窗體的布局參數(shù)
        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);
      }
    });
  }
  //設(shè)置可見性
  public void setmReady(boolean mReady) {
    this.mReady = mReady;
  }
  /**
   * 一般用在onScroll方法中,參數(shù)是字符串,不能為空,會取第一個字符顯示
   * @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);
    }
    //設(shè)TextView顯示的字體
    mDialogText.setText(((Character) firstLetter).toString());
    //移除mRemoveWindow實現(xiàn)的Runnable接口類
    mHandler.removeCallbacks(mRemoveWindow);
    //添加mRemoveWindow實現(xiàn)的Runnable接口類,并設(shè)延時
    mHandler.postDelayed(mRemoveWindow, DELAYED_HIDEN);
    mPrevLetter = firstLetter;
  }
  /**
   * 實現(xiàn)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"
/>

更多關(guān)于Android相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Android編程之a(chǎn)ctivity操作技巧總結(jié)》、《Android文件操作技巧匯總》、《Android編程開發(fā)之SD卡操作方法匯總》、《Android開發(fā)入門與進(jìn)階教程》、《Android資源操作技巧匯總》、《Android視圖View技巧總結(jié)》及《Android控件用法總結(jié)

希望本文所述對大家Android程序設(shè)計有所幫助。

相關(guān)文章

最新評論