• 关于 onMeasure 的搜索结果

问题

自定义view出错,怎么找到出错位置? 400 请求报错 

kun坤 2020-05-30 15:13:15 1 浏览量 回答数 1

问题

Scollview嵌套 ExpandableListview

爵霸 2019-12-01 19:56:22 742 浏览量 回答数 1

问题

分析一下友盟错误日志

爵霸 2019-12-01 19:56:28 855 浏览量 回答数 0

新手开公司,教你化繁为简

开公司到底有没有那么难,传统的手续繁琐,线下跑断腿,场地搞不定等问题,通过阿里云”云上公司注册“解决你的烦恼。

问题

android startactivity 报错?报错

爱吃鱼的程序员 2020-06-12 15:45:57 0 浏览量 回答数 1

回答

public class FullScreenVideoView extends VideoView { public FullScreenVideoView(Context context) { super(context); } public FullScreenVideoView(Context context, AttributeSet attrs) { super(context, attrs); } public FullScreenVideoView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); int width = getDefaultSize(0, widthMeasureSpec); int height = getDefaultSize(0, heightMeasureSpec); setMeasuredDimension(width, height);这是全屏播放的。 宽高你可以自己设置比例。

爵霸 2019-12-02 02:12:41 0 浏览量 回答数 0

问题

Integer.MAX_VALUE >> 2的问题? 400 报错

爱吃鱼的程序员 2020-05-30 23:56:57 2 浏览量 回答数 1

问题

Android自定义控件在scrollview中设置高度不起作用,已经重写了 onMeasure方法

爵霸 2019-12-01 20:13:01 1174 浏览量 回答数 1

回答

自定义控件: 1、组合控件。这种自定义控件不需要我们自己绘制,而是使用原生控件组合成的新控件。如标题栏。 2、继承原有的控件。这种自定义控件在原生控件提供的方法外,可以自己添加一些方法。如制作圆角,圆形图片。 3、完全自定义控件:这个View上所展现的内容全部都是我们自己绘制出来的。比如说制作水波纹进度条。 View的绘制流程:OnMeasure()——>OnLayout()——>OnDraw() 第一步:OnMeasure():测量视图大小。从顶层父View到子View递归调用measure方法,measure方法又回调OnMeasure。 第二步:OnLayout():确定View位置,进行页面布局。从顶层父View向子View的递归调用view.layout方法的过程,即父View根据上一步measure子View所得到的布局大小和布局参数,将子View放在合适的位置上。 第三步:OnDraw():绘制视图。ViewRoot创建一个Canvas对象,然后调用OnDraw()。六个步骤:①、绘制视图的背景;②、保存画布的图层(Layer);③、绘制View的内容;④、绘制View子视图,如果没有就不用; ⑤、还原图层(Layer);⑥、绘制滚动条。

剑曼红尘 2020-04-10 12:41:49 0 浏览量 回答数 0

回答

在调用listView的onMeasure设置scrollView的高度

爵霸 2019-12-02 02:13:29 0 浏览量 回答数 0

回答

自定义viewGroup中onmeasure中必须加上child.measure(widthSpec, heightSpec);

爵霸 2019-12-02 02:29:48 0 浏览量 回答数 0

回答

从报错来说,你的确在 onMeasure中没有调用setMeasuredDimension方法,建议贴出代码看看######可能是编译的时候出的问题,重新编译过后就没有问题了

kun坤 2020-05-30 15:13:23 0 浏览量 回答数 0

回答

如果想设置自定义控件的宽高值 //默认执行,计算view的宽高,在onDraw()之前 protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int width = measureWidth(widthMeasureSpec); int height = measureHeight(heightMeasureSpec); //设置宽高 setMeasuredDimension(width, height); }

爵霸 2019-12-02 02:12:50 0 浏览量 回答数 0

回答

最简单的方法是自己写个view,最重要的地方在onMeasure和onDraw。 在onDraw里画一条椭圆线和一个椭圆图,三角形再加一行字。然后通过Activity或者fragment里传递数据给这个view,再这个view根据这个值重绘就行。

爵霸 2019-12-02 02:29:45 0 浏览量 回答数 0

问题

自定义viewGroup中放入fragment view,但是fragment中的内容不显示

爵霸 2019-12-01 19:37:23 1961 浏览量 回答数 1

回答

首先定义一个class继承View,然后重写构造方法(就是【类名+(Content content){super.(content)}。。。这些】不止这一个~)、 onDraw(这里是真正你要画自定义View的地方,一般都会先定义画笔 paint..,然后再慢慢画),(onMeasure(检测View组件和包含的子组件的大小))等一些方法。其实,实现自定义View并不是要实现全部的方法,你可以根据自己的需要去实现对应的方法即可。

爵霸 2019-12-02 02:22:51 0 浏览量 回答数 0

问题

关于android 关于自定义view的问题

爵霸 2019-12-01 20:25:24 1001 浏览量 回答数 1

回答

.布局——onLayout():决定View在ViewGroup中的位置 这个错啦。onLayout是给容器类用的。由容器类在这个方法中决定控件实际的大小和摆放位置。对于view自身太大的关系。除非写的是容器类,并且需要自己控制摆放位置和大小,那么才需要重写。 如果需要控制控件的宽高,那么重写onMasure()。最终super.onMeasure(widthMeasureSpec, heightMeasureSpec);设置的值将变成控件的宽高。

kun坤 2020-06-09 11:24:25 0 浏览量 回答数 0

问题

LayoutInflater.inflate 获取 RelativeLayout?报错

爱吃鱼的程序员 2020-06-22 17:26:07 0 浏览量 回答数 1

问题

Android SurfaceView滚动

LiuWH 2020-01-20 09:18:36 0 浏览量 回答数 1

问题

android 自定义view的理解:报错

kun坤 2020-06-09 11:24:17 0 浏览量 回答数 1

问题

android studio2.0 jdk1.8 运行报错?报错

爱吃鱼的程序员 2020-06-09 13:45:15 0 浏览量 回答数 1

问题

android这样的一个自定义View有什么问题吗?

爵霸 2019-12-01 19:51:22 802 浏览量 回答数 1

问题

添加GridView实现Launcher滑动GridView的item点击无效 : 配置报错 

kun坤 2020-06-04 11:59:14 6 浏览量 回答数 1

问题

listview时报ClassCaseException:报错

kun坤 2020-06-09 22:08:28 1 浏览量 回答数 1

问题

强转成自己写的listview时报ClassCaseException:报错

kun坤 2020-06-10 09:28:22 0 浏览量 回答数 1

回答

Composite ViewComposite views (也被称为 compound views) 是众多将多个view结合成为一个可重用UI组件的方法中最简单的。这种方法的实现过程是这样的:继承相关的内建的布局。在构造函数里面填充一个 merge 布局。初始化成员变量并通过 findViewById()指向内部view。添加自定义的API来查询和更新view的状态。TweetCompositeViewcode 就是一个 composite view。它继承于 RelativeLayout,并填充了 tweet_composite_layout.xmlcode 布局文件,最后向外界暴露了 update()方法来更新它在adaptercode里面的状态。Custom Composite View上面提到的TweetCompositeView 这种实现方式能满足大部分的情况。但是碰到某些情况就不灵了。假设你现在想要减少子视图的数量,让布局元素的便利更加有效。这个时候我们可以回过头来看看,尽管 composite views 实现起来比较简单,但是使用这些内建的布局还是有不少的开销的——特别是 LinearLayout 和RelativeLayout这种比较复杂的容器。由于Android平台内建布局的实现,在一次布局元素遍历中,系统需要处理许多布局的结合和子视图的多次测量——LinearLayout的 layout_weight 的属性就是常见例子。因此你可以为你的app量身定做一套子视图的计算和定位逻辑,这样的话你就可以极大的优化你的UI了。这种做法就是我接下来要介绍的 custom composite view.顾名思义,一个 custom composite view 就是一个重写了onMeasure() 和onLayout() 方法的 composite view 。因此相比之前的composite view继承了 RelativeLayout,现在我们需要更进一步——继承更抽象的ViewGroup。TweetLayoutViewcode 就是通过这种技术实现的。注意现在这个实现不像 TweetComposiveView 继承了LinearLayout ,这也就避免了 layout_weightcode这个属性的使用了。这个大费周折的过程通过ViewGroup’s 的measureChildWithMargins() 方法和背后的 getChildMeasureSpec() 方法计算出了每个子视图的 MeasureSpec 。TweetLayoutView 不能正确地处理所有可能的 layout 组合但是它也不必这样。我们肯定需要根据特定需求来优化我们的自定义布局,这种方式可以让我们写出简单高效的布局代码。Flat Custom View如你所见,custom composite views 可以简单地通过使用ViewGroup 的API就可以实现了。大部分时候,这种实现是可以满足我们的需求的。然而我们想更进一步的话——优化我们应用中的关键部分UI,比如 ListViews ,ViewPager等等。如果我们把所有的 TweetLayoutView 子视图合并成一个单一的自定义视图然后统一管理会怎么样呢?这就是我们接下来要讨论的 flat custom view——参看下面的图片。layouts左边为CUSTOM COMPOSITE VIEW ,右边是FLAT CUSTOM VIEWflat custom view 就是一个完全自定义的 view ,它完全负责内部的子视图的计算,位置安排,绘制。所以它就直接继承了View 而不是 ViewGroup。如果你想找找现实生活中app是否存在这样的例子,很简单——开启你手机“开发者模式”里面的 “显示布局边界”选项,然后打开 Twitter, Gmail, 或者 Pocket这些app,它们在列表UI里面都采用了 flat custom view。使用 flat custom view最主要的好处就是可以极大地压缩app 的视图层级,进而可以进行更快的布局元素遍历,最终可以减少内存占用。Flat custom view 可以给你最大的自由,就好像你在一张白纸上面作画。但是这样的自由是有代价的:你不能使用已有的那些视图元素了,比如 TextView 和 ImageView。没错,在 Canvas 上面描绘文本 的确很简单,但要你实现 ellipsizing(就是对过长的文本截断)呢?同样, 在 Canvas 上面 描绘图片确很简单,但是如何缩放呢?这些限制同样适用于touch events, accessibility, keyboard navigation等等。所以使用flat custom view的底线就是:只将flat custom view应用于你的app的UI核心部分,其他的就直接依赖Android平台提供的view了。TweetElementViewcode 就是 flat custom view。为了更容易的实现它,我创建了一个小小的自定义视图框架叫做UIElement。你可以在 canvascode 这个包里找到它。UIElement 提供了和Android平台类似的 measure/layout API 。它包含了没有图像界面的 TextView 和 ImageView ,这两个元素包含了几个必需的特性——分别参看 TextElementcode 和ImageElementcode 。它还拥有自己的 inflatercode ,帮助从 布局资源文件code里面实例化UIElement 。注意: UIElement 还处于非常早期的开发阶段,所以还有很多缺陷,不过将来随着不断的改进UIElement 可能会变得非常有用。你可能觉得TweetElementView 的代码看起来很简单,这是因为实际代码都在 TweetElementcode里面——实际上TweetElementView 扮演托管的角色code。TweetElement 里面的布局代码和TweetLayoutView‘非常类似,但是它使用 Picasso 请求图片时却不一样code ,因为TweetElement 没有使用ImageView。Async Custom View总所周知,Android UI 框架时单线程的 。 这样的单线程会带来一些限制。比如,你不能在主线程之外遍历布局元素——然而这对复杂、动态的UI是很有益处的。假如你的app 在一个ListView 中很布局比较复杂的条目(就像大多数社交app一样),那么你在滑动ListView 就很有可能出现跳帧的现象,因为ListView 需要为列表中即将出现的新内容计算它们的视图大小code和布局code。同样的问题也会出现在GridViews,ViewPagers等等。如果我们可以在主线程之外的线程上面对那些还没有出现的子视图进行布局遍历是不是就可以解决上面的问题了?也就是说,在子视图上面调用 measure() 和layout() 方法都不会占用主线程的时间了。所以 async custom view 就是一个允许子视图布局遍历过程发生在主线程之外的实验,这个idea是受到Facebook的Paperteam async node framework 这个视频激发所想到的。既然我们在主线程之外永远接触不到Android平台的UI组件,因此我们需要一个API在不能直接接触到这个视图的前提下对这个视图的内容进行测量、布局。这恰恰就是 UIElement 框架提供给我的功能。AsyncTweetViewcode 就是一个 async custom view。它使用了一个线程安全的 AsyncTweetElementcode 工厂类code 来定义它的内容。具体过程是一个 Smoothie 子项加载器code 在一个后台线程上对暂时不可见的AsyncTweetElement 进行创建、预测量和缓存(在内存里面,以便后来直接使用)。当然在实现这个异步UI的过程中我还是妥协了一些,因为你不知道如何显示任意高度的布局占位符。比如,当布局异步传递过来的时候你只能在后台线程对它们的大小进行一次更改。因此当一个 AsyncTweetView 就要显示的时候却无法在内存里面找到合适的AsyncTweetElement ,这个时候框架就会强制在主线程上面创建一个AsyncTweetElement code。还有,预先加载的逻辑和内存缓存过期时间设置都需要比较好的实现来保证在主线程尽可能多地利用内存里面的缓存布局。比如,这个方案中使用 LRU 缓存code 就不是一个明智的选择。尽管还存在这些限制,但是使用 async custom view 的得到的初步结果还是很有前途的。当然我也会通过重构这个UIElement 框架和使用其他类别的UI在这个领域继续探索。让我们静观其变吧。总结在我们涉及到布局的时候,我们自定义的越深,我们能从Android平台所能获得的依赖就越少。所以我们也要避免过早优化,只在确实能实实在在改善app质量和性能的区域进行完全的布局自定义。这不是一个非黑即白的决定。在使用平台提供的UI元素和完全自定义的两种极端之间还有很多方案——从简单的composite views 到复杂的 async views。实际项目中,你可能会结合文中的几种方案写出优秀的app。

51干警网 2019-12-02 01:34:26 0 浏览量 回答数 0

问题

求解为何int[]数组在赋值完成后,数组元素还是为空?

爵霸 2019-12-01 20:05:03 1324 浏览量 回答数 1
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 云栖号物联网 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 2020阿里巴巴研发效能峰会 企业建站模板 云效成长地图 高端建站 云栖号弹性计算 阿里云云栖号 云栖号案例 云栖号直播