美文网首页安卓开发
Android学习笔记

Android学习笔记

作者: 蝴蝶之梦天使 | 来源:发表于2017-02-08 11:17 被阅读172次
    图片来之网络
    一、布局方式:

    (1)线性布局LinearLayout
    (2)表格布局TableLayout
    (3)帧布局FrameLayout
    (4)相对布局RelativeLayout
    (5)网格布局GridLayout
    (6)绝对布局AbsoluteLayout

    二、常用距离单位:

    px(像素)
    dip或dp(device independent pixels 设备独立像素)
    sp(scaled pixels 比例像素)
    in(英寸)
    mm(毫米)
    pt(磅)

    三、事件处理机制:

    (1)基于监听的事件处理。
    (2)基于回调的事件处理。

    四、Activity的主要职责为:完成界面初始化工作。
    五、Configuration 描述手机设备上的配置信息。
    六、Handle类:

    (1)在新启动的线程中发送消息。
    (2)在主线程中获取、处理消息。

    七、Activity的4种加载模式:

    (1)standard: 标准模式
    (2)singleTop: Task栈顶单例模式
    (3)singleTask: Task内单例模式
    (4)singleInstance: 全局单例模式(新的Task,且次Task只包含这个Activity)。
    **在AndroidManifest.xml中,设置launchMode
    **<activity android:name=".SecondActivity" android:label="@string/app_name" android:launchMode="singleTask"></activity>

    八、Fragment为Activity的片段,拥有自己的声明周期,也可以接受它自己的输入事件。必须“嵌入”Activity中使用。

    子类:
    DialogFragment: 对话框界面的Fragment。
    ListFragment: 实现列表界面的Fragment。
    PreferenceFragment: 选项设置界面的Fragment。
    WebViewFragment: WebView界面的Fragment。

    必须实现方法:
    onCreate(): 初始化想要在Fragment中保持的必要组件。
    onCreateView(): 绘制界面组件。
    onPause(): 当用户离开该Fragment时将会调用。

    生命周期:

    onAttach(): 当该Fragment被添加到Activity时被回调。 该方法只会被调用一次。
    onCreate(): 创建Fragment时被回调。 该方法只会被调用一次。
    onCreateView(): 每次创建、绘制该Fragment的View组件时回调该方法。
    onActivityCreated():当Fragment所在的Activity被启动完成后回调该方法。
    onStart(): 启动Fragment时被回调。
    onResume(): 回复Fragment时被回调,在onStart()方法后一定会回调onResume()方法。
    onPause(): 暂停Fragment时被回调。
    onStop(): 停止Fragment时被回调。
    onDestroyView(): 销毁该Fragment所包含的View组件时调用。
    onDestroy():销毁Fragment时被回调。 该方法只会被调用一次。
    onDetach(): 将该Fragment从Activity中删除、替换完成时回调该方法,在onDestroy()方法后一定会回调onDetach()方法。 该方法只会被调用一次。

    Activity和Fragment通讯:

    Fragment获取它所在的Activity:调用Fragment的getActivity().
    Activity获取它包含的Fragment:调用Activity关联的FragmentManager的findFragmentById()或findFragmentByTag()方法.
    Activity向Fragment传递数据:在Activity中创建Bundle数据包,调用Fragment的setArguments(Bundle bundle)方法即可将bundle数据包传给Fragment。
    Fragment向Activity传递数据或Activity需要在Fragment运行中进行实时通信:在Fragment中定义一个内部回调接口,再让包含该Fragment的Activity实现该回调接口。

    九、Android上的Style分为:

    (1)Theme是针对窗体级别的,改变窗体样式。
    (2)Style是针对窗体元素级别的,改变指定空间或者Layout的样式。 (Android系统的themes.xml和style.xml包含了很多系统定义好的style,建议在里面挑个合适的,然后再继承修改)

    十、gravity的布局:

    (1)”left|right” 绝对的对齐
    (2)“start|end” 基阅读顺序的对齐

    十一、Adapter 是连接后端数据和前端显示的适配器接口,是数据和UI(View)之间一个重要的纽带。

    有点像cell,定义好layout,并将modle传入。

    十二、android studio实现父类的抽象方法的快捷方法:

    (1)ctrl + enter
    (2) 选择 Implement Methods
    就可以自动生成需要的方法。

    十三、ScrollView can host only one direct child的提示,因为scrollview中只能有一个子元素,即所有元素需要放到LinearLayout 或 RelativeLayout中。
    十四、

    android:gravity 针对控件里的元素来说的,用来控制元素在该控件里的显示位置。
    android:layout_gravity 针对控件本身而言,用来控制该控件在包含该控件的父控件中的位置。

    出现"layout"就是控件对整个布局的操作

    十五、android:layout_weight = "1

    只能在LinearLayout中使用,不能在RelativeLayout中使用。

    十六、MVP的逻辑:

    网络请求声明接口,在APIService中完成
    Model层编写完成接口请求
    Presenter中实现接口的返回操作
    View中定义界面操作接口
    Presenter调用View接口
    在Activity中实现View的接口

    十七、

    private: 只有在本类中才能访问
    public: 正好和private相反,在任何地方都能访问
    protected: 本包内能访问,而在包外只有它的子类能访问;

    十八、

    Log.v(tag,message); //verbose模式,打印最详细的日志
    Log.d(tag,message); //debug级别的日志
    Log.i(tag,message); //info级别的日志
    Log.w(tag,message); //warn级别的日志

    Log.e(tag,message); //error级别的日志

    十九、native关键字: 一个java调用非java代码的接口
    二十、Java中用final标识常量,不用const
    二十一、StringBuffer 为可变的String, 提供了append方法
    二十二、equale 和 == 的区别:

    equal: 检查字符串的值是否相等
    ==: 检查对象是否相等

    二十三、Collection集合包括 Set, List,Map。

    Set
    HashSet: 不允许出现重复元素;不保证集合中元素的顺序;允许包含一个null元素。(LinkedHashSet为有序的)
    TreeSet:可以实现排序的集合。(使用Comparator进行排序)

    List
    ArrayList: 可变的数组列表。
    LinkedList: 链表结构实现了List接口。
    Vector: 类似与ArrayList。不同处:同一时刻只可以有一个线程操作。
    Stack类: 数据结构中的堆栈。

    Map

    HashMap: 哈希表实现映射集合结构。
    TreeMap: 按Map映射中的元素按照键进行升序排序。

    二十四、Enumeration和Iterator的区别:

    Enumeration只能在Vector和HashTable中使用。Iterator使用所有结合。
    Enumeration遍历集合时不可移除元素,Iterator可以。

    二十五、

    String.format("¥%.2f", mOrderInfo.getOrder_amount());
    将float保留两位小数,转为 string

    二十六、Context.MODE_WORLD_WRITEABLE为每个APP创建一个文件夹。
    二十七、
    public void onClick(View v) {
            new Thread(new Runnable() {
                public void run() {
                    final Bitmap bitmap = loadImageFromNetwork("http://example.com/image.png");
                    mImageView.post(new Runnable() {
                        // run方法会在UI线程中执行  
                        public void run() {
                            mImageView.setImageBitmap(bitmap);
                        }
                    });
                }
            }).start();
        }
    

    **在主线程中,更新UI组件。
    **
    调用以下方法:
    Activity.runOnUiThread(Runnable)
    View.post(Runnable)
    View.postDelayed(Runnable, long)

    如果在工作线程中调用了这3个方法, 那么方法中Runnable参数封装的操作会在UI线程中执行.

    二十八、View事件:

    View.OnClickListener 单击事件
    View.OnCreateContextMenuListener 创建上下文菜单事件
    View.OnFocusChangeListener 焦点改变事件
    View.OnKeyListener 按键事件
    View.OnLongClickListener 长按事件
    View.OnTouchListener 触摸事件

    二十九、

    layout可以创建横屏和竖屏的布局。
    Configuration 可以获取系统的信息

    三十、Activity的基类:

    FragmentActivity:实现Fragment,必须继承这类
    AccountAuthenticatorActivity: 实现账户管理界面的Activity
    TabActivity:实现Tab界面的Activity
    ListActivity:实现列表界面的Activity
    LauncherActivity:实现Activity列表界面的Activity,当单击列表项时,所对应Activity被启动
    PreferenceActivity:实现程序参数设置,存储界面的Activity
    AliasActivity:别名Activity的基类,启动其他Activity时结束自己
    ExpandableListActivity:可扩展的list,单击某个item后,又可显示一个子list。

    三十一、Context抽象类:一个访问application环境全局信息的接口,可以访问application的资源和相关的类,功能有:

    启动Activity
    启动和停止Service
    发送广播信息(Intent)
    注册广播信息(Intent)接受者
    可以访问APK中各种资源(如Resources和AssetManager等)
    可以访问Package的相关信息
    APK的各种权限管理

    三十二、Android应用要求所有应用程序组件(Activity、Service、ContentProvider、BroadcastReceiver)都必须显式配置。

    Activity的配置:
    name:指定Activity的实现类的类名
    icon:指定Activity对应的图标
    label:指定Activity的标签
    exported:指定Activity是否允许被其他应用调用
    launchMode:指定Activity的加载模式。(standard,singleTop,singleTask和singleInstance)

    三十三、Activity的生命周期:

    4种状态:
    运行状态
    暂停状态
    停止状态
    销毁状态

    回调方法:
    onCreate(Bundle savedStatus): 创建Activity时被回调。该方法只会被调用一次。
    onStart(): 启动Activity时被回调。
    onRestart(): 重新启动Activity时被回调。
    onResume(): 恢复Activity时被回调。在onStart()方法后一定会回调onResume()方法。
    onPause(): 暂停Activity时被回调。
    onStop(): 停止Activity时被回调。
    onDestroy(): 销毁Activity时被回调。 该方法只会被调用一次。

    三十四、Fragment事务
    FragmentManager fragmentManager = getFragmentManager();FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
    

    Activity中获取Fragment事务,调用add()、remove()、 replace()操作,调用commit() 提交事务。

    三十五、Bundle类:一个key-value对。是一个final类。
    三十六、Android包含三种重要组件:Activity,Service,BroadcastReceiver。
    三十七、Intent用于值传递:

    Intent对象包含Component,Action,Category,Data,Type,Extra和Flag属性。
    Component:包名
    Action:动作
    Category:附加类别信息
    Data: Action属性提供操作的数据,接受一个Uri对象
    Type:Data属性所指定Uri对应的MIME类型
    Extra:Bundle对象,用于数据交互
    Flag:控制旗标

    三十八、TabActivity: Layout中需要设置TabHost,并添加FrameLayout和TabWidget,用来显示tab栏和内容。
    三十九、

    Drawable资源:StateListDrawable资源: 随目标组件状态的改变而自动切换。
    LayerDrawable资源: 数组顺序绘制。(layer-list 覆盖绘制)
    ShapeDrawable资源:几何图形(如矩形、圆形、线条)。(shape 绘制)
    ClipDrawable资源:其他位图上截取一个“图片片段”。(clip 截图)
    AnimationDrawable资源:动画。

    四十、主题和样式的区别:主题不能作用于单个的View组件,主题应该对整个应用中的所有Activity起作用,或对指定的Activity起作用。

    主题定义的格式应该是改变窗口外观的格式,例如窗口标题、窗口边框。

    四十一、原始资源:位于/res/raw/目录下和位于/assets/目录下
    四十二、invalidate() 实现界面刷新,会重新调用DrawView()方法。 不能在线程中调用。postInvalidate() 界面刷新。 可在线程中调用。
    四十三、SharedPreferences与iOS的UserDefault一样,用于保存简单信息到本地。
    四十四、开发Activity步骤:(1)开发Activity子类。 (2)在AndroidManifest.xml文件中配置Activity。
    四十五、AdapterView( 相当于iOS的UITableView):子类有

    ListView
    ExpandableListView
    GridView
    Spinner
    Gallery
    AdapterViewFlipper
    StackView

    Adapter接口的实现类有:
    HeaderViewListAdapter
    BaseAdapter
    CursorAdapter
    ResourceCursorAdapter
    SimpleCursorAdapter
    ArrayAdapter
    SimpleAdapter

    四十六、获取SDCard中的路径:

    File sdCardDir = Environment.getExternalStorageDirectory();

    四十七、在WebView中显示页面
    webView = (WebView) findViewById(R.id.webView); 
        //WebView加载web资源 
        webView.loadUrl("http://baidu.com"); 
        //覆盖WebView默认使用第三方或系统默认浏览器打开网页的行为,使网页用WebView打开 
        webView.setWebViewClient(new WebViewClient() 
        { 
            @Override public boolean shouldOverrideUrlLoading(WebView view, String url) 
            { 
                // TODO Auto-generated method stub 
                // 返回值是true的时候控制去WebView打开,为false调用系统浏览器或第三方浏览器 
                view.loadUrl(url); 
                return true; 
                }
        });
    

    如果不设置,则直接在系统的浏览器中打开

    四十八、String,StringBuffer,StringBuilder之间的区别

    对String,你创建了一个String,你能通过set方法改变它的长度length吗?显然是不行的!
    但 StringBuffer 可以!
    String 字符串常量StringBuffer 字符串变量(线程安全)StringBuilder 字符串变量(非线程安全)

    基本来说都是在性能上都是 StringBuilder > StringBuffer > String

    四十九、show.loadUrl("file:///android_asset/test.html");

    **访问资源文件
    **

    五十、Call requires permission which may be rejected by user: code should explicitly check to see if permission

    警告出现,将需要执行的代码放到Try Catch块中。

    五十一、常用第三方库:

    com.google.zxing:core 实现二维码生成和解析
    io.reactivex:rxandroid 处理网络请求
    io.reactivex:rxjava 异步操作,链式操作
    com.squareup.retrofit2:retrofit 网络请求框架
    com.squareup.retrofit2:adapter-rxjava 支持rxjava
    com.squareup.retrofit2:converter-gson Gson做为json的转换器
    org.greenrobot:eventbus “发布/订阅”模式的事件总线
    com.umeng.analytics:analytics 友盟
    com.android.support:multidex 解决Dex包超过65535
    com.flipboard:bottomsheet-core 底部滑出面板
    com.flipboard:bottomsheet-commons 底部滑出面板
    com.github.zhaokaiqiang.klog Log开源项目
    com.github.bumptech.glide 图片加载框架
    com.readystatesoftware.systembartint 沉浸式状态栏
    com.jcodecraeer:xrecyclerview recycleView
    com.mylhyl:acp 权限控制

    五十二、View显示状态切换

    显示 View.VISIBLE
    隐藏 View.INVISIBLE
    移除 View.GONE

    五十三、

    五十四、

    相关文章

      网友评论

        本文标题:Android学习笔记

        本文链接:https://www.haomeiwen.com/subject/ptuvittx.html