Android学习笔记

一、布局方式:

(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 **

八、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

五十三、

五十四、

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值