android入门知识,android基础知识学习笔记

该笔记主要是通过学习《第一行代码》中的各种知识点以及实例,进行的个人学习记录,感谢图书作者郭霖大神

android:label 指定活动中标题栏的内容,标题栏是显示在活动最 顶部的* 标题栏隐藏 ——在onCreate中使用 requestWindowFeature(Window.FEATURE_NO_TITLE)的意思就是不在活动中显示标题栏,注意这句代码一定要在 setContentView()之前执行Activity生命周期,结束当前活动用finish

新学控件

AlertDialog(主要属性:标题Title,内容Message,按钮事件positive/negative,是否可以返回Cancelable)需要代码中用show显示到屏幕

ProgressBar(主要属性:圆形或长条style,进度值max,可见性visible)不需要代码中用show显示到屏幕

ProgressDialog与AlertDialog相似,但是xuyongD调用dismiss关闭

布局复习 * LinearLayout(2个重要属性)

layout_gravity 根据LinearLayout的水平/垂直属性,再决定控件的垂直/水平位置

layout_weight 可以去除layout_width的依赖,规范做法是将控件的width设置为0dp,然后对控件的layout_weigth设置即可,当然也可以width weight一起使用在不同控件中

RelativeLayout

主要是align为前缀的属性,相对位置可以是相对于父控件的位置,也可以是同级控件的位置,主要有这些:alignParentLeft/Right/Bottom,centerInParent,align_toRightOf/toLeftOf/below/above

FrameLayout

只是将所有控件放置在布局左上角,在讨论碎片时将使用到,其他情形下很少用

TableLayout

使用表格的方式排列控件,主要是行列的设置,通常对不同行,列数不同时,通过合并单元格的方式解决

TableLayout中每个TableRow代表一行。TableRow中每加一个控件,就是添加一列。使用属性layout_span=2,可以合并2列,这样就对齐了。为了填补一行的其余空白位置,使用strechColumns属性,将某个行内控件拉伸自适应屏幕。strechColumns = 0表示拉伸从左往右的第0个控件

引入布局到其他布局,自定义控件

在需要引入的布局文件中添加即可将目标布局放入其中

自定义控件的一个优点是,避免在其他代码中重复实现布局中控件的某些功能 * 单位问题 > px表示像素,pt用于文字大小的表示

android中的对应单位按比例可以适用于不同的屏幕dpi,dp=dip(px的升级版),sp(pt的升级版,用于文字大小配置)

聊天功能的界面实现

首先需要用sdk自带的drawPatch将图片配置成拉伸合理的素材图片

基本由一个listview,一个textview和一个button组成,需要注意的是“如何自动更新信息同时看到最新发出或收到的信息”,对listview进行实时更新——利用适配器所带函数notifyDataChanged()通知listview数据产生变化,使用listView的setSelection(dataCollection.size)函数,将显示的数据定位到最后一行

Fragment(总是依附activity存在)

不同一般控件,它的添加需要一般控件作为内容,同时需要一个java类完成fragment控件的自定义绘制,因此接下的学习才能体会到fragment具有类似自定义控件的性质

生命周期

运行,暂停,停止,销毁

进入停止状态的所有fragment都是不可见的,使用addtoBackStack能够使fragment进入停止,但也可能被系统回收 * 静态加载fragment

首先需要针对每一个fragment设置f.xml布局文件,之后再对应fragment布局文件对应新建Fragment类F.java > * 该Fragment类继承自android.app.Fragment,重写onCreateView方法,在方法中通过调用LayoutInflate.inflate方法将定义的fragment布局文件f.xml作为参数传递进来,相当于类与布局的绑定,在个人看来这种做法与自定义控件十分相似

最后,在需要加载fragment控件的主xml中,用以下代码方式将fragment加载入主xml的布局中加以显示,需要留意的是android.name属性,必须对控件fragment的该属性指定包名+类名才能够找到并加载对应的fragment布局对象

android:id="@+id/fragment"

android:layout_width="match_parent"

android:name="com.example.young.***"

android:layout_height="match_parent" />

动态加载fragment

必要步骤与静态加载相同,新建f.xml并新建F.java

在需要动态加载/替换不同fragment的位置,添加 FrameLayout 标签,因为该标签特性是所有控件都覆盖在左上角,这样就使得新加载的控件能够覆盖之前的控件,达到替换不同fragment的作用,演示代码如下:

android:id="@+id/right_layout"

android:layout_width="0dp"

android:layout_height="match_parent"

android:layout_weight="1">

android:id="@+id/right_fragment"

android:layout_width="match_parent"

android:name="包名+fragment类名"

android:layout_height="match_parent" />

```

> * 动态加载说明需要根据输入来改变界面显示,因此使用一个按钮点击按钮的方式替换加载不同fragment作为实例,说明如何动态加载fragment,具体只需要在button的监听事件中编写fragment相关逻辑

```java

button.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

AnotherRightFragment fragment = new AnotherRightFragment();

FragmentManager fragmentManager = getFragmentManager();

FragmentTransaction transaction =

fragmentManager.beginTransaction();

transaction.replace(R.id.right_layout, fragment);

transaction.addToBackStack(null);

transaction.commit();

}

});

分析动态加载过程,使用到的对象有:fragment布局对应的类实例fragment,FragmentmanagerFragmentTransaction 需要先得到一个新fragment实例(目的是用于之后的加载),然后得到FragmentManager实例(Activity中可直接调用getFragmentManager()获取),之后的操作就是利用manager开始一次事物操作,manager实例调用beginTransaction()得到一个事物transaction实例对象(个人感觉该操作类似数据库一次事物),通过transaction进行需要的操作(replace,remove等),记得需要提交conmmit。这里提交之前的一句addToBackStack(null)是为了保存懂动态加载之前的一个状态,模拟activity返回栈的操作,使得动态加载之后,点击back键就能返回上一次的状态,而不是直接退出(这一步经过实践并没实现预期结果,还未找到问题暂时搁置)

Bundle对象实例,可用于保存恢复某些数据(2.4.5 小节)

Bundle对象能够保存多种对象,例如bundle.putString(String key,String value),bundle.putInt(String key,int value),在内存不足可能回收停止状态的活动时,重写onSaveInstanceState(Bundle bundle)能够将数据保存在bundle中,再次启动活动时,通过onCreate的Bundle参数获取相关数据

Bundle可以通过intent在不同活动中传递,将数据保存在Bundle中,再将Bundle保存在intent中传递也是一种传递数据的方式

限定符(作用是自动判定该如何显示fragment,双页还是单页显示)

新建不同大小的适配的文件夹(这里有统一的格式规定),例如在res目录下新建layout-large文件夹(用于适配双页)放置显示双页格式的布局xml文件

最小限定符(Smallest-width Qualifier):灵活适配不同宽度大小的屏幕,单位是dp,举例layout-sw600dp表示屏幕宽度大于600dp的时候就使用该文件夹中的布局xml文件,小于就适配其他布局文件(该功能由Android 3.2 引入)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值