国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

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

2019-12-12 06:09:07
字體:
來源:轉載
供稿:網友

本文實例講述了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程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 弥勒县| 古田县| 手机| 平阳县| 玛纳斯县| 兰考县| 苍梧县| 石泉县| 布拖县| 资中县| 聂拉木县| 秭归县| 黔东| 德州市| 灵武市| 依兰县| 北票市| 西平县| 商城县| 梁平县| 常熟市| 高青县| 修水县| 正宁县| 江北区| 太仆寺旗| 尉氏县| 泸州市| 新密市| 荥阳市| 华亭县| 郴州市| 上蔡县| 修文县| 克山县| 岳普湖县| 甘泉县| 会宁县| 荔波县| 萝北县| 漾濞|