Android实现在列表List中显示半透明小窗体效果的控件用法详解
本文实例讲述了Android实现在列表List中显示半透明小窗体效果的控件用法。分享给大家供大家参考,具体如下:
Android在列表List中显示半透明小窗体效果的控件,多的不多直接上代码,要说的都在注释里了:
importcom.hiapk.market.R;
importandroid.content.Context;
importandroid.graphics.PixelFormat;
importandroid.os.Handler;
importandroid.view.LayoutInflater;
importandroid.view.View;
importandroid.view.WindowManager;
importandroid.view.WindowManager.LayoutParams;
importandroid.widget.TextView;
/**
*窗口中间显示半透明提示框的小组件
*用法:1.new2.showPrevLetter(StringprevLetter)
*@authorLL
*
*/
publicclassPrevLetterDialog{
//窗体消失的延时时间
privatestaticfinalintDELAYED_HIDEN=500;
//实现Runnable接口的类
privateRemoveWindowmRemoveWindow=newRemoveWindow();
//在Handler里能实现对UI线程的修改
privateHandlermHandler;
//窗体管理器
privateWindowManagermWindowManager;
//显示在窗体中间半透明的字体框
privateTextViewmDialogText;
//是否正在显示中
privatebooleanmShowing;
//是否准备好显示了
privatebooleanmReady;
//显示在窗体中的字符
privatecharmPrevLetter=Character.MIN_VALUE;
/**
*注明:context一定要在可见UI中通过getContext()获得,否则会抛异常。
*@paramcontext
*/
publicPrevLetterDialog(Contextcontext){
//得到窗体管理器
mWindowManager=(WindowManager)context.getSystemService(Context.WINDOW_SERVICE);
//得到布部创建者
LayoutInflaterinflate=(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=newHandler();
//要用post可实现在多线程里调用UI线程并改变
mHandler.post(newRunnable(){
publicvoidrun(){
mReady=true;
//窗体的布局参数
WindowManager.LayoutParamslp=newWindowManager.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);
}
});
}
//设置可见性
publicvoidsetmReady(booleanmReady){
this.mReady=mReady;
}
/**
*一般用在onScroll方法中,参数是字符串,不能为空,会取第一个字符显示
*@paramprevLetter
*/
publicvoidshowPrevLetter(StringprevLetter){
if(!mReady){
return;
}
charfirstLetter=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接口的类
*/
privatefinalclassRemoveWindowimplementsRunnable{
publicvoidrun(){
removeWindow();
}
}
privatevoidremoveWindow(){
if(mShowing){
mShowing=false;
mDialogText.setVisibility(View.INVISIBLE);
}
}
}
以下是xml文件:
<?xmlversion="1.0"encoding="utf-8"?> <TextViewxmlns: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程序设计有所帮助。