gpt4 book ai didi

android - ImageView 方法 `setImageState(int[] state, boolean merge)` 有什么作用?

转载 作者:太空狗 更新时间:2023-10-29 12:44:40 25 4
gpt4 key购买 nike

ImageView 公共(public)方法 setImageState(int[] state, boolean merge) 没有引用文档>

  • 它有什么作用???

  • 如何使用???

  • 参数statemerge有什么作用???

我想在我的应用程序中使用一个 ImageButton 作为指示器,其中有很多不同的图像用于不同的状态。所以我认为这可能会有用,但没有任何信息。

下面是ImageView的源码,不过我不是很懂。

440     public void setImageState(int[] state, boolean merge) {
441 mState = state;
442 mMergeState = merge;
443 if (mDrawable != null) {
444 refreshDrawableState();
445 resizeFromDrawable();
446 }
447 }

最佳答案

pskink 友善地指出 ImageView 方法 setImageState() 中的 mMergeState 再次出现在该方法中onCreateDrawableState(int extraSpace)如下所示:

686     @Override
687 public int[] onCreateDrawableState(int extraSpace) {
688 if (mState == null) {
689 return super.onCreateDrawableState(extraSpace);
690 } else if (!mMergeState) {
691 return mState;
692 } else {
693 return mergeDrawableStates(
694 super.onCreateDrawableState(extraSpace + mState.length), mState);
695 }
696 }

所以看起来如果你在 setImageState(state, merge) 中将 merge 设置为 false 然后下一步当 View 系统调用 onCreateDrawableState() 时,它将只返回您在 setImageState(state, merge) 中提供的状态>.
但是,如果您在 setImageState(state, merge) 中将 merge 设置为 true,那么下一次 View 系统调用 < strong>onCreateDrawableState() 它将返回与您在 setImageState(state, merge) 中提供的状态合并的现有状态。

换句话说,是的,merge 参数决定了您提供的state 应该与还是合并下次 View 系统调用 onCreateDrawableState() 时替换 ImageView 的当前状态。

我仍然认为应该在文档中添加一些参数说明。到目前为止,我还没有遇到没有任何文档的任何其他公共(public)方法。

关于android - ImageView 方法 `setImageState(int[] state, boolean merge)` 有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20348057/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com