Android自定义空间实现wifi信号强度

学了一段时间android,对于android也是摸着石头过河,不断的看源码,看androidSDK,看博客来搜集各种知识,其中大家的博客我还是很喜欢的,显得还是很亲切的。也反映了大家真实的想法与生活,又不是那么单调。。感谢各位大大的真实博客,同时希望各位路过的博友多多评论多多交流!!

不多说废话,今天主要针对android绘制自己的wifi信号强度表示,两种方法:一种是通过继承view类使用Canvaspaint绘制信号(我尝试后感觉比较麻烦并且绘制出来的效果自己也不太满意)第二种:使用自定义控件,信号强度通过darwable/图片变化来显示,开发效率较高。

这里我讲述第二种方法。

1.自定义控件,变化使用Darwable中的图片来实现变化效果

1.1制作控件格局

新建xml文件,名称为wifi_bitmap.xml,里面放入TextViewImageView控件,

对应的布局代码为:

<?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");

}

}

**********************************************************************

飞扬小米(记)

更多相关文章

  1. Android(安卓)7.1.1系统源码下载、编译、刷机-Nexus 6实战
  2. android之resources资源
  3. Pro Android(安卓)4 第六章 构建用户界面以及使用控件(一)
  4. Android:实现TabWidget选项卡按钮在屏幕下方
  5. 第二章 如何分析 Android(安卓)程序
  6. 一个Android登陆/注册XML布局文件代码
  7. Android用户界面设计:基本按钮
  8. Android高手进阶教程(三)之----Android(安卓)中自定义View的应用
  9. [置顶] Android(安卓)Studio 配置优化

随机推荐

  1. android emulator 配置_
  2. 安卓编程小tips
  3. Android(安卓)Jetpack架构组件Navigation
  4. Android高仿网易新闻客户端之动态添加标
  5. Android(安卓)Bundle类别
  6. Android(安卓)ImageView控件的MaxWidth、
  7. Android有效解决加载大图片时内存溢出的
  8. android检查网络连接状态的变化,无网络时
  9. Introducing Quick Search Box for Andro
  10. Android(安卓)Studio svn检出项目一直报