1、类似朋友圈的发布动态时间
参考自:http://blog.youkuaiyun.com/wwj_748/article/details/42528689
public class MainActivity extends AppCompatActivity {
private static SimpleDateFormat simpleformat;
private TextView txt;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
txt = (TextView) findViewById(R.id.txt);
Date time = new Date(Long.parseLong("1480389151131"));
simpleformat = new SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss");
String str = timeLogic(time);
txt.setText(str);
}
public static String timeLogic(Date date) {
Calendar calendar = Calendar.getInstance();
long now = calendar.getTimeInMillis();
calendar.setTime(date);
long past = calendar.getTimeInMillis();
// 相差的秒数
long time = (now - past) / 1000;
StringBuffer sb = new StringBuffer();
if (time > 0 && time < 60) { // 1小时内
return sb.append(time + "秒前").toString();
} else if (time > 60 && time < 3600) {
return sb.append(time / 60+"分钟前").toString();
} else if (time >= 3600 && time < 3600 * 24) {
return sb.append(time / 3600 +"小时前").toString();
}else if (time >= 3600 * 24 && time < 3600 * 48) {
return sb.append("昨天").toString();
}else if (time >= 3600 * 48 && time < 3600 * 72) {
return sb.append("前天").toString();
}else if (time >= 3600 * 72) {
return simpleformat.format(date);
}
return simpleformat.format(date);
}
}
2、AlertDialog自定义标题大小、颜色、位置
转自:http://blog.youkuaiyun.com/bellov/article/details/40864123
3、EasyRecyclerView的使用
如果recyclerview上面还有东西(如轮播图,导航栏,推荐)需要展示,就把上面的(轮播图等)用adapter.addHeader()方法当成头部添加进去,不然在页面切换时,recyclerview会把上面的东西全部挤走,自己在在界面的最上面。
4、Android使用帧动画解决内存溢出问题
http://www.cnblogs.com/mcfawa/p/5192335.html
5、AndroidManifest中android:configChanges的作用
当手机横放时, 程序的activity会重启, 以适应新的设备配置. 假如是一个编辑页面, 重启的结果会导致所写内容的丢失, 如果已经写了很多内容, 那将是一件极其蛋疼的事情.
如果不想横屏时activity自动重启, 可以在AndroidManifest文件的activity中声明Android:configChanges属性, 当指定的系统配置发生改变的时候, 系统将不会重启activity, 而是执行程序中的public void onConfigurationChanged(Configuration newConfig)函数, 这样就可以让我们自己处理横屏这件事.
对android:configChanges属性,一般认为有以下几点:
1、不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次
2、设置Activity的android:configChanges=”orientation”时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次
3、设置Activity的android:configChanges=”orientation|keyboardHidden”时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法
但是,自从Android 3.2(API 13),在设置Activity的android:configChanges=”orientation|keyboardHidden”后,还是一样 会重新调用各个生命周期的。因为screen size也开始跟着设备的横竖切换而改变。所以,在AndroidManifest.xml里设置的MiniSdkVersion和 TargetSdkVersion属性大于等于13的情况下,如果你想阻止程序在运行时重新加载Activity,除了设置”orientation”, 你还必须设置”ScreenSize”。
解决方法:
AndroidManifest.xml中设置android:configChanges=”orientation|screenSize“
【备注:】
SDK版本号是22,那么ADT的版本应该是22及以上。不过也可以在SDK配置中修改其版本号,骗过eclipse检查,就可以使用低版本的ADT了。
例如:修改android-sdk-windows/tools/lib下的plugin.pro文件
# begin plugin.prop
plugin.version=20.0.0
# end plugin.prop