Android群英传小总结

2024-03-02 01:30
文章标签 android 总结 群英传

本文主要是介绍Android群英传小总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

看书的总结参考资料(Android群英传)

1.自定义控件

1.1控件架构

Activity-PhoneWindow-DecorView(TitleView,ContentView)

1.2View的测量

1)OnMeasure()方法
2)MeasureSpec类是一个32位int值,高2位是测量模式,低30是测量大小
3)测量模式有EXACTLY(精确模式)、AT_MOST(最大值模式)、UNSPECIFIED(未定义大小,一般用于自定义View)
获取模式例如:int specMode = MeasureSpec.getMode(measureSpec);
判断模式例如:specMode == MeasureSpec. EXACTLY

1.3View 的绘制

1)OnDraw()
2)onFinishInflate():从XML加载完组件后调用
3)onSizeChanged():组件大小改变时调用
4)如果是ViewGroup还有布局方法onLayout()

1.4自定义属性

1)创建attr.xml文件
2)代码获取上面布局文件,并给控件设置属性
例如:TypedArray ta=context.obtainStyleAttributes(attrs,R.styleable.name);
mBg = ta.getDrawable(R.styleable.name_propertyName,0);
mButton.setBackground(mBg);
3)自定义接口
4)引用文件
注意指定名字空间
xmln:android=http://schemas.android.com/apk/res/android

1.5事件拦截机制

例如A-B-C
完整流程是:A的dispatchTouchEvent—A 的onInterceptTouchEvent
B的dispatchTouchEvent—B 的onInterceptTouchEvent
C的dispatchTouchEvent—C 的onTouchEvent
B的onTouchEvent-A的onTouchEvent
只要onTouchEvent没有返回true就会执行下一个的onTouchEvent直到结束

2.ListView的使用技巧

2.1常规技巧

ViewHolder/ convertView
android:divider=”@android:color/darker_gray” 设置分割线
android:scrollbars=”none” 隐藏滚动条
listView.setSelection(N) 指定显示第N条item
mAdapter.notifyDataSetChanged(); 动态更新
listView.setEmptyView(empty_view); 注意empty布局和listview在一起。

2.2ListView的监听事件

1)OnTouchListener(down/move/up事件);
2)onScrollListener其中onScrollStateChanged(SCROLL_STATE_IDLE
停止/SCROLL_STATE_ITOUCH_SCROLL滑动/SCROLL_STATE_IFLING用手指滑动离开时的惯性滑动状态);onScroll()滚动时一直调用

2.3LisView的特殊方法

1)overScrollBy:重写它可以设置listview下拉距离
2)getItemViewType():判断加载不同布局样式的表标识

3.Scroll分析

3.1获取坐标的方法

这里写图片描述

3.2实现滑动的方法

1)onLayout(通过原坐标+偏移量)
2)offsetLeftAndRight(offsetX)和offsetTopAndBottom(offsetY)根据偏移量调用该方法
3)LayoutParams(动态修改布局位置)
4)ScrollTo(x,y)表示移动到摸个具体的坐标;ScrollBy(offset,offsetY)表示移动的增量也就是偏移量.注意以上两个方法移动是数瞬间完成的
5)Scroller可以平滑的移动
6)属性动画
7)ViewDragHelper

4.绘图技巧

4.1屏幕的一些概念

1)分辨率、DPI(每英寸像素)、px和dp的转换、px和sp的转换
2)canvas画线、形状等
3)XML绘图bitmap标签、shape标签、Layer标签(类似于PS图层)、Selector(不同事件获得不同状态)
4)surfaceView(使用场景频繁刷新或者刷新时数据处理较大可以考虑使用)

5.动画

5.1tween(补间动画)

Alpha(透明)、Rotate(旋转)、Translate(位移)、Scale(缩放)、AnimationSet(动画集合)

5.2frame(帧动画)
5.3Object(属性动画)

通过静态工厂的方式返回一个objectAnimator对象;PropertyValuesHolder(实现动画集合);
AnimatorSet(实现动画集合);

5.4自定义动画

(applyTransformation(float interpolatedTime,Transformation t))

5.5 Android5.X SVG矢量动画

6.Activity

6.1状态

Running Paused Stopped Killed

6.2生命周期(七种)

OnCreate onStart (可见)onResume(获得焦点) onPause(失去焦点) onStop(不可见) onDestory onRestart

6.3启动模式

standard singleTop singleTask singleInstance

7.性能优化

7.1布局优化

include、 ViewStub

7.2内存优化

静态存储:编译的时候就存在的,一般是static
栈:一般存放基本数据类型和对象的引用,对象本身存储在堆中
堆:用来存放用new创建的对象和数组

7.3使用工具分析、优化

1)Bitmap的优化:使用适当的分辨率图片,及时回收,使用缓存
2)代码优化:使用静态方法、static修饰常量、减少不必要的成员变量、对资源注意回收解注册等、避免使用IOC框架、尽量使用视图缓存、使用surfaceView替换View进行频繁的绘图。

这篇关于Android群英传小总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/764505

相关文章

Android数据库Room的实际使用过程总结

《Android数据库Room的实际使用过程总结》这篇文章主要给大家介绍了关于Android数据库Room的实际使用过程,详细介绍了如何创建实体类、数据访问对象(DAO)和数据库抽象类,需要的朋友可以... 目录前言一、Room的基本使用1.项目配置2.创建实体类(Entity)3.创建数据访问对象(DAO

Java向kettle8.0传递参数的方式总结

《Java向kettle8.0传递参数的方式总结》介绍了如何在Kettle中传递参数到转换和作业中,包括设置全局properties、使用TransMeta和JobMeta的parameterValu... 目录1.传递参数到转换中2.传递参数到作业中总结1.传递参数到转换中1.1. 通过设置Trans的

C# Task Cancellation使用总结

《C#TaskCancellation使用总结》本文主要介绍了在使用CancellationTokenSource取消任务时的行为,以及如何使用Task的ContinueWith方法来处理任务的延... 目录C# Task Cancellation总结1、调用cancellationTokenSource.

Android WebView的加载超时处理方案

《AndroidWebView的加载超时处理方案》在Android开发中,WebView是一个常用的组件,用于在应用中嵌入网页,然而,当网络状况不佳或页面加载过慢时,用户可能会遇到加载超时的问题,本... 目录引言一、WebView加载超时的原因二、加载超时处理方案1. 使用Handler和Timer进行超

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo

Android平台播放RTSP流的几种方案探究(VLC VS ExoPlayer VS SmartPlayer)

技术背景 好多开发者需要遴选Android平台RTSP直播播放器的时候,不知道如何选的好,本文针对常用的方案,做个大概的说明: 1. 使用VLC for Android VLC Media Player(VLC多媒体播放器),最初命名为VideoLAN客户端,是VideoLAN品牌产品,是VideoLAN计划的多媒体播放器。它支持众多音频与视频解码器及文件格式,并支持DVD影音光盘,VCD影

git使用的说明总结

Git使用说明 下载安装(下载地址) macOS: Git - Downloading macOS Windows: Git - Downloading Windows Linux/Unix: Git (git-scm.com) 创建新仓库 本地创建新仓库:创建新文件夹,进入文件夹目录,执行指令 git init ,用以创建新的git 克隆仓库 执行指令用以创建一个本地仓库的

二分最大匹配总结

HDU 2444  黑白染色 ,二分图判定 const int maxn = 208 ;vector<int> g[maxn] ;int n ;bool vis[maxn] ;int match[maxn] ;;int color[maxn] ;int setcolor(int u , int c){color[u] = c ;for(vector<int>::iter