Android實(shí)現(xiàn)在列表List中顯示半透明小窗體效果的控件用法詳解
本文實(shí)例講述了Android實(shí)現(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 {
//窗體消失的延時(shí)時(shí)間
private static final int DELAYED_HIDEN = 500;
// 實(shí)現(xiàn)Runnable接口的類
private RemoveWindow mRemoveWindow = new RemoveWindow();
//在Handler里能實(shí)現(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可實(shí)現(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ù)是字符串,不能為空,會取第一個(gè)字符顯示
* @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實(shí)現(xiàn)的Runnable接口類
mHandler.removeCallbacks(mRemoveWindow);
//添加mRemoveWindow實(shí)現(xiàn)的Runnable接口類,并設(shè)延時(shí)
mHandler.postDelayed(mRemoveWindow, DELAYED_HIDEN);
mPrevLetter = firstLetter;
}
/**
* 實(shí)現(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è)計(jì)有所幫助。
- Android仿Iphone屏幕底部彈出半透明PopupWindow效果
- Android實(shí)現(xiàn)底部半透明彈出框PopUpWindow效果
- Android中設(shè)置組件半透明和透明的效果示例
- Android編程自定義圓角半透明Dialog的方法
- Android開發(fā)中Dialog半透明背景消失
- Android Menu半透明效果的開發(fā)實(shí)例
- Android編程實(shí)現(xiàn)popupwindow彈出后屏幕背景變成半透明效果
- Android編程實(shí)現(xiàn)設(shè)置按鈕背景透明與半透明及圖片背景透明的方法
- Android4.4+ 實(shí)現(xiàn)半透明狀態(tài)欄(Translucent Bars)
相關(guān)文章
舉例講解Android中ViewPager中的PagerTitleStrip子控件
這篇文章主要介紹了Android中ViewPager中的PagerTitleStrip子控件使用例子,講解了PagerTitleStrip子控件的嵌入與設(shè)置標(biāo)題的用法,需要的朋友可以參考下2016-03-03
利用百度地圖Android sdk高仿微信發(fā)送位置功能及遇到的問題
這篇文章給大家介紹了利用百度地圖Android sdk高仿微信發(fā)送位置功能,在實(shí)現(xiàn)此功能的時(shí)候遇到點(diǎn)小問題,下面小編給大家列出來,需要的朋友參考下吧2017-12-12
仿餓了嗎點(diǎn)餐界面兩個(gè)ListView聯(lián)動效果
這篇文章主要介紹了仿餓了點(diǎn)餐界面2個(gè)ListView聯(lián)動效果的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-09-09
Android模擬登錄評論CSDN實(shí)現(xiàn)代碼
本篇文章主要介紹了Android模擬登錄評論CSDN實(shí)現(xiàn)代碼,可以實(shí)現(xiàn)登陸發(fā)表評論到官方網(wǎng)站,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2016-11-11
Android編程之點(diǎn)擊按鈕的響應(yīng)方式小結(jié)【3種方式】
這篇文章主要介紹了Android編程之點(diǎn)擊按鈕的響應(yīng)方式,結(jié)合實(shí)例形式分析總結(jié)了常用的三種按鈕響應(yīng)方式,需要的朋友可以參考下2017-02-02

