理论

HorizontalScrollView可以有个直接子控件 
在Fragment中通过getActivity()__方法可以获得Activity对象 
Fragment每次切换时都会重新加载页面的切换方法是replace()__ 
能够充当ViewPager适配器的类需要继承自PagerAdapter__ 
Fragment显示的方法是show()__

简述Fragment生命周期及其意义 

Fragment生命周期,依附在Activity上使用时,最先走的生命周期方法是onAttach(),

是Activity和Fragment获得联系的方法,

然onCreate()创建的方法,

接着创建视图onCreateView(),然后等待Activity也创建完之后,

走onActivityCreated()可以拿到Activity传递过来的数据,onstart(),onResume()当点返回键退出了当前应用,Activity走onPause(),onStop()和onDestroy()然后Fragment走失去联系的方法onDetach()

简述ViewPager和Fragment配合使用的方式 

很多App首次进入时候会展示导航页,需要ViewPager和Fragment配合使用,

布局中把Viewpager当做一个普通控件来写,.然后再另外写4个Fragment的布局文件,

分别写4个类实现这4个Fragment,在MainActivity中获取到viewpager控件,

创建一个适配器,继承自FragmentPagerAdapter,就是适用于fragment的viewpager适配器.


简述HorizontalScrollview使用中需要注意的问题 
HorizontalScrollview是横向滚动视图,在布局中声明,它里面只可以有一个直接的子控件,例如一个LinerLayout,LinerLayout里面可以包含很多东西,表示ScrollView的内容是否被拉伸以适应视口的大小的方法是isFillViewport(),HorizontalScrollView设置要滚动到的位置的方法是smoothScrollTo()

手指在屏幕上抬起对应的事件是ACTION_UP 
Android可以实现轮播图的控件是ViewPager__ 
Android负责线程间通信的是Handler__ 
onTouchEvent返回值的含义是返回true表示处理事件,返回false表示不处理,事件向上传递 
onClickListener__不属于__(属于/不属于)Android事件分发机制的方法

阐述Android事件分发机制 
Android事件分发机制首先从Activity这一层开始,Activity层有两个方法,dispatchTouchEvent()分发事件,返回值的含义是事件是否分发onTouchEvent()触摸事件,返回值的含义是事件是否消费.接着是ViewGroup层,有三个方法,dispatchTouchEvent()分发事件,返回值的含义是事件是否分发,onIterceptTouchEvent(),拦截事件,返回值的含义是事件是否拦截onTouchEvent()触摸事件,返回值的含义是事件是否消费.第三层是View,有两个方法dispatchTouchEvent()分发事件,返回值的含义是事件是否分发onTouchEvent()触摸事件,返回值的含义是事件是否消费.

简述使用Android原生实现轮播图的思路 
Android中可以实现轮播图的控件是Viewpager,在布局中写出这个控件,在代码里创建一个装着几张图片的集合,然后设置适配器,继承自PagerAdapter,将集合和当前Activity传过去.,构造方法中需要重写4个方法,getCount()返回数量,instantiateItem()实例化对象,在这里面给图片设置显示.添加到容器里,destroyItem()销毁对象.从容器中移除

简述Handler运行机制 
Handler是用于Activity和子线程间通信的机制,在主线程里发送Handler,子线程会先经过Message消息机制,然后是Looper轮循机构,将消息接收

Activity标准启动模式是standard__ 
Activity之间通过Intent__传递数据 
Activity销毁时会调用onDestroy()__方法 
Fragment创建视图时会调用onCreateView()__方法 
Activity获取焦点时会调用onResume()方法

谈下Activity和Fragment的封装思路 

Activty和Fragment是两个很关键的类,很容易被用到,所以将他们简单封装起来是很有必要的,

自己写一个Activity类继承自AppCompatActivity,

里面写三个抽象方法,没有方法体,这是绑定布局的方法setContentView(getLayoutId()),括号里面的是布局的int值,还有获取数据也写成一个抽象方法,方便调用

谈下项目结构搭建需要准备的工作 
项目结构搭建的是否完善对之后的工作有很大影响.我们要分清楚哪些是一类的,然后合理分开,再做项目的时候也会有助于头脑清晰

分别描述Activity和Fragment的生命周期及各生命周期对应的意义 
Activity生命周期有7个,最开始创建的方法onCreate(),开始的方法onStart(),获得焦点的方法onResume(),失去焦点的方法onPause(),停止的方法onStop(),销毁时调用的方法onDestroy(),再次启动的方法onRestart()..Fragment生命周期有11个,和Activity获得联系的方法onAttach(),创建的方法onCreate(),创建视图的方法onCreateView(),Activity创建完成的方法onActivityCreated(),开始的方法onStart(),获得焦点的方法onResume(),失去焦点的方法onPause(),停止的方法onStop(),销毁视图的方法onDestroyView()销毁的方法,onDestroy(),失去联系的方法onDetach()

在实际开发中,我们最常用的两种网络请求方法是GET__POST__ 
Universal-Image-Loader使用了三级缓存和二级采样 
我们可以配置图片的色彩模式为RGB_565__来减少内存占用的同时尽可能做到不失真 
Universal-Image-Loader使用到的内存缓存是LruCache__ 
Universal-Image-Loader使用到的磁盘缓存是LruDiskCache__

详述Universal-Image-Loader可以配置的选项 

Image-Loader在初始化之前可以进行全局配置通过ImageLoaderConfiguration,可以进行配置图片的格式DisplayImageOptions,设置缓存在SD卡的路径,线程池的数量,图片缩放类型,图片在加载中默认显示的图片和图片在加载失败时显示的图片,图片在路径为空的时候加载显示的图片,设置图片的色彩模式等等


详述Universal-Image-Loader的缓存机制和对图片做的优化处理 

Image-Loader使用了三级缓存和二次采样,三级缓存就是要设置一张图片显示,

先判断这张图片是否存在内存中,

如果存在内存中就拿出来显示,如果不存在就去判断SD卡是否有这张图片.SD卡如果有这张图片就存在内存里,

在展示,如果没有就去网络上获取这张图片,并且先存到SD卡里面,在存到内存里面,

最后展示出来,这样就不会出现网慢的情况下图片展示不出来,

访问过的图片直接就可以从内存或sd卡里取出来,也节省了用户的流量和时间,

二次采样就是在展示一张图片的时候可能会报错OOM,

out of memory内存溢出,就是图片太大了放不下,

这就需要二次采样将它压缩到一定比例的大小展示,首先设置inJustDecodeBounds为true仅仅加载图片的边框进来,不加载图片的像素值,根据给定的屏幕宽高算比例,

最后确定出这张图片实际的可以展示的大小,接着进行二次采样,

这回设置inJustDecodeBounds为false就回加载图片的像素点进来展示图片

简述HttpUrlConnextiion的使用方式 
URLConnection类的子类HttpURLConnection,HttpURLConnectionconnection = url.openConnection().接着对connection做一系列的设置,设置请求方式setRequestMethod(),可以是GET和POST,常用的是GET,设置读取超时setReadTimeOut() ,设置连接超时setConnectTimeOut(),获得响应结果码getResponseCode()

PullToRefresh上下都可以刷新需要设置模式为BOTH_ 
PullToRefresh直接子控件最多有个 
PullToRefresh要实现WebView的刷新需要使用PullToRefreshWebView 
PullToRefesh实现了上拉加载下拉刷新__功能 
PullToRefresh__可以__(可以/不可以)自定义HeaderView

简述PullToRefresh可以实现的功能 
PullToRefresh可以实现上拉加载和下拉刷新的功能,可以对很多控件实现这一功能,PullToRefreshListView是可以实现ListView的上拉下拉功能,PullToRefreshGridView是可以实现GridView的上拉下拉功能,PullToRefreshWebView是可以实现WebView的上拉下拉功能,PullToRefreshExpandableListView是可以实现ExpandableListView的上拉下拉功能,

简述PullToRefresh原理 
PullToRefresh本质上是对LinearLayout做了封装,自定义了一些内容,PullToRefresh直接子控件最多有1个,实现了上拉下拉刷新更多内容的功能,可以自定义视图

简述PullToRefresh的使用方式 
PullToRefresh是在LinearLayout基础上封装的一种可以实现上拉加载更多下拉刷新更多内容的控件,首先新建一个Module,等待编译完成后,点击File-import module,将提前下载好的开源的PullToRefresh的Library库导入进来,等待编译完成,.编译过程中会报错,会提示要下载build tools19版本和sdk 16版本,点击下载完成后.给创建好的module加一个依赖,选的是第三个module的依赖.然后就可以使用了.在MainActivity里面首先设置PullToRefresh的模式,可以选择BOTH上拉下拉都可以,PULL_FROM_START只可以下拉,PULL_FROM_END只可以上拉,然后设置在下拉和上拉时候显示的标签文字,例如松开刷新和正在刷新等等,设置刷新的监听事件,获取数据必须是在异步下执行才可以

猜你喜欢

转载自blog.csdn.net/qq_41698379/article/details/80781472