自定义View,指示wifi信号强度(菜鸟历险记)

我的Android是自学的,自学教材是李刚老师的《疯狂Android讲义》。因为之前是学C语言的,从事的嵌入式行业的开发,接触的是arm世界,用纯c语言写成的bin文件去驱动板子上的显示器及其它。后来有个项目要用Android开发,没有办法就开始自学,当时的打算是1个月的时间学会java,1个月的时间学会Android.因为觉得自己c语言还可以,特别是解决了指针这一个难题后,心里有信心学其它语言会比较容易。那好,java一个月是看了基础的内容,跟c差不多,但面向对象又有一点不一样,勉强觉得能接受。就看Android的书籍了,跟着书上的代码一遍一遍的敲,有的确实不能理解,就反复看,上厕所也捧着一本书看。由于性格问题,遇到事情我喜欢刨根问底,所以遇到很多我不明白的问题,我就拿着不放,后来我发现自己其实是走进了误区,当菜鸟的时候就要好好学习,好好学习最基本的知识,等基础扎实之后才能开始思考。不然只能是自己给自己较劲。
一个月后,我准备找新的工作,在网上记一些面试的题目就匆忙去面试了。只选了两家,第一家没有面试上,问了listview怎么优化?我一时语塞,没有答上来,我没有真实的Android开发经验,真的不知道。第二天后,面试第二家,做的题目都是基础的题目,我应该拿了满分,主管很年轻,我们相谈甚欢,然后我又进行了几轮面试,最终拿到offer。我也不想再去其它面试,于是就进了这一家。
新的项目是一个电视盒子上的Launcher,既然是Launcher就应该有Launcher的样子,我负责的模块有这么一个需求,在顶部状态栏显示时间、日期、以太网信号、usb状态、wifi信号强度。那么我就在下面讲我如何实现wifi信号强度的自定义view的。

有经验的开发者可以忽略我这篇文章。我只想给如当年自学如我的菜鸟一个提示,由其是从一个陌生领域进入Android开发的没有任何人能指点的菜鸟。

好的回归主题。

如何自定义view,并指示wifi信号强度?

我是菜鸟,这是我Android生涯的第一个难题。最大的原因是书上没有讲。是的我是看书自学的Android,在那个年代,没人讲过自定义view.怎么办呢?我在脑海中寻找答案,很可惜没有答案。我上网搜索,也没有相关的文章。关键的那个时候,我没有源码。
有源码,我也不知道上哪里查。我是菜鸟。我不知道。grepcode,也不知道androidxref.
因为我是菜鸟。
但菜鸟会有菜鸟的办法。
我记得手机上状态栏电池的图标是可以变动的,电量不同的时候,这个图标会显示不同的电量,其实我应该也知道状态栏上的wifi图标也是如此。
作为菜鸟的我开始了思考

既然系统能够实现这样的功能,那么我也可以实现。如果我还不能实现,是因为我不知他们用了什么办法。

作为菜鸟,别指望我去看源码。我压根就不知道在哪里,去哪里看。我的Android生涯还没有半个月,别跟我讲这么不切实际的话。u can u bb,u can u up.我不can我不bibi,我不can我也必须的up.

菜鸟程序员也是程序员,况且我此前写c语言的呢。我会用eclipse,用ctrl+鼠标左键就能点击进去查源码。我点击了TextClock这个系统控件,看看标准的Android控件长什么样子,因为时间也是变的,我看不到wifi的view,我看下TextClock还不行?

@RemoteView
public class TextClock extends TextView {
   
    ...

private final BroadcastReceiver mIntentReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            if (mTimeZone == null && Intent.ACTION_TIMEZONE_CHANGED.equals(intent.getAction())) {
                final String timeZone = intent.getStringExtra("time-zone");
                createTime(timeZone);
            }
            onTimeChanged();
        }
    };

public TextClock(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);

      ...
    }
    ...

 @Override
 protected void onAttachedToWindow() {
       super.onAttachedToWindow();

        if (!mAttached) {
            mAttached = true;

            registerReceiver();

       }
    }

  • 12
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

frank909

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值