没有知道新东西,知道再多也没用!

之前学的《零基础入门Android语法与界面》之后的效果是做成了一个跑步App的UI项目,没有一丝自豪感,知道自己真的只是入门而已,做项目的过程属于盲目的复制粘贴,甚至连Adapter、listview等基础控件的概念都不了解,导致根本没有一点成就感,同时也给我一种毫无意义的感觉。 但我也感动欣慰,就是在做这个UI项目的时候遇到的各种问题都解决了,该实现的功能页也都实现了,之前一直以为会做不出来,最后也呈现出一个满意的结果~~就是说,好歹吧东西做出来了! 现在开这篇文章就是要即娘做点有意义的事情了,不能迷茫,先把大方向把握住,一个Android、一个Web、还有就是算法,说来清晰,却也很杂,但目前能做到的就是不要有急功近利的想法,那样真的毫无意义!

给自己的具体任务:

1、大二把寒假里用php写了博客写好
2、学完android数据写出一个写文章、类似博客的App
3、复习软考资料~~~

2018/4/15

Android上常见度量单位

px(像素):屏幕上的点,绝对长度,与硬件相关。
in(英寸):长度单位。
mm(毫米):长度单位。
pt(磅):1/72英寸,point。
dp(与密度无关的像素):一种基于屏幕密度的抽象单位。在每英寸160点的显示器上,1dp = 1px。 dip:Density-independent pixel,同dp相同。
sp:在dp的基础上,还与比例无关,个人理解为是一个矢量图形单位。

用sp设置文字大小。
Then what’s “hdpi”, “xhdpi”, etc?

  • ldpi (low) ~120dpi
  • mdpi (medium) ~160dpi
  • hdpi (high) ~240dpi
  • xhdpi (extra-high) ~320dpi
  • xxhdpi (extra-extra-high) ~480dpi
  • xxxhdpi (extra-extra-extra-high) ~640dpi

安卓中一个图片由多个版本,在不同屏幕像素密集程度给到不同的图片,也可以用矢量图表示图片。

将布局文件转换成 View

将layout转换成树给view;
View view = getLayoutInflater().inflate(R.layout.layout, null);

创建菜单时渲染xml
getMenuInflater().inflate(R.menu.menu\_edit, menu);

给actionbar加后退按键

getSupportActionBar().setDisplayHomeAsUpEnabled(true);

点击后退功能:

1
2
3
4
5
6
7
8
public boolean onOptionsItemSelected(MenuItem item) { 
switch (item.getItemId())
{
case android.R.id.home:
finish(); return true;
}
return super.onOptionsItemSelected(item);
}

进入activity后获得结果

1
2
3
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
}
1
startActivityForResult(intent, REQ\_CODE\_EDUCATION_EDIT);

将数据传送给另一个Activity,将数据放在intent中发送

Intent resultIntent = new Intent(); resultIntent.putExtra(KEY_EDUCATION, education);
putExtra方法不能保存java本身没有的数据类型(如:education)
Why do we need to use Intent to carry the Education object?
Let’s first see how does Intent carry the Education object.

方法: 类实现Parcelable接口
setResult(Activity.RESULT_OK, resultIntent);

java:日期与可传递字符串的互相转换:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class DateUtils {

private static SimpleDateFormat sdf = new SimpleDateFormat("MM/yyyy", Locale.getDefault());

public static String dateToString(Date date) {
return sdf.format(date);
}

public static Date stringToDate(String dateString) {
try {
return sdf.parse(dateString);
} catch (ParseException e) {
e.printStackTrace();
return new Date(0);
}
}
}