小编and*_*per的帖子

ADT 22 - 升级后缺少aapt.exe

在工作中,我需要使用maven与Android.

maven使用appt.exe进行自己的编译过程.

自从我升级到ADT 22后,maven说它无法找到这个文件,而且它是正确的 - 文件已从"...\platform-tools"中删除.

我试图卸载并重新安装sdk管理器和ADT,但它没有帮助.

我该怎么做才能解决这个问题?

为什么会消失?


编辑:

目前,我使用了一种解决方法,即将所有旧的"平台工具"文件复制(不替换)到当前文件中.它似乎工作,但也许它可能会导致问题.

android adt maven aapt

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

如何从中心裁剪动画ImageView填充屏幕,反之亦然(脸谱风格)?

背景

Facebook应用程序在帖子上的小图像和用户也可以缩放到它的放大模式之间有一个很好的过渡动画.

在我看来,动画不仅根据以前的位置和大小放大和移动imageView,而且还显示内容而不是拉伸imageView的内容.

这可以通过我做的下一个草图看到:

在此输入图像描述

这个问题

他们是如何做到的呢?他们真的有2个观点动画来揭示内容吗?

他们是如何使它变得如此流畅,就像它是一个单一的视图?

当缩略图设置为中心裁剪时,我已经看到(链接在这里)的图像被放大到全屏的唯一教程不能很好地显示.

不仅如此,它甚至可以在Android的低API上运行.

有人知道有类似能力的图书馆吗?


编辑:我找到了一个方法,并发布了一个答案,但它是基于更改layoutParams,我认为它没有效率和推荐.

我尝试过使用正常的动画和其他动画技巧,但是现在这是唯一对我有用的东西.

如果有人知道该怎么做以使其更好地工作,请写下来.

android crop android-animation android-imageview

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

如何在Android"L"上获取最近的任务?

背景

我的应用程序允许在最近推出时对应用列表进行排序.

问题

从Android"L"开始,函数getRecentTasks将返回当前应用程序已启动的应用程序列表,如文档中所述:

如果您的应用使用ActivityManager.getRecentTasks()...

通过在即将发布的版本中引入新的并发文档和活动任务功能(请参阅下面的"最近的并发文档和活动"屏幕),现在不推荐使用ActivityManager.getRecentTasks()方法来提高用户隐私.为了向后兼容,此方法仍然返回其数据的一小部分,包括调用应用程序自己的任务以及可能的一些其他非敏感任务(例如Home).如果您的应用使用此方法检索自己的任务,请使用android.app.ActivityManager.getAppTasks()来检索该信息.

使用ADT显示此功能的文档(当前在Internet上不可用)时写入相同内容:

不推荐使用此方法.从L开始,此方法不再适用于第三方应用程序:因为引入以文档为中心的最新版本意味着它可能会将个人信息泄露给调用者.为了向后兼容,它仍将返回其数据的一小部分:至少是调用者自己的任务(尽管请参阅getAppTasks()以获取正确支持的方式来检索该信息),并且可能还有一些其他任务,例如home已知的不敏感.

我不明白为什么采取这种行为,因为很容易看到用户拥有哪些应用程序,甚至没有任何许可.

事实上,这是我添加的这个功能的一大限制,所以我希望有办法克服这个问题.

我试过的

目前,我只使用了一种关于最近推出了哪些应用程序的启发式方法 - 我得到了正在运行的进程列表.

我也可以使用流程的重要性值,也许还可以使用"importanceReasonComponent",但这只是所有的启发式和猜测......

这个问题

有没有办法克服这个限制?我没有想到的任何解决方法?

也许这有可能与root?还是BusyBox?

android process android-task android-5.0-lollipop

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

如何使用新的清单合并(Android Studio和Gradle)?

背景

在过去,当Eclipse和ADT是Android开发的官方工具时,您可以在应用程序项目的" project.properties "中使用" manifestmerger.enabled = true " ,然后让它自动合并所有库的清单(我在这里发布了它).

这有时候很有效.它有很多奇怪的问题,我总是倾向于避免使用它,并手动将所需内容放入主清单文件中.

问题

在2014年的某个地方,谷歌宣布新的Android-Studio(我认为0.1)和Gradle将允许您精确选择如何合并库的组件.

但是,新指令(链接在这里)非常复杂,我真的(真的)试图了解如何使用它们,也没有找到如何使用它们的示例.

这不是我什么都不懂,但我不确定我是否理解得很好.

我发现了什么

从好的方面来说,我发现合并是完全自动完成的,所以如果你在库的清单上有一个BroadcastReceiver(当然还有一个类),它将被添加到使用它的app的项目中.

这个问题

我不能简单地问一切都要解释.我认为问这些问题就足够了:

  1. 如何选择要自动合并的哪些应用程序组件(权限,活动......)?

  2. 如何指定覆盖应用程序组件(库的)属性(在应用程序的项目上)?例如活动的主题?

  3. 有没有办法完全禁用清单文件的自动合并?

  4. 存储库中的依赖项清单会发生什么?他们合并了吗?

  5. 是否有关于这个新功能(对我而言是新的)功能的教程/样本/视频?

  6. 使用自动合并时有什么我应该注意的事项吗?

我希望这些问题具有足够的代表性,足够的信息,但对于那些知道的人来说却不难回答.

android android-manifest android-studio manifest-merging

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

Jelly Bean的READ_LOGS权限(api 16)

由于Android Jelly Bean不支持日志读取权限(根据此谷歌io 2012视频视频),我想知道root设备(或非root设备)是否可以绕过这个限制并能够读取日志.

我怎么做?我真的需要将应用程序变成系统应用程序,还是足够生根?

logging android root android-4.2-jelly-bean

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

windowBackground与活动风格的背景有什么区别?

我通过在样式中使用"android:background"参数并将应用程序的主题设置为链接到此样式,为应用程序的所有活动设置了背景.

一切运作良好,直到我注意到对于带有项目列表的对话框,它使每个项目具有完整的背景大小.

将用于"android:windowBackground"的参数更改后,在这种情况下似乎也能正常工作.

它为什么会发生?两者有什么区别?

此外,没有设置"机器人:windowBackground"到@null为写到这里提供相同的速度提升为使用"机器人:背景"?

android styles background android-theme android-activity

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

发射器如何更改自适应图标的形状,包括删除背景?

背景

从Android O开始,应用程序可以拥有自适应图标,即2层可绘图:前景和背景.背景是一个掩码,它可以成为启动器/用户选择的形状,而OS也有一个默认的形状.

以下是Nova Launcher允许执行的示例:

在此输入图像描述

正如您所看到的,它不仅可以选择使用哪种形状,还可以避免形状(在"更喜欢的旧图标"中).

以下是一些关于它的链接:

问题

虽然我知道如何创建一个AdaptiveIconDrawable实例,并且我知道有助于为当前应用程序创建一个实例的向导,但我不知道如果给定一个AdaptiveIconDrawable实例,启动器会改变形状.

不仅如此,我记得我看到一个或两个发射器不允许任何形状.

遗憾的是,我无法找到有关此部分的任何信息,可能是因为这是一个相对非常新的功能.StackOverflow上甚至没有关键字.

我试过的

我尝试阅读自适应图标,但无法找到对接收方的引用.

我知道它里面有2个drawable:

我知道,至少,如何从第三方应用程序中获取AdaptiveIconDrawable实例(假设它有一个):

PackageManager pm = context.getPackageManager();
Intent launchIntentForPackage = pm.getLaunchIntentForPackage(packageName);
String fullPathToActivity = launchIntentForPackage.getComponent().getClassName();
ActivityInfo activityInfo = pm.getActivityInfo(new ComponentName(packageName, fullPathToActivity), 0);
int iconRes = activityInfo.icon;
Drawable drawable = pm.getDrawable(packageName, iconRes, activityInfo.applicationInfo); // will be AdaptiveIconDrawable, if the app has it
Run Code Online (Sandbox Code Playgroud)

问题

  1. 给定一个AdaptiveIconDrawable实例,如何将其塑造成圆形,矩形,圆角矩形,撕裂等?

  2. 如何删除形状并仍然具有图标的有效大小(使用其中的前景可绘制)?发射器的应用程序图标的官方大小为48 dp,而AdaptiveIconDrawable内部drawable的官方大小为72dp(前景),108dp(背景).我想这意味着将前景绘制,以某种方式调整大小,并转换为位图.

  3. 在哪种情况下使用它确实有用IconCompat.createWithAdaptiveBitmap()?有人写道:"如果您使用Bitmap构建动态快捷方式,您可能会发现支持库26.0.0-beta2的IconCompat.createWithAdaptiveBitmap()可用于确保正确屏蔽您的位图以匹配其他自适应图标." ,但我不知道哪些情况对它有用.


编辑:为了从自适应图标的前景部分创建一个位图,同时调整到适当的大小,我认为这可能是一个很好的解决方案:

val foregroundBitmap = convertDrawableToBitmap(drawable.foreground)
val targetSize = convertDpToPixels(this, ...).toInt()
val scaledBitmap = …
Run Code Online (Sandbox Code Playgroud)

android adaptive-icon

22
推荐指数
1
解决办法
2387
查看次数

如何创建一个重复的动画移动渐变drawable,就像一个不确定的进展?

背景

Android有一个标准的ProgressBar,在不确定时会有一个特殊的动画.还有很多可用的进度视图库(这里).

问题

在我搜索过的所有内容中,我找不到办法做一件非常简单的事情:

具有从颜色X到颜色Y的渐变,水平显示,并在X坐标中移动,以便X之前的颜色将变为颜色Y.

例如(只是一个插图),如果我有一个蓝色< - >红色的渐变,从边缘到边缘,它将如此:

在此输入图像描述

我试过的

我在StackOverflow上尝试了一些解决方案:

但遗憾的是,它们都是关于Android的标准ProgressBar视图,这意味着它有一种不同的方式来显示drawable的动画.

我也试过在Android Arsenal网站上找到类似的东西,但即使有很多不错的东西,我找不到这样的东西.

当然,我可以自己动画2个视图,每个视图都有自己的渐变(一个与另一个相反),但我确信有更好的方法.

这个问题

有可能使用Drawable或它的动画,这使得渐变(或其他任何东西)以这种方式移动(当然重复)?

也许只是从ImageView扩展并在那里制作drawable动画?

是否也可以设置容器将用于重复可绘制的多少?我的意思是,在上面的例子中,它可能是从蓝色到红色,所以蓝色将在边缘,红色将在中间.


编辑:

好的,我已经取得了一些进展,但是我不确定这个动作是否正常,而且我认为它的速度不一致,以防万一CPU有点忙,因为它不考虑帧丢失.我所做的是将2个GradientDrawables一个接一个地绘制,如下:

class HorizontalProgressView @JvmOverloads constructor(
        context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
) : View(context, attrs, defStyleAttr) {
    private val speedInPercentage = 1.5f
    private var xMovement: Float = 0.0f
    private val rightDrawable: GradientDrawable = GradientDrawable()
    private val leftDrawable: GradientDrawable = GradientDrawable()

    init {
        if (isInEditMode)
            setGradientColors(intArrayOf(Color.RED, Color.BLUE))
        rightDrawable.gradientType = GradientDrawable.LINEAR_GRADIENT;
        rightDrawable.orientation …
Run Code Online (Sandbox Code Playgroud)

animation android drawable android-progressbar

22
推荐指数
1
解决办法
2080
查看次数

是否有任何官方API /样本/教程用于实施新的材料设计指南?

背景

谷歌最近为设计师添加了很多指南(这里),包括大量关于事物如何运作的动画.

问题

当我阅读指南时,我决定尝试新设计,并使用支持库.

可悲的是,对于他们中的许多(或者可能是全部?),我无法使用Google提供的官方API来了解如何实现它们.

例如,我试图找出他们如何实现这种名为"灵活空间与图像"的酷炫滚动效果(取自此处):链接.但是,无论我在哪里搜索,我唯一能找到的就是第三方库(比如这个).

另一个例子是创建Material-design凸起按钮样式的方法(在此处发布)

我发现了什么

我在Android开发者博客上发现了非常具体元素的小片段(以及更多指南),例如此处此处,但这还不足以使用它,更不用说支持Android前Lollipop版本了(那就是大多数设备现在).

我也找到了这个文档,但同样,它对设计师网站(这里)显示的内容缺乏很多解释.

这个问题

是否有任何新的材料设计指南的API /样品/教程?

除了我发现的以外还有什么?

支持库是否有可能几乎不支持新设计?我甚至不能找到对话的支持和Prefereces在里面,所以我做了什么(基于别人的库)在这里 ......

有这么多动画的例子真的很奇怪,但是没有真正的代码可以尝试用于最佳实践......

android android-support-library material-design android-5.0-lollipop

21
推荐指数
1
解决办法
2163
查看次数

如何在特定菜单项之间添加分隔符?

背景

我在操作栏(实际上是工具栏)中有一个菜单项,当单击时,会显示可供选择的项目列表,类似于单选按钮:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:app="http://schemas.android.com/apk/res-auto">

    <item
        android:icon="@drawable/..."
        android:title="@string/..."
        app:showAsAction="always">
        <menu>
            <group
                android:id="@+id/..."
                android:checkableBehavior="single">
                <item .../>
                <item .../>
                <item .../>
            </group>
        </menu>
    </item>
</menu>
Run Code Online (Sandbox Code Playgroud)

我需要在这个项目列表下面放一个项目,它将在它和列表之间有一个分隔符.与材料设计指南显示的相似(取自此处):

在此输入图像描述

编辑:这是我想要做的草图:

在此输入图像描述

问题

我找不到办法去做.

我试过的

我发现的唯一可行解决方案是:

  1. 更改活动的主题(此处),但这也会影响活动的其他菜单项

  2. 菜单项出现在操作栏上时在菜单项之间放置分隔符的方法,但此处它们不会出现在工具栏本身上.它们出现在所选项目的弹出菜单上.

  3. 我试图在列表和额外项目之间放置假物品,我也尝试放置一个组,一个空组,甚至尝试了各种属性.

可悲的是没有用.

这个问题

如何在动作项目的弹出菜单的特定项目之间添加分隔符?

也许我需要在单击操作项时创建自定义弹出菜单(如此)?如果是这样,我如何在特定项目之间放置分隔符?也许使用Spinner作为动作项目?

android submenu divider android-actionbar android-toolbar

21
推荐指数
3
解决办法
3万
查看次数