码迷,mamicode.com
首页 > 移动开发 > 详细

Android ImageView根据不同的状态和等级显示不同的图片

时间:2014-11-30 18:51:19      阅读:275      评论:0      收藏:0      [点我收藏+]

标签:des   android   http   io   ar   os   sp   java   文件   

最近还是在做一个关于wifi的项目,要通过一个图片显示一个热点的信号强度和是否需要密码

就像这样的:

bubuko.com,布布扣

一个热点的信号强度有四个等级,有需要密码和不需要两个状态。

要实现这个功能,可以在代码中判断它的状态、强度,然后setImageResource。但这样比较繁琐。

看了Android Settings wifi模块的源码之后发现有个更简便的办法。


java代码中找到signal的ImageView、设置它的等级、状态:

            ImageView signal = (ImageView) convertView.findViewById(R.id.signal);
            if (accessPoint.getRssi() == Integer.MAX_VALUE) {
                signal.setImageDrawable(null);
            } else {
                signal.setImageLevel(accessPoint.getLevel());
                signal.setImageState((accessPoint.getSecurity() != AccessPoint.SECURITY_NONE) ?
                        AccessPoint.STATE_SECURED : AccessPoint.STATE_NONE, true);
            }


界面放好imageview的位置、android:src="@drawable/wifi_signal_light"

    <ImageView
        android:id="@+id/signal"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:contentDescription="@null"
        android:src="@drawable/wifi_signal_light" />

wifi_signal_light.xml 

<selector xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:settings="http://schemas.android.com/apk/res/com.mango.gnet">
    <item settings:state_encrypted="true" android:drawable="@drawable/wifi_signal_lock_light" />
    <item settings:state_encrypted="false" android:drawable="@drawable/wifi_signal_open_light" />
</selector>

最后就是wifi_signal_lock_light和wifi_signal_open_light两个文件

<level-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:maxLevel="0" android:drawable="@drawable/ic_wifi_lock_signal_1_light" />
    <item android:maxLevel="1" android:drawable="@drawable/ic_wifi_lock_signal_2_light" />
    <item android:maxLevel="2" android:drawable="@drawable/ic_wifi_lock_signal_3_light" />
    <item android:maxLevel="3" android:drawable="@drawable/ic_wifi_lock_signal_4_light" />
</level-list>
<level-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:maxLevel="0" android:drawable="@drawable/ic_wifi_signal_1_light" />
    <item android:maxLevel="1" android:drawable="@drawable/ic_wifi_signal_2_light" />
    <item android:maxLevel="2" android:drawable="@drawable/ic_wifi_signal_3_light" />
    <item android:maxLevel="3" android:drawable="@drawable/ic_wifi_signal_4_light" />
</level-list>

总体的思路就是

signal.setImageState()

会根据设定的状态来决定用那个文件

setImageLevel()

会根据设定的数组来决定用 level-list那一张图片


Android ImageView根据不同的状态和等级显示不同的图片

标签:des   android   http   io   ar   os   sp   java   文件   

原文地址:http://my.oschina.net/stphwn/blog/350527

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!