Android实习周记:第九周,如果大二的假期就开始实习,或许我早已进入BAT

暑假开始了,妈妈打来电话问我什么时候回家,考虑到一个多月后就要面临最“艰难”的时刻——秋招,我决定假期留在西安实习。

在这周的实习,时间过的很快。每天工作时会遇到各种不会的,一个个解决,一周下来发现还是收获很多的。

这周的收获如下:

  1. 一句话匹配复杂规则的字符串:正则表达式
  2. 继SlidingMenu之后,更为好用的抽屉布局:drawerLayout与ActionBarDrawerToggle的使用
  3. Android游戏基础:SurfaceView的使用
  4. Java基础查漏补缺:String
  5. 剑指Offer前两章阅读体会

1:了解正则表达式的使用:

这周我负责实现了游客身份的注册模块,其中有一项是验证手机号。拿到验证手机号的需求时我第一反应是用短信平台给该手机号发短信,结果产品说不要那么复杂,保证输入的是个手机号码就可以了。
百度后得知,有个【可以方便的筛选符合特定规则的表达式—-正则表达式】。很多复杂的筛选条件,比如说QQ号的验证,我们知道它是由5~11位0~9的数字组成,就可以用一个简单的正则表达式 ^\d[0-9]{5,11}& 完成判断,学会后好有成就感哈哈!

正则表达式简介及学习

2:实现“抽屉”效果的另一种方式:DrawerLayout

这周空余时间看了“指读”的主页面布局源码,发现个DrawerLayout,从名字就可以看出来是做“抽屉”的。之前用过SlidingMenu,还没用过这个,就用了试试。

布局很简单,用一个

都能实现抽屉布局,DrawerLayout与SlidingMenu的区别是什么呢?

slidingMenu 是第三方的,需要依赖library; DwawerLayout 是google自己在.v4支持包里面的,API版本在11以上才可以使用。
具体使用哪个看你开发App的环境要求。

3:Android游戏基础:SurfaceView的使用

周二由于一个需求的评审没有及时完成,我暂时没有任务。闲着不知道干吗,正好在极客学院网上看到了一个“Android实现围住神经猫”的视频,觉得不错就学了学。
去年还是前年来着,“围住神经猫”这个游戏在朋友圈火了一阵子,当时只知道是H5写的。
Android开发游戏,用的比较广的是cocos2d,菜鸟还是先用自带的SurfaceView。
通常情况程序的View和用户响应都是在同一个线程中处理的,这也是为什么处理长时间事件(例如访问网络)需要放到另外的线程中去(防止阻塞当前UI线程的操作和绘制)。但是在其他线程中却不能修改UI元素,例如用后台线程更新自定义View(调用View的在自定义View中的onDraw函数)是不允许的。

通常情况程序的View和用户响应都是在同一个线程中处理的,这也是为什么处理长时间事件(例如访问网络)需要放到另外的线程中去(防止阻塞当前UI线程的操作和绘制)。但是在其他线程中却不能修改UI元素,例如用后台线程更新自定义View(调用View的在自定义View中的onDraw函数)是不允许的。
如果需要在另外的线程绘制界面、需要迅速的更新界面,或者渲染UI界面需要较长的时间,这种情况就要使用SurfaceView了。

SurfaceView的使用:
1. 新建一个类继承SurfaceView :

public class PlayGround extends SurfaceView implements OnTouchListener{}

2.实现SurfaceHolder.Callback:

/**
     * SurfaceHolder.Callback
     * 绘制内容
     */
    Callback callback = new Callback() {            
        @Override
        public void surfaceDestroyed(SurfaceHolder arg0) {

        }

        @Override
        public void surfaceCreated(SurfaceHolder arg0) {
            reDraw();
        }

        @Override
        public void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2, int arg3) {
            DOT_WIDTH = arg2/(COL+1);
            reDraw();
        }
    };

覆盖的三个方法中,在Created中绘制初始界面,然后在Changed中对修改的几界面进行绘制,最后在Destoryed中销毁一些数据。

3.实现该类的构造函数,在构造函数中添加SurfaceHolder.Callback

public PlayGround(Context context) {
        super(context);
        getHolder().addCallback(callback);

    }

4.剩下的就是一些动作的监听、逻辑的实现。

4: Java基础查漏补缺:String

深知基础薄弱的我,虽然写下了Java基础查漏补缺的必要 ,这周却没有补很多,汗颜 - -。
看了个视频和些帖子,了解了String类型为什么是不可修改的原因,仅此而已,- -。还有很多坑等我下周填。。。

5: 剑指Offer前两章阅读体会

《剑指Offer》这本书对于基础薄弱、算法忘得差不多的我可以说是久旱逢甘霖的感觉,第一天一口气就读了四十页,感觉作者甚懂我心啊,说的都是我的问题,好书!
第二章讲了面试需要的基础,可惜语言只有C++和C#,木有Java,T.T。
针对数据结构和算法举了几个例子,很有代表性,举一反三能解决很多看起来很难的问题。

而且在解答书中例题的时候,我似乎发现了【程序员学习数据结构与算法的意义】:

如果把编程比作解决一道应用题,数据结构与算法就是一些定理。
可能你运用【加减乘除基础运算】算好久的题,用某个定理分分钟就搞定了。
为什么呢?
因为定理就是前辈在走过许多弯路后作出的总结,给后人留下的一些捷径。
掌握了定理,我们就可以走的更高、更快、更强!

总结:

一周下来感觉时间过的好快,一点没有假期的放纵、无聊感觉。
一总结,发现自己收获了很多,嘿嘿。
同时也后悔啊,要是早点找个公司多实习几次,相信我的水平早不是现在这个水平,兴许BAT稳稳地进去了。
唉,后悔无益,还是活在当下吧。
愿我可以踏实过好每一天~~~

(下周一定得把Java基础多看2块~)

拭心记于2015/8/3 0:44
http://blog.csdn.net/u011240877

你可能感兴趣的:(IT菜鸟的进阶之路,shixin,的成长记录)