小编Dmi*_*nko的帖子

获取片段的容器视图ID

我添加了一个片段

transaction.add(R.id.content, fragment, null);
Run Code Online (Sandbox Code Playgroud)

我需要从这个开始新的片段.但要做到这一点,我需要知道第一个片段的容器视图ID(在我的例子中是R.id.content).我怎么能得到这个?

我可以直接使用这个id,但我想片段不应该知道有关父活动的这类细节.例如,在这种情况下,不可能在另一个活动中使用此片段.

可能是从另一个"起始"片段是一个不好的做法,所有片段处理逻辑应该由活动本身处理?但是创建好的片段序列相互启动似乎非常有用(例如detalView-> moreDetailView-> evenMoreDetailView).

containers android android-fragments android-view

33
推荐指数
4
解决办法
7万
查看次数

Android应用安装失败:软件包com.my.app在条目AndroidManifest.xml中没有证书

在Android Studio中,我使用密钥库生成了已签名的APK,依此类推.将APK安装到设备上时失败并显示"无法安装应用程序",而在Android监视器中,我看到以下行:

Package com.my.app has no certificates at entry AndroidManifest.xml; ignoring!
Run Code Online (Sandbox Code Playgroud)

有人知道什么是错的吗?

android install keystore

32
推荐指数
1
解决办法
2万
查看次数

如果object为null,如何运行代码?

在Kotlin中,如果对象不是null,我可以运行代码:

data?.let {
    ... // execute this block if not null
}
Run Code Online (Sandbox Code Playgroud)

但如果对象为null,我该如何执行代码块?

kotlin kotlin-null-safety

31
推荐指数
5
解决办法
1万
查看次数

抑制AndroidManifest.xml与minSdkVersion相关的警告

正如http://developer.android.com/guide/practices/screens_support.html所述,出于兼容性原因,我的AndroidManifest.xml包含以下内容:

<uses-sdk android:minSdkVersion="3" android:targetSdkVersion="4"/>
Run Code Online (Sandbox Code Playgroud)

这会在eclipse中生成警告:

属性minSdkVersion(3)低于项目目标API级别(4)

有没有办法压制这个警告或以任何其他方式摆脱它?这真的很烦人.

android suppress-warnings android-manifest

23
推荐指数
1
解决办法
4500
查看次数

来自Java的Kotlin:字段是否可以为空?

从Java访问Kotlin类时,是否可以在运行时告知特定字段是否可以为空?此外,是否可以判断一个类是否是一个数据类?

即便猜测也足以满足我的目的.使用反射也很好.

java kotlin

14
推荐指数
1
解决办法
952
查看次数

在扩展功能中修改"this"

我想编写修改"this"的扩展函数,例如:

var a = false
a.toggle() // now a contains false
Run Code Online (Sandbox Code Playgroud)

要么

var a = 1
a.increment() // now a contains 2
Run Code Online (Sandbox Code Playgroud)

在Kotlin有可能吗?

我可以创建返回修改值的扩展函数,但保留"this"未修改,但我想要更方便!看起来Swift可以做到这一点.

kotlin kotlin-extension

9
推荐指数
1
解决办法
1433
查看次数

OpenGl直接渲染到位图(没有任何视图)

我需要将一些像素着色器应用于位图(使用OpenGL)并将结果发送到服务器.渲染应该在后台进行,所以我不能为此创建GLSurfaceView.所以我的问题是:是否可以在不使用GLSurfaceView的情况下在Android上进行OpenGL渲染?喜欢直接渲染到位图,画布或某种缓冲/数组?或者可以通过它使用某种虚拟GLSurfaceView?

android opengl-es

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

layout"include"功能不支持layout_gravity属性?

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

    <include
        layout="@layout/view1" 
        android:layout_gravity="center_vertical" />

    <include
        layout="@layout/view2"
        android:layout_gravity="center_vertical" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

那么,android:layout_gravity会一直被忽略吗?这对于代码可重用性来说真的很糟糕......看起来layout_margin也不支持.

这是view1.xml布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:minHeight="45dip"
    android:background="@drawable/updater_background" >

    <ProgressBar
        style="?android:attr/progressBarStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:layout_marginRight="7dip"
        android:visibility="gone" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

layout android include

7
推荐指数
1
解决办法
5022
查看次数

@OnLifecycleEvent架构组件中的注释方法如何与LifecycleOwner连接?

它看起来像我们并不需要使用kapt@OnLifecycleEvent注释工作.那么,他们如何联系起来呢?它是某种运行时注释处理吗?

我问,因为我很好奇使用这些注释的成本是多少.使用它们会影响应用程序启动时间吗 还是项目编译时间?

android android-architecture-components

6
推荐指数
1
解决办法
218
查看次数

如何获得任意矩阵的缩放值?

图像按矩阵缩放:

Matrix matrix = new Matrix();
matrix.postScale(...);
matrix.postTranslate(...);
matrix.postRotate(...);
...
Run Code Online (Sandbox Code Playgroud)

我希望缩放的图像不会小于原始图像的一半,因此总变焦不应小于0.5.

但是怎么做呢?我试图获取矩阵的第一个值来检查:

float pendingZoom = 0.6f;

float[] values = new float[9];
Matrix.getValues(values);
float scalex = values[Matrix.MSCALE_X];
Run Code Online (Sandbox Code Playgroud)

然后:

if(scalex<0.5) {
    pendingZoom = pendingZoom * (0.5f / scalex);
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,它有时不起作用.如果图像已旋转,则scalex可能为负,pendingZoom也将为负.

怎么做到这一点?


UPDATE

我刚发现values[Matrix.MSCALE_X]它不是一个可靠的缩放值.我用它来计算矩形的新宽度,这是不正确的.

相反,我试图用矩阵映射两个点,并计算两个距离:

PointF newP1 = mapPoint(matrix, new PointF(0, 0));
PointF newP2 = mapPoint(matrix, new PointF(width, 0));
float scale = calcDistance(newP1, newP2) / width;
Run Code Online (Sandbox Code Playgroud)

scale现在可以得到正确的价值.但我不确定这是否是最佳解决方案.

android zoom rotation matrix scale

5
推荐指数
1
解决办法
2020
查看次数