您的位置:首页 > 移动开发 > Android开发

Android 零碎知识点整理

2016-03-23 17:52 477 查看

以下是平时懒散的零碎记录,以后再往上加

1、如何将scrollview自动调节始终滑动到最底部

    scrollTo方法可以调整view的显示位置。在需要的地方调用以下方法即可。scroll表示外层的view,inner表示内层的view,其余内容都在inner里。

   注意,方法中开一个新线程是必要的。否则在数据更新导致换行时getMeasuredHeight方法并不是最新的高度。

    public static void scrollToBottom(final View scroll, final View inner) {
Handler mHandler = new Handler();
mHandler.post(new Runnable() {
@Override
public void run() {
int offset = inner.getMeasuredHeight() - scroll.getHeight();
if (offset < 0) {
offset = 0;
}
scroll.scrollTo(0, offset);
}
});
}

2、在java中,如何四舍五入保留小数点x位?

      方法一:

float temp = 0.6922224f;  

BigDecimal bd = new BigDecimal(temp);  

bd =bd.round(new MathContext(2)); 

结果:

System.out.println("bd:"+bd);               bd =  0.69

    方法二:

String parten = "#.#";  

DecimalFormat decimal = new DecimalFormat(parten);  

String str= decimal.format(temp);  

interval = Float.valueOf(str);  

结果:

    System.out.println(interval);    interval = 0.7

    显然这种方法关键的就是parten参数, #.##就是保留两位小数点并且四舍五入,这种方法返回的是字符串类型。

3、android数据库的管理

    首先可以使用原始SQL语句,也可以使用andorid提供的方法,但是还可以使用方便操作数据库的框架LitePal,关于LitePal详细的讲解可以参考郭霖博客专家的博客。讲解很细致入微。

博客地址:http://blog.csdn.net/guolin_blog/article/details/40614197   

LitePal下载地址:https://github.com/LitePalFramework/LitePal

4、intentservice和service最大的区别

      Service是用于后台服务的,当应用程序被挂到后台的时候,保证应用某些组件仍然可以工作而引入了Service这个概念,那么这里面要强调的是Service不是独立的进程,也不是独立的线程,它是依赖于应用程序的主线程的,也就是说,在更多时候不建议在Service中编写耗时的逻辑和操作,否则会引起ANR。

那么我们当我们编写的耗时逻辑,不得不被service来管理的时候,就需要引入IntentService,IntentService是继承Service的,那么它包含了Service的全部特性,当然也包含service的生命周期,那么与service不同的是,IntentService在执行onCreate操作的时候,内部开了一个线程,去你执行你的耗时操作。

5、将工程作为libaray给其他工程调用,并且activity之间进行通信

     情景分析:  比如要将工程A 作为library提供给B工程使用,并且在B工程中要打开A的activity,在A的activity完成任务后返回相应的数据到B,步骤为以下:

    1、将A设置成library 
                在属性里面把islibrary勾选上,注意此时设置成library以后要clean以下,否则粗心可能导致R文件还是未设置成library之前生成的R文件,这样会导致被          B引用的             时合并后的R文件特别混乱,运行时乱套甚至崩溃。在A设置library以后,可能会出现报错,原因是switch语句中的case :R.id.xx报错,因为这个时候R文件的id属性不在有           final这个关键字修饰,这个时候需要把工程里的所有switch代码完全改成if-if
else语句。

     2、在B工程中引用library 
  
         在B工程的属性设置里面引用设置为libray的A,注意在当前工程的gen目录下会有A的R资源Aid,引用了A,则A的相关资源资源会合并到B中,但A的AndroidMainFest.xml中的配置应该复制到B中

     3、B中引用A的activity

         启动方式可以使用显示意图,即像我们平时那样子调用staractivity(intent);就行了

     4、library A中的activity处理任务后返回数据就不能像平时那样setreult();就行了,这样会无法返回,因为A中没有B的资源和累,此时得使用隐身意图返回B,也可以用此种方法返回绑定的数据,具体什么是隐式意图,网上资料很多。

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息