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