Android开发文档二Word下载.docx
- 文档编号:21990308
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:23
- 大小:2.62MB
Android开发文档二Word下载.docx
《Android开发文档二Word下载.docx》由会员分享,可在线阅读,更多相关《Android开发文档二Word下载.docx(23页珍藏版)》请在冰豆网上搜索。
1、
AndroidLibrary
Library工程的好处
一些util方法或者我们自定义的控件放到Library工程,实现复用;
相比jar包而言,他可以实现资源文件的复用甚至覆盖;
模块化设计实现代码共享,便于管理,提高效率;
Library工程的设置
在包资源管理窗口,右键点击要进行设置的项目->
属性->
Android->
勾选IsLibarary;
Library工程的引用
在包资源管理窗口,右键点击要引用Library工程的项目->
右下Add->
选择要引用的Libarary->
确定;
2、
圆角
方式一:
使用xml文件定义圆角
方式二:
canvas.drawBitmap()
此方法需要new一个canvas来生成圆角;
方式三:
canvas.clipPath()
此方法需要View中canvas对象来生成圆角,这个对象在draw类方法中被传入;
所以要继承View并重写draw(),onDraw(),dispatchDraw()等方法进行实现;
通过第三种方法的效果作用范围更广,使用更灵活:
3、
适应屏幕的背景图
一张720*1280的图片占用的内存大概为:
720*1280=921600B,接近1M,一张1M的图片存在于应用内存中,是一件很危险的事情,不仅会影响当前的页面的绘制性能,会占用了大量的内存,使得OutOfMemoryError错误出现的概率更高;
所以对于大背景图,应当做一些降低消耗的处理;
而当背景图很长,或者很宽时,我们应该对背景图进行截取,使得图片的宽高比与屏幕的宽高比一致,使得图片中的图案不至于被拉伸;
所以,对于一张比较大的并且高宽比与屏幕的宽高比不一致的可以做以下的处理:
1、缩小到和屏幕一样大;
2、裁剪得和屏幕宽高比一样;
4、
改变图片的颜色
下图动态条目的声音图标,原来是白色的,可以通过代码改变图标为红色。
代码如下,原理大概是:
把这张资源图片里面的所有透明部分提取出来,然后重新绘制一张新的Bitmap,透明的部分继续绘制成透明的,非透明的部分就绘制成红色(或者你想要的颜色)。
所以,使用这种方法的一个条件是这张图片带有透明的部分;
5、
仿iphone的点击效果
以下的返回按钮,没有点击的情况,是一个简单的返回图标,点击这个按钮时,这个按钮的底部会显示一片渐进的白色;
这种效果可以使用ImageView来实现,ImageView的前景固定为一个返回的图标,背景是一个selector,这个selector正常状态是透明背景,点击状态是渐进白色的背景
这个ImageView的高占满标题栏的高度,而宽比高还要大;
而前景的返回图标的显示大小,可以通过设置padding的大小来适应;
并且这样子,也可以把返回按钮的点击范围扩大,使得点击更加灵敏;
所以,有时候我们想扩大按钮的点击范围,可以考虑使用ImageView来当Button使用;
6、
有最大最小宽高值的ImageView
以下ImageView显示一张图片,ImageView的大小根据图片的大小进行设置;
其中ImageView的宽和高都有一个最大最小值;
最大时是左图上面的ImageView的宽度和高度;
最小时是右图上面的的ImageView的宽度。
我们可以通过下面的算法对ImageView的width和height进行设置,就可以达到想要的效果了。
其中imageView.setScaleType(ScaleType.CENTER_CROP)可以使得imageView截取图片的中间部分进行显示。
例如图片很长的时候,就可以截取这张图片的中间爱你部分来显示。
7、
屏幕的某位置弹出缩放动画
这种效果是这样的:
点击下图的一个ImageView,然后就从这个ImageView的位置弹出一个渐渐放大的对话框,这个对话框中也包括一个ImageView,在动画的过程中,这个ImageView的初始大小与图中的这个被点击的ImageView的大小是一样的,而最终的大小是占满屏幕。
首先,获取被点击的ImageView的位置:
然后通过Rect去创建ScaleAnimation动画对象;
最后通过调用view.startAnimation()方法播放动画。
8、
列表项的删除动画效果
删除动画的效果是这样的:
被删除的那一项渐渐的消失(或者向左或右移除),而其他项向被删除的那一项慢慢靠拢;
首先,被删除的那一项渐渐的消失(或者向左或右移除)的动画是:
其他项向被删除的那一项慢慢靠拢,是通过一帧一帧地减小这个被删除的View的高度实现的:
这个动画需要实现Runnable接口,重写run方法,并在这个run方法中调用onUpdate()方法,而其中mListView.post(this)方法使得这个动画继续播放下一帧:
启动动画,调用mListView.post(this)方法:
当然,为了使这个动画的内容丰富,我们应该要实现cancel()、stop()这些以及添加一些监听器等:
9、
自定义padding动画
通过一帧一帧地设置一个View的padding的大小来实现view的移动或者隐藏动画。
在一些可下拉刷新的控件中,下拉刷新的后,headerview可以使用padding动画来实现缓慢返回和隐藏的动画效果。
首先定义一个Smooth类:
开始执行向上返回动画的方法,其中调用了handler.post(scroolToTopRunnable),开始执行第一帧:
scroolToTopRunnable的实现如下,其中run方法调用了:
scroolToTop()方法:
scroolToTop()方法根据当前的padding和最终要设置的padding,计算出这一帧要设置的padding,然后设置这一帧的padding,如果设置的这一帧的padding和最终要设置的padding是相等的,那么就播放完动画,否则继续调用了handler.post(scroolToTopRunnable),开始播放下一帧:
同理的,我们可以定义向左、向右、向下的一些动画:
并且,我们还可以添加动画的监听器,如上代码:
定义了ScroolToEndListener接口,等到动画播放完之后就调用接口的onScroolToEnd()方法;
我们在外面实现这样的接口,就可以在动画播放完之后做一些处理了。
10、
Activity向右Touch退出
在有返回操作的当前页面(activity)中,触摸此页面左右移动,而此页面会跟随手势左右移动,当向右移动超过一半的时候,就会继续播放完向右移动的动画(直到整个页面消失),然后就关闭此页面(activity)。
要实现这样的效果,需要两个要点:
1、设置当前的Activity的WindowBackground为透明的:
可以用java代码在Activity中这样设置:
getWindow().setBackgroundDrawableResource(R.color.transparent);
也可以在xml文件中,创建一个style并且设置windowBackground属性为透明色,然后在mainfest文件中设置Activity的them属性中引用。
2、重写Activity的dispatchTouchEvent()方法:
dispatchTouchEvent()方法中调用了onTouchBack(ev)方法:
onTouchBack(ev)方法的实现是下面这样的,主要是调用了TouchBack类的onTouchBack()方法:
TouchBack类的onTouchBack()方法的实现是这样的:
在onDown()中,主要是做一些能否touchback的判断,以及做一些初始化的记录:
而checkMoveDirection(event)方法主要是判断是否达到touchback的条件,这个条件是:
首先水平移动了一段距离;
也就是说如果首先向上或者向下移动了一段距离,那么就不会再满足touchback的条件。
这个很好说明,例如,如果在一个页面中有ListView,如果首先向上或者向下移动了一段距离,那么之后就一直是ListView的滚动事件,而不会执行touchback操作;
相反,如果首先水平移动了一段距离,那么就会一直执行touchback操作而不会执行ListView的滚动事件了,直到手指离开屏幕。
其中判断Touch方向的一些方法已经封装在了Touch类里面。
真正移动这个页面的方法就是moveToX(floatdx)方法,moveToX()方法通过设置view的padding从而达到view移动的效果。
最后,当手指离开这个页面的时候,就会调用smoothSwich()方法。
在smoothSwich()方法中就是调用了前一篇文章中说到的自定义padding动画的那个Smooth类的一些方法进行移动动画的播放。
其中需要注意的是这些方法都属于TouchBack这个类的,而view属性是传入的Activity的DecorView。
实现Smooth中的ScroolToEndListener监听器,就可以在动画播放完之后做一些处理。
当页面向右退出后,就关闭Activity,当页面向左返回时,就设置View的背景为空。
另外,也需要实现页面的背景随着左右移动而改变透明度,其中在moveToX()方法中调用了Smooth.setPaddingLeft(view,(int)(paddingLeft+dx))方法,这个方法中就有随着padding的改变而改变透明度的一些设置:
11、
点击编辑框外任意点,隐藏软键盘
重写dispatchTouchEvent()方法:
其中editTouchEvent()方法的实现是:
通过down事件和move事件判断是否符合点击事件,其中move事件中如果移动的距离小于DY被认为是点击事件。
在up方法中调用方法判断被点击的是否是一个EditText,如果不是,则以藏软键盘。
其中checkEditing()方法中调用了InputUtil.isEditing(getWindow().getDecorView(),event)方法,isEditing()方法会在DecorView中去寻找被点击的那个控件,并且判断这个控件是否为EditText:
12、
Activity的ContentView添加删除
在Activity中有几个setContentView()方法,可以设置Activity的页面内容,另外还有一个addContentView()方法,也可以设置Activity的页面内容。
但两者不一样的地方是的。
setContentView()方法方法会先清空以前设置的页面的所有内容:
PhoneWindow中的setContentView()方法如下:
而addContentView()方法不会清空以前设置的页面的所有内容,并且在原有的页面内容上添加ContentView:
PhoneWindow中的addContentView()方法如下:
于是乎,我们就可以使用addContentView()方法大作文章:
1、添加标题栏
其中contentView就是想要设置的页面内容,这个要需要先设置topMargin的大小与标题栏的高度一致;
titleBar就是要设置的标题栏的内容;
需要注意的是要先添加contentView,再添加titleBar,因为titleBar要覆盖在contentView上面。
效果图如下,红色框那部分是titleBar,其余的是contentView:
2、添加底部控制栏
添加底部的控制栏与添加标题栏的原理是一样的,只是设置的gravity不一样:
3、添加浮动控件
你可以在任意位置添加一个控件或布局
4、移除添加的contentView
5、模拟弹出对话框
调用setFilledView()方法,然后再对contentView设置一些弹出动画
至于对话框的消失,可以调用4中的removeView()方法,然后设置一些动画就可以了。
13、
Activity的WindowManager
使用Activity的WindowManager可以生成真正浮动的View,这种浮动就像是Toast的那种弹出浮动。
我们可以根据需要自己进行自定义,一个用法例子如下,这个例子是自定义Toast的一段代码:
同样需要设置布局参数、拥有addView()、removeView()方法
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Android 开发 文档