本文實例講述了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程序設計有所幫助。
新聞熱點
疑難解答