小编kal*_*lik的帖子

为什么我要在HPROF Viewer和Analyzer中找到"Duplicate Strings"?

使用Android内存监视器,特别是其"转储Java堆"功能,我目前正在寻找我的应用程序内存泄漏.在Android Studio的转储/ HPROF视图的左侧,有一个选项可以打开"分析器任务",您可以告诉机器"检测泄漏的活动"和"查找重复的字符串".我对后一种选择感到困惑.它做了什么以及它如何有用?它必须比仅仅帮助我们这些笨拙的开发人员更复杂,他们将相同的字符串两次放入他们的资源文件夹中.这里的文档不是很有帮助(如果我的搜索足够彻底),因为它们只表明它在"目标程序具有重复值的字符串"的情况下有所帮助.情况会是什么时候?

android hprof heap-dump android-studio

8
推荐指数
1
解决办法
1512
查看次数

哪个LayoutManager用于2048游戏的动画?

出于培训目的,我目前正在复制2048游戏.我完成了逻辑和交互,但打印(并简单地刷新)它在一个TextView看起来很荒谬的单一内容当然.

在考虑如何为游戏构建UI时,我不确定LayoutManager选择哪个.我需要在游戏的4 x 4网格中做的是合并并在动画中添加行和列内的单元格.在我看来,这:

  • GridLayout当我需要能够处理单个行和列时,它将处理完整数据集(四行/四列中的16个瓦片),因此无法工作.但是,我不确定这一点.我曾经使用GridLayout过,但从未操纵过多少项(添加,删除),也从未使用过这种操作的动画.有没有办法操纵单行和列?

  • LinearLayout因为当我想要操纵列时遇到麻烦,但是有四个水平LinearLayouts或行,但有四个垂直LinearLayouts ,我将无法工作.

  • RelativeLayout或者ConstraintLayout可能 - 也许.这里的麻烦似乎是我必须跟踪我的16个视图TextView,并且可能以编程方式构建完整的布局,以便我可以告诉动画该做什么.当然可行,但具有挑战性.

  • CustomLayout 是一个选择,但我应该建立哪个超类?为什么?

我错过了简单的解决方案吗?如果没有,那么LayoutManager对于我的数据结构来说,最"自然"的是什么(目前是16个整数的数组,但可以很容易地改为4 x 4整数数组).

android android-animation android-layout android-gridlayout android-constraintlayout

8
推荐指数
1
解决办法
605
查看次数

在BottomNavigationView中为导航项添加边距

我有一个BottomNavigationView我像这样实例化的:

BottomNavigationView navigationView = findViewById(R.id.bottom_navigation);
navigationView.setOnNavigationItemSelectedListener(this);
Run Code Online (Sandbox Code Playgroud)

/menu/menu.xml 看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@+id/first_id"
        android:icon="@drawable/home_icon"
        android:title="Item" />

    <item
        android:id="@+id/second_id"
        android:icon="@drawable/home_icon"
        android:title="Item" />

    <item
        android:id="@+id/third_id"
        android:icon="@drawable/home_icon"
        android:title="Item" />

    <item
        android:id="@+id/fourth_id"
        android:icon="@drawable/home_icon"
        android:title="Item" />
</menu>
Run Code Online (Sandbox Code Playgroud)

/drawable/home_icon 看起来像这样:

<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="24dp"
    android:height="24dp"
    android:viewportHeight="24.0"
    android:viewportWidth="24.0">
    <path
        android:fillColor="#FFFFF0"
        android:pathData="M10 20v-6h4v6h5v-8h3L12 3 2 12h3v8z"
        android:strokeColor="#FFFFF0"
        android:strokeWidth="1" />
</vector>
Run Code Online (Sandbox Code Playgroud)

如您所见,导航项的按钮周围有边框,但是,边框相互接触。因此我想在菜单按钮之间添加一个边距。我怎样才能做到这一点?

在此处输入图片说明

从屏幕截图中也可以看出,我正在阻止切换模式。我通过调用来做到这一点

BottomNavigationViewHelper.removeShiftMode(navigationView);
Run Code Online (Sandbox Code Playgroud)

使用这里的代码。

按钮周围的边框已添加如下:

int stateListDrawable = drawableStateLists.get(currentFragment);
navigationView.setItemBackgroundResource(stateListDrawable);
Run Code Online (Sandbox Code Playgroud)

whilestateListDrawable指的是StateListDrawable当按下不同的菜单按钮时会发生变化的 a。的StateListDrawable指向XML选择这又是指一个xml形状像这样,例如:

<?xml version="1.0" encoding="utf-8"?> …
Run Code Online (Sandbox Code Playgroud)

java android android-layout android-view bottomnavigationview

8
推荐指数
1
解决办法
4933
查看次数