小总结

一, 动画

	1, 分类

		  3.0 之前 

				帧动画		 FrameAnimation  (Drawable Animation)

				补间动画	 TreenAnimation	 (View Animaction)

		  3.0 之后

				属性动画	 PropertyAnimation

	2, 帧动画

		改变的是图层, 正在的属性还在以前的位置

		资源文件创建方式:

			一系列图片, 一帧一帧的播放出来

			2.1 文件夹:  res/drawable

			2.2 根节点:  <animation-list/>

				<animation-list>
					<item android:drawable ="图片id" adroid:duration = "持续时间,毫秒"/>
				</animation-list>

			2.3 在代码中, 设置背景资源  android:background=""

			2.4 获取AnimationDrawable 管理器对象, 调用start() 方法开启动画
												   调用stop() 方法停止动画

		代码创建方式

			1, 声明动画管理器对象
				AnimationDrawable drawable  = new AnimationDrawable();

			2, 向动画管理器中添加动画
				drawable.addFrame(getResources().getDrawable(图片id),持续时间);

			3, 为控件设置动画资源
				mIv.setImageDrawable(drawable);
			
			4, 启动动画
				drawable.start();  drawable.stop();

			5, 默认动画执行一次
				drawable.setOneShot(false);//true 执行一次, false 执行多次

	  3, 补间动画  *****

			开发者只需要提供开始和结束的动画, 中间的位置由系统自动补齐

			分类:

				透明度(渐变)	alpha			<alpha/>
				缩放			scale			<scale/>
				旋转			rotate			<rotate/>
				位移			translate		<translate/>
				集合			set				<set>

			资源文件的创建方式

				存放的目录:  res/anim

				节点: <alpha/>,<scale/>,<rotate/>,<translate/>,<set>

				1, 在资源文件中创建xml文件

				2, 在java代码中, 启动动画资源
					mIv.startAnimation(AnimationUtils.loadAnimation(this,动画资源的id));

			代码创建方式

				1, 得到Animation对象

					AlphaAnimation
					ScaleAnimation
					RotateAnimation
					TranslateAnimation
					AnimationSet

				2, 设置持续时间

				3, 为控件启动动画
				mIv.startAnimation(AnimationUtils.loadAnimation(this,动画资源对象));

		4, 属性动画  -- 增强版的补间动画

						属性和图层一起发生变化

			资源文件创建
				4.1  存放的路径

					 res/animator

				4.2	 节点
					 单个动画:  <objectAnimator/>
					 动画集合:  <set/>

				4.3  属性名称:  

						位移:  translationX  translationY

						旋转:  rotation    rotationX   rotationY

						缩放:  scaleX      scaleY

						透明:  alpha

			代码创建动画
			
					    单个动画

							ObjectAnimator  animator =ObjectAnimator.ofFloat(控件, "属性名称",可变长度的数组-值);

							animator.start();
						集合动画:

							AnimatorSet animatorSet = new AnimatorSet();
							animatorSet.play(播放的动画).with(动画2);
							animatorSet.start();



二,Frasco的使用

	Frasco 是FaceBook 出品的, 在C++层处理, 大大的降低了OOM异常

	步骤:

		1, 导入依赖

		2, 初始化Fresco  -- 在Application 的子类中

		3, 在清单文件中, 引入MyApp

		4, 在布局页面中添加控件

			4.1  在根节点中, 引入第三方命名空间

			4.2  创建控件
				<com.facebook.drawee.view.SimpleDraweeView
				
					android:id = "@+id/sdv_id"
					fresco:placeholderImage="占位图片"
					
				/>
			4.3 加载图片
				mSdv.setImageUri(Uri.parse("加载图片的绝对路径"));

		5, 添加权限
	
三,Butterknife的使用

	注入框架:  View , Resource, Action

	代替了: findViewById() ,  点击事件监听器

	步骤:

		1, 导入依赖

		2, 在Activity的onCreate() 方法,  绑定ButterKnife
			
			Unbinder unbinder = ButterKnife.bind(this);
			//Unbinder unbinder = ButterKnife.bind(this,View);  Fragment和适配器中
		
		3, 注解
			
			View 注解
			Resource 注解
			事件注解
		
		4, 在Activity的onDestroy(), 解绑

			unbinder.unBind();

	
四,Retrofit的使用

		网络框架    -- xUtils一样

		1, 导入依赖

		2, 定义一个接口, 在接口中需要返回一个Call 
			@GET("地址值")
			Call<实体类> getInfo();

		3, 定义一个实体类  -- 数据的实体类

		4, 在Activity中通过Retrofit获取网络数据

			4.1  声明Retrofit 的构建者

			4.2  设置基础地址

			4.3  设置Gson解析

			4.4  得到Retrofit对象

			4.5  得到自定义的接口

			4.6  调用接口中的方法, 得到Call对象

			4.7  通过Call 中的 enqueue() 方法, 异步加载数据

		5, 添加权限
			



五, 案例( 一   --- 四 , 综合案例) 

   1, 使用Retrofit获取网络数据  
   2, 控件初始化通过ButterKnife
   3, 图片的处理使用Fresco
   4, 点击图片, 实现图片的旋转动画


	
七, 自定义View

	为什么使用:

		1, 解决控件嵌套的事件冲突问题

		2, 当前的控件没有办法满足开发需要

		3, 优化布局, 封装代码...

	分类:

		1, 继承View	---	完全自定义的View

		2, 继承已有控件  --- 在现有控件的基础上拓展

		3, 继承ViewGroup及其子类 -- 定义组合控件

	方法:

		onDraw()		绘制

		onMeasure()		测量的方法--测量自己

		onLayout()		排版布局的方法  -- 排版当前控件中的子控件摆放方式

	构造方法:
	
		一个参数

		   在java代码中, 定义控件时使用

		两个参数

			在布局页面中, 使用自定义控件的时候调用

	练习:

		View中的具体内容是一个同心圆中包含一段红色的文字“已经选中商品!


八, Tablayout + ViewPager + Fragment的使用

	Tablayout   导航			Design包中,  导入依赖

	ViewPager	视图切换页面	V4包

	Fragment     切换的每个页面	V4包

九, AIDL的简单使用

	 Android Interface Definition Language  安卓接口定义语音

	 作用:  实现了跨进程间的通信 --- 两个App  , 绑定服务

	 1, 服务端  ServerApp
		
		1.1  在src/main 目录中, 创建一个aidl 文件   .aidl结尾

		1.2  在文件中, 定义一个方法, 没有修饰符

		1.3  编译-- .aidl  编译成 同名的.java文件

		1.4  声明一个服务类, 绑定服务的方法

		1.5  在清单文件中注册 -- 提供action动作

	 2, 客户端  

		2.1  复制, 服务端的src/main 目录中的aidl文件夹, 复制到客户端的同级目录中

		2.2  编译客户端中的aidl文件 , 生成.java文件

		2.3  绑定服务

十, NDK   --- Android sdk 全面加入了"原生"二字, 谷歌简称为ndk

			  Native Development Kit    --- NDK 本地开发服务
			  
		  Native :	基于操作系统开发  C/C++

		  JNI	 :	JAVA  调用 C/C++的规范, 没有jni 则不能实现java调用C/C++

		  NDK 生成的.h中的方法名称,组成的部分是:

		"注意"	.h中的方法名称 =  Java + java类的包名 + java类的类名 + java类的方法名称

	  步骤:

			1, 安装

				File -- > Setting  --- > Android sdk --> sdk tools -- >选择ndk ---> 下载安装

				cmd  doc命令中--- > 执行: ndk-build命令,   检测ndk是否安装成功

			2, 使用ndk

				2.1  新建一个工程

				2.2  配置ndk 的环境  --- 只需要确认即可, 在安装的同时, 系统已经配置完成

				需要的文件:	.java  --->  .class---> .h --->.c --->so包


				2.3  在java包中, 创建一个普通的java类  JniTest.java, 在类中声明一个native 修饰的方法

					  public  class JniTest
					  {
						  public static native String getInfo();
					  }

			     2.4  编译后:  Build  --- > make module "App" 

				 2.5  首先得打开studio 中 Terminal工具,  切换目录到app/src/main目录中

						1, cd app/src/main

						2, javah -d jni -classpath ../../build/intermediates/classes/debug 包名.类名
						
				 2.6  复制.h的文件名称, 在同一个目录中, 创建同名的.c文件

						.h 的文件名称 必须和 .c 的文件名称一致

						"返回你想对java类说的话"

						return (*env)->NewStringUTF(env,"Hello  AS....");

				2.7	  生成so文件 

						编译 : Build --> make module "App"

						如果报错: 

							在gradle.properties文件中追加下面代码即可:
								android.useDeprecatedNdk=true

				2.8   引入so包, 在 2.3步骤创建的java类中, 引入

						static{

							System.loadLibrary("app");
						}

				2.9   在Activity 调用的地方, 获取数据

						String str = JniTest.getInfo();


十一: Webview的使用

	  主要的类:

			WebView			 控件 -- 加载网页(本地, 外网) 

			WebViewClient	 网页加载的处理器

							 作用:
								1, 设置页面在当前的应用中打开
								2, 返回页面加载的状态(页面开始加载, 页面加载完成)
								3, 重定向网页(Fragment中必须设置)


			WebSetting		 webView的设置信息
							  支持js
							  支持js弹出窗口
								

			WebChromeClient	  和页面加载的交互 
						
								1, 显示当前加载的进度
								2, 获取js弹出的性信息


		   方法:

				1, loadUrl()
				
					加载网页

				2, loadData(代码String,"text/html",null)	

					加载页面的代码("不能有中文")

				3, loadDataWithBaseURL(null,String类型的代码, "text/html","UTF-8",null)

					加载页面的代码("可以显示中文")

				4, canGoBack()

					检测是否能够后退

				5, goBack()

					回退

				6, canGoForward()

					检测是否能够前进

				7, goGorward()

					前进

				8, reload()

					刷新页面

				9, stopLoading()

					停止加载页面

	 实例:

		使用WebView 加载图片地址




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值