android常用,android sdk

Android基础之常用五种布局

所有东西依次都放在左上角,会重叠,这个布局比较简单,也只能放一点比较简单的东西。

创新互联是一家专业提供同德企业网站建设,专注与成都做网站、网站设计、H5页面制作、小程序制作等业务。10年已为同德众多企业、政府机构等服务。创新互联专业网站设计公司优惠进行中。

分为垂直布局( android:orientation="vertical" )和水平布局( android:orientation="horizontal" )。

垂直布局时,每一行就只有一个元素,多个元素依次垂直往下;

水平布局时,只有一行,每一个元素依次向右排列。

用X,Y坐标来指定元素的位置,这种布局方式也比较简单

在屏幕旋转时,往往会出问题,而且多个元素的时候,计算比较麻烦。

可以理解为某一个元素为参照物,来定位的布局方式。

主要属性有:

相对于某一个元素 android:layout_below 、 android:layout_toLeftOf

相对于父元素的地方 android:layout_alignParentLeft 、 android:layout_alignParentRigh ;

每一个 TableLayout 里面有表格行 TableRow , TableRow 里面可以具体定义每一个元素。每一个布局都有自己适合的方式,这五个布局元素可以相互嵌套应用,做出美观的界面。

Android 常见布局

Android六大基本布局分别是:线性布局LinearLayout、表格布局TableLayout、相对布局RelativeLayout、层布局FrameLayout、绝对布局AbsoluteLayout、网格布局GridLayout。其中,表格布局是线性布局的子类。网格布局是android 4.0后新增的布局。

在手机程序设计中,绝对布局基本上不用,用得相对较多的是线性布局和相对布局。

padding是站在父view的角度描述问题,它规定它里面的内容必须与这个父view边界的距离。margin则是站在自己的角度描述问题,规定自己和其他(上下左右)的view之间的距离,如果同一级只有一个view,那么它的效果基本上就和padding一样了。

显示特点:所有子控件按照横向或者竖向依次排列

left(左)、right(右)、top(上)、bottom(下)、center(中心)、

enter_vertical(竖向中心)、center_horizontal(横向中心)

left(左)、right(右)、top(上)、bottom(下)、center(中心)、

enter_vertical(竖向中心)、center_horizontal(横向中心)

子控件的用法:android:layout_weight="1" 多个控件同时使用,可以实现平分的效果

显示特点:和LinearLayout布局相似,所有子控件默认显示在RelativeLayout的左上角

layout_toRightOf 在指定控件的右边

layout_toLeftOf 在指定控件的左边

layout_above 在指定控件的上边

layout_below 在指定控件的下边子控件对齐关系

layout_alignRight 与指定控件右对齐

layout_alignLeft 与指定控件左对齐

layout_alignTop 与指定控件上对齐

layout_centerInParent 与父容器中间对齐 pairunte

layout_centerVertical 与父容器竖向中心对齐

layout_centerHorizontal 与父容器横向中心对齐

layout_alignParentLeft 与父容器左边对齐

layout_alignParentTop 与父容器上边对齐

layout_alignParentRight 与父容器右边对齐

layout_alignParentBottom 与父容器下边对齐

显示特点:所有子控件默认在GridLayout中横向依次排列,当只等每行的列数时,到达指定列数

会自动换行显示。

layout_column 在网格的第几列

layout_row 在网格的第几行

layout_columnSpan 跨列

layout_rowSpan 跨行

layout_gravity 在一个网格中的重心位置

columnCount 每行列总数

显示特点:所有的子控件默认显示在FrameLayout的左上角,会重叠在一起显示。

layout_gravity(设置给子控件,调整控件在容器内的重心)

常用值:

left(左)、 right(右)、

top(上)、 bottom(下)、

center(中心)、 center_vertical(竖向中心)

center_horizontal(横向中心)

表格布局和网格布局类似,但是需要注意的是,表格布局不能跨行,只能跨列

Android常见知识点

跳槽无非就是钱少了或不爽了,无论怎么样,记住:

不要裸辞!

不要裸辞!

不要裸辞!

为什么呢?

1、裸辞就没有钱拿了,还不如骑驴找马。

2、裸辞之后如果一个月内没有找到工作,那么社保就会断了,除非你自己找渠道交了。

3、裸辞之后真的会很颓废!

当初还在上班的时候就想着,裸辞了,首先花几天时间吧简历完善一下,把知识点恶补一下,然后投简历,面试,妥妥的妥妥。

结果呢?每次裸辞之后都是:

首先躺尸一个星期;

然后用了一个星期才慢吞吞的改完简历;

然后海投,没回复,修改简历;

再次海投,面试,被虐得体无完肤,怀疑人生;

再改简历,再海投,一不小心中了。

当然海投也是有个目标范围的。

如果不是裸辞,那么现在应该还是在公司上班,在完成工作之余,就会逼着自己复习知识点了,起码不会在家堕落。在家不上班就是睡觉、看电影,樯橹灰飞烟灭,所以不要裸辞。

然并卵,我依然裸辞了。请假面试真的很烦。

onPause,假如从ActivityA启动B,如果B是透明的,则不会回调A的onStop方法。

方法一:

方法二:

1、写好动画文件 R.anim.enter 、 R.anim.exit

2、调用 overridePendingTransition 设置动画

引申:如Activity设置为singleInstance,则应该怎么设置跳转动画?

1、 startService 启动方与Service并没有关联,只有当Service调用 stopSelf 或者其它组件调用 stopService 的时候服务才会终止。

2、 bindService 启动方绑定Service,并且可以通过Binder与之交互,当启动方销毁时,也会自动unbindService,当所有启动方都unbindService之后,Service也就自动销毁了。

为什么呢?官方文档是这样写的:

大概意思是 onReceive() 执行完毕之后,它所在的进程就会变成低优先级进程,极易被系统杀死。

分两种情况分析一下:

一、收到广播的时候,应用正在运行:

此时如果没有在Manifest中设置了独立进程,则 onReceive() 就直接在主进程主线程执行,这里很明显不能执行耗时操作。

二、收到广播的时候,应用没有启动:

这时候系统会启动一个进程去执行 onReceive() ,(如果Manifest中没有设置进程名,则进程名为包名),(插一句,所有进程都会创建一个Application实例),当onReceive执行完毕之后,此进程就变成低优先级了,随时有可能被系统杀死,如果你在onReceive里面启动了线程执行耗时任务,那很有可能子线程没执行完毕,进程就被杀死了,进程没了,线程自然就挂了。

那么确实要执行耗时操作呢,怎么办?

方法一:goAsync()

方法二:schedule a JobService from the receiver using the JobScheduler

三种实现方法

1、继承现有的组件,如TextView等,进行拓展。

2、继承ViewGroup,自定义布局。

3、继承View,在onDraw()中描绘。

onMeasure()

onLayout()

onDraw()

其它

attachToRoot 从字面理解就是是否绑定到 root 上面去了。

1、 attachToRoot=true :则返回的view为root的子view;

2、 attachToRoot=false :则返回的view是个单独的view,传入的root只是提供一些参数给view使用而已。

那么这里不传入 attachToRoot 呢?那就看root是否为空了,如果传入root不为空,则默认绑定到root,作为root的子view返回。

也就是所谓的Frame动画。指通过指定每一帧的图片和播放时间,有序的进行播放而形成动画效果。

可以通过插入器 Interpolator 控制动画的变化速度。

也就是所谓补间动画。指通过指定View的初始状态、变化时间、方式,通过一系列的算法去进行图形变换,从而形成动画效果,主要有 AlphaAnimation 、 TranslateAnimation 、 ScaleAnimation 、 RotateAnimation 四种。

注意:只是在视图层实现了动画效果,并没有真正改变View的属性。

属性动画,通过不断的改变View的属性,不断的重绘而形成动画效果。相比于视图动画,View的属性是真正改变了。

注意:Android 3.0(API 11)以上才支持。

最常用的类有 ObjectAnimator

P.S. 我不明白cancel存在的意义。

另外, DialogFragment 是没有cancel的。

ping

内存大致分为三个区:栈区、堆区、方法区。

栈区

堆区

方法区

JAVA不允许手动释放内存,只能通过垃圾回收程序不定期对那些不再被引用的对象进行回收。

那么怎么判断哪些对象需要回收?

1、引用计数法

就是给对象添加一个引用计数器,引用对象时+1,引用失效时-1。但是这种方法解决不了对象相互引用的情况。

2、可达性分析法

通过一系列“GCRoots”对象作为起点进行搜索,当GCRoots和一个对象之间没有可达路径,则认为此对象不可用,但是不可用不一定会成为可回收对象。

编写AIDL文件,定义接口。

编译生成JAVA文件。

定义进程级Service,onBind中返回Interface.Stub()。

onServiceConnected中Interface aidl = Interface.Stub.asInterface(service);

把已修复的class文件打包成dex文件,网络传输到用户手机中,利用类加载器把这些类加载到类队列的前面即可。

【未完待续】

如果公司录用我,不管是三年还是五年,首先我都会先把公司的任务做好,然后不断深入研究Android的相关技术,特别是Android源码,了解Android底层原理,以便更好的优化性能,避免一些不必要的奇葩问题,还有就是研究一些新的框架的原理,学习别人的思维。最后就是学习周边语言,比如后台,前端等等。


新闻标题:android常用,android sdk
网页网址:http://cdiso.cn/article/dsephhs.html

其他资讯