Android学习记录

最近做了一个android的项目,也算是从零开始边学边做,记录一下在做的过程中学到的东西。

总体感受

和一般的GUI程序开发差不多,最主要的就是调用android提供的类库,用得最多的就是图形图,底层的库可以调用Java标准库,都比较熟悉。

Android中每一个界面都是一个Activity,用户输入相应信息,然后在各个Activity间跳转。Activity中实现相应的逻辑,将网络或文件系统中的数据按照一定的格式,显示在界面上。Activity类不需要开发人员实例化,用Intent来启动,系统负责进行各种初始化操作,然后进入到Activity生命周期。开发人员只需要负责控制好在Activity的各个声明周期里做些什么操作。

Android Studio的可视化界面设计做得很烂,拖拽和控制都很不方便,属性也不支持查找。

学习资源

  1. 安卓开发者网站,现在开始有中文版的了:https://developer.android.com/index.html

  2. Android官方培训课程中文版:http://hukai.me/android-training-course-in-chinese/

  3. Android学习之路:http://stormzhang.com/android/2014/07/07/learn-android-from-rookie/

  4. Android Studio中文社区:http://www.android-studio.org/

  5. .9.PNG图片在线处理网站:https://romannurik.github.io/AndroidAssetStudio/nine-patches.html#&sourceDensity=320&name=example

  6. Android开源代码库,里面有很多免费的代码资源:https://android-arsenal.com/

  7. Android基础入门教程:http://www.kancloud.cn/kancloud/android-tutorial/

启动动画的例子

Activity只有一张背景图片,然后在onCreate中启动一个动画,然后在动画结束的时候跳转到另一个界面就可以了。

// 渐变展示启动屏,这里通过动画来设置了开启应用程序的界面
AlphaAnimation aa = new AlphaAnimation(0.3f, 1.0f);
aa.setDuration(2000);
view.startAnimation(aa);
// 给动画添加监听方法
aa.setAnimationListener(new AnimationListener() {
	@Override
	public void onAnimationEnd(Animation arg0) {
		redirectTo();
	}

	@Override
	public void onAnimationRepeat(Animation animation) {
	}

	@Override
	public void onAnimationStart(Animation animation) {
	}
});

比较好看的登陆和注册界面

介绍网站:http://sourcey.com/beautiful-android-login-and-signup-screens-with-material-design/

代码:https://github.com/sourcey/materiallogindemo

类似微信的底部导航栏的库

Google官方支持库 Support 25.0.0 包含了类BottomNavigationView,这是一个官方的底部导航栏的实现。这里有它的API文档

官方实现在界面多于3个的时候回隐藏文字,只显示图标,而且无法设置,所以不是太好。

所以在我的项目中用到了一个第三方的库:https://github.com/tyzlmjj/PagerBottomTabStrip

Java中启动匿名线程

new Thread(new Runnable() {
    @override
    public void run(){

    }
}).start();

服务器端

Android的服务器端一般用web 服务器,客户端与服务器通过Http协议交换数据,数据的格式一般是Json格式的。

后端云

有的公司提供移动应用的后端服务,把后台数据存储放在云端,让开发者可以不需要进行后端开发和管理服务器。只需要在控制台建立数据库,然后调用提供的库进行数据的存储。在某一范围之类可以免费使用。

国内做的比较好的有Bmob

支持手势缩放的ImageView

一个Image的子类:PinchImageView

AppCompatActivity隐藏ActionBar

在onCreate中调用:getSupportActionBar().hide();

Fragment中的onClick

Fragment中的View的onClick默认只能找到Fragment所在Activity中的函数,有两个解决方法:1)在Fragment中调用View的setOnClickListener,设置点击监听器;2)在Activity中调用Fragment中的公有方法。如下:

Fragment someFragment;    

...onCreate etc instantiating your fragments

public void myClickMethod(View v){
    someFragment.myClickMethod(v);
}