13-5-16 Android自定义空间实现wifi信号强度
Android自定义空间实现wifi信号强度
学了一段时间android,对于android也是摸着石头过河,不断的看源码,看androidSDK,看博客来搜集各种知识,其中大家的博客我还是很喜欢的,显得还是很亲切的。也反映了大家真实的想法与生活,又不是那么单调。。感谢各位大大的真实博客,同时希望各位路过的博友多多评论多多交流!!
不多说废话,今天主要针对android绘制自己的wifi信号强度表示,两种方法:一种是通过继承view类使用Canvas和paint绘制信号(我尝试后感觉比较麻烦并且绘制出来的效果自己也不太满意)第二种:使用自定义控件,信号强度通过darwable/图片变化来显示,开发效率较高。
这里我讲述第二种方法。
1.自定义控件,变化使用Darwable中的图片来实现变化效果
1.1制作控件格局
新建xml文件,名称为wifi_bitmap.xml,里面放入TextView和ImageView控件,
对应的布局代码为:
<?xmlversion="1.0"encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:id="@+id/bitmap_layout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:id="@+id/bitmap_icon"
android:layout_width="match_parent"
android:layout_height="34dp"
android:src="@drawable/wifisignal4"/>
<TextView
android:id="@+id/bitmap_txt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="30dB"/>
</LinearLayout>
</LinearLayout>
1.2描述自己定义的控件类继承LinearLayout,导入刚刚的布局实现控件自定义
接下来写一个类继承LinearLayout,导入刚刚的布局,并且设置需要的方法,从而使的能在代码中控制这个自定义控件内容的显示。其中有个判断是否为编辑状态是少的,有兴趣的朋友可以查查。
对应的类的名称为:Wifi_bitmap.class::LinearLayout
packagecom.bitmap;
importandroid.content.Context;
importandroid.util.AttributeSet;
importandroid.view.LayoutInflater;
importandroid.widget.ImageView;
importandroid.widget.LinearLayout;
importandroid.widget.TextView;
publicclassWifi_bitmapextendsLinearLayout{
ImageViewimageview;
TextViewtextview;
publicWifi_bitmap(Contextcontext){
super(context);
//TODOAuto-generatedconstructorstub
}
publicWifi_bitmap(Contextcontext,AttributeSetattrs){
super(context,attrs);
//TODOAuto-generatedconstructorstub
LayoutInflaterinflater=(LayoutInflater)context.getSystemService(Context
.LAYOUT_INFLATER_SERVICE);//???
inflater.inflate(R.layout.wifi_bitmap,this);//getlayoutofbitmap
if(isInEditMode())/*itnecessarytoavoidtheerrorof::
*UseView.isInEditMode()inyourcustomviewstoskipcodewhenshown.
*whenweeditthecode
*/
return;
imageview=(ImageView)findViewById(R.id.bitmap_icon);
textview=(TextView)findViewById(R.id.bitmap_txt);
}
/*
*setImageViewresource
*/
publicvoidsetImageResource(intresId){
imageview.setImageResource(resId);
}
/*
*settextViewresource
*/
publicvoidsetTextViewText(Stringtext){
textview.setText(text);
}
/*
*definethestrongofsignal
*strong:01234
*/
publicvoidsetSignalStrong(intstrong,Stringdb){
switch(strong){
case0:
imageview.setImageResource(R.drawable.wifisignal0);
break;
case1:
imageview.setImageResource(R.drawable.wifisignal1);
break;
case2:
imageview.setImageResource(R.drawable.wifisignal2);
break;
case3:
imageview.setImageResource(R.drawable.wifisignal3);
break;
case4:
imageview.setImageResource(R.drawable.wifisignal4);
break;
default:
break;
}
textview.setText(db);
}
}
1.3在activity_main.xml中加入刚才制作的控件
我们通过在activity_main.xml中加入自己定义的控件,将控件显示在activity_main.xml上面,自己就直接可以查看,我加入了五个来比对效果,这里只放入一个。下面代码是在activity_main.xml中的代码。其中完整的包命是不可少的。
<com.bitmap.Wifi_bitmap
android:id="@+id/wifi_pic"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:clickable="true"
android:orientation="vertical"
android:paddingLeft="15dp">
</com.bitmap.Wifi_bitmap>/>
1.4最后一步写我们自己的主程序
最后我贴上代码跟图片:
自己的主要工作就是创建一个布局xml,为这个布局定义一个继承类,最后在主程序上面和主布局上面应用,四个步骤。
packagecom.bitmap;
importandroid.app.Activity;
importandroid.os.Bundle;
importandroid.widget.LinearLayout;
publicclassMainActivityextendsActivity{
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Wifi_bitmapwifi_bitmap=(Wifi_bitmap)findViewById(R.id.wifi_pic);
Wifi_bitmapwifi_bitmap1=(Wifi_bitmap)findViewById(R.id.Wifi_bitmap01);
Wifi_bitmapwifi_bitmap2=(Wifi_bitmap)findViewById(R.id.Wifi_bitmap02);
Wifi_bitmapwifi_bitmap3=(Wifi_bitmap)findViewById(R.id.Wifi_bitmap03);
Wifi_bitmapwifi_bitmap4=(Wifi_bitmap)findViewById(R.id.Wifi_bitmap04);
wifi_bitmap.setSignalStrong(4,"-20dB");
wifi_bitmap1.setSignalStrong(3,"-40dB");
wifi_bitmap2.setSignalStrong(2,"-60dB");
wifi_bitmap3.setSignalStrong(1,"-80dB");
wifi_bitmap4.setSignalStrong(0,"-100dB");
}
}
**********************************************************************
飞扬小米(记)
更多相关文章
- Android(安卓)7.1.1系统源码下载、编译、刷机-Nexus 6实战
- android之resources资源
- Pro Android(安卓)4 第六章 构建用户界面以及使用控件(一)
- Android:实现TabWidget选项卡按钮在屏幕下方
- 第二章 如何分析 Android(安卓)程序
- 一个Android登陆/注册XML布局文件代码
- Android用户界面设计:基本按钮
- Android高手进阶教程(三)之----Android(安卓)中自定义View的应用
- [置顶] Android(安卓)Studio 配置优化