1.Bundle n.捆;包

①Bundle是用来传递数据的“容器”,它保存的数据,是以key-value(键值对)的形式存在的。
我们经常使用Bundle在Activity之间传递数据,传递的数据可以是boolean、byte、int、long、float、double、string等基本类型或它们对应的数组,也可以是对象或对象数组。当Bundle传递的是对象或对象数组时,必须实现Serializable 或Parcelable接口。

2.Acitvity n.活动

①Activity是一个Android的应用组件,它提供屏幕进行交互。每个Activity都会获得一个用于绘制其用户界面的窗口,窗口可以充满哦屏幕也可以小于屏幕并浮动在其他窗口之上。
②类似于Java组件的Jframe
onCreate()方法:必须实现的方法,系统在创建Activity时调用此方法。您应该在实现内初始化 Activity的必要组件,必须在此方法调用setContentView(),用来定义Activity用户界面布局(XML文件)

3.SharedPreferences

①获取SharedPreference的对象,通过getSharedPreference(String,int)方法。第一个参数用于指定该存储文件的名称,不用加后缀,第二个参数指定文件的操作模式。一般用MODE_PRIVATE 私有方式存储,其他应用无法访问
②getSharedPreferences(String name, int mode)
name为文件的名称,如果指定的文件不存在则会创建一个,文件都是存放在/data/data//shared prefs目录下的。

4.Handler

①mHandler.sendEmptyMessageDelayed(GO_GUIDE,ENTER_DURATION)
延时两秒发送消息handler
②传递消息Message

//传递的数据
Bundle bundle = new Bundle();
bundle.putString("msg", "传递我这个消息");

//发送数据
Message message = Message.obtain();
message.setData(bundle);   //message.obj=bundle  传值也行
message.what = 0x11;
handler.sendMessage(message);

//数据的接收
final Handler handler = new Handler() {

        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            if (msg.what == 0x11) {
                Bundle bundle = msg.getData();
                String date = bundle.getString("msg");
            }
        }
};

5.@NonNull @Override

①@NonNull 告诉编译器,参数非空
②@Nullable 告诉编译器 参数可为空
③@Override是伪代码,表示重写。(当然不写@Override也可以),不过写上有如下好处:
可以当注释用,方便阅读;
编译器可以给你验证@Override下面的方法名是否是你父类中所有的,如果没有则报错。例如,你如果没写@Override,而你下面的方法名又写错了,这时你的编译器是可以编译通过的,因为编译器以为这个方法是你的子类中自己增加的方法。

6.intent实现页面跳转

intent可以理解为信使,由intent来协助完成Android各个组件之间的通讯

7.布局(Layout)

7.1 LinearLayout linear adj.线性的

线性布局其中的控件是按照横向或纵向方式排列的,并且线性布局不会换行,当控件超出窗口,则超出的部分不会显示,会被隐藏。其默认方向是水平方向。

android:orientation="horizontal":水平方向(一列只能放一个控件),是默认值;

android:orientation="vertical":垂直方向(一行只能放一个控件);

android:layout_width="match_parent":当前控件的宽度和包裹它的父控件一样宽;

android:layout_width="wrap_content":当前控件的宽度是根据自己内容的大小显示的;

android:layout_weight="1":权重值(即所占的比例值),如果不设置,权重的默认值为0,默认情况下,手机渲染控件时会首先显示权重值最小的控件,然后再显示权重值其次大的控件;

android:hint="请输入用户名":输入框的提示内容,当用户输入时自动消失;

android:text="admin":设置输入框的初始值;

android:id="@+id/editText_userName":在R类中添加一个静态内部类id(如果没有的话)的静态常量,相当于说:0X7f0c0050就代表当前EditText的值;

android:gravity="center":指定当前控件中的子控件(内容)的对齐方式;

android:onClick="login":指定当前用户点击当前按钮执行的函数;

7.2 RelativeLayout relative adj.相对的

①第一类:属性值为true或false

android:layout_centerHrizontal                    水平居中
android:layout_centerVertical                     垂直居中
android:layout_centerInparent                    相对于父元素完全居中
android:layout_alignParentBottom                 贴紧父元素的下边缘
android:layout_alignParentLeft                    贴紧父元素的左边缘
android:layout_alignParentRight                   贴紧父元素的右边缘
android:layout_alignParentTop                    贴紧父元素的上边缘
android:layout_alignWithParentIfMissing           如果对应的兄弟元素找不到的话就以父元素做参照物
android:layout_centerHorizontal="true"            水平居中
android:layout_centerVertical="true"              竖直居中
android:layout_centerInParent="true"              相对父控件居中

②第二类:属性值必须为id的引用名“@id/id-name”

android:layout_below                          在某元素的下方
android:layout_above                          在某元素的的上方
android:layout_toLeftOf                        在某元素的左边
android:layout_toRightOf                       在某元素的右边
android:layout_alignTop                本元素的上边缘和某元素的的上边缘对齐
android:layout_alignLeft                本元素的左边缘和某元素的的左边缘对齐
android:layout_alignBottom             本元素的下边缘和某元素的的下边缘对齐
android:layout_alignRight               本元素的右边缘和某元素的的右边缘对齐

8.viewPager

简述:app中的左右滑动、轮播图、图片自动播放就是viewpager做的
①利用viewpager+ImageView实现引导图滑动,此外还需要三个layout

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    xmlns:tools="http://schemas.android.com/tools"  
    android:layout_width="fill_parent"  
    android:layout_height="fill_parent"  
    tools:context="com.example.testviewpage_1.MainActivity" >  
  
<android.support.v4.view.ViewPager  
    android:id="@+id/viewpager"  
    android:layout_width="wrap_content"  
    android:layout_height="wrap_content"  
    android:layout_gravity="center" />  

    <LinearLayout
        android:id="@+id/ll_dots_layout"
        android:layout_width="256dp"
        android:layout_height="165dp"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="@dimen/dimen_24dp"
        android:orientation="horizontal">

        <ImageView
            android:layout_width="68dp"
            android:layout_height="96dp"
            android:layout_gravity="center_vertical"
            android:padding="@dimen/dimen_6dp"
            android:src="@drawable/dot" />
        <ImageView
            android:layout_width="75dp"
            android:layout_height="96dp"
            android:layout_gravity="center_vertical"
            android:padding="@dimen/dimen_6dp"
            android:src="@drawable/dot" />
        <ImageView
            android:layout_width="77dp"
            android:layout_height="94dp"
            android:layout_gravity="center_vertical"
            android:padding="@dimen/dimen_6dp"
            android:src="@drawable/dot" />
    </LinearLayout>
</RelativeLayout> 

②PageAdapter——PageView的适配器
简述:适配器这个东东想必大家都不莫生,在ListView中也有适配器,listView通过重写GetView()函数来获取当前要加载的Item。而PageAdapter不太相同,毕竟PageAdapter是单个VIew的合集。
需要@override的四个函数

boolean isViewFromObject(View arg0, Object arg1)
int getCount() 
void destroyItem(ViewGroup container, int position,Object object)
Object instantiateItem(ViewGroup container, int position)

9.View

#10.LayoutInflater

11.Toolbar

xml中的设置:

<android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="@color/colorAccent"
        app:navigationIcon="@drawable/ic_back_white_24dp"
        app:title="标题"
        app:titleTextColor="@color/white">
 </android.support.v7.widget.Toolbar>