小编dr_*_*lli的帖子

Android:我可以使用TransitionManager.beginDelayedTransition监听动画更新吗?

我正在使用此处TransitionManager.beginDelayedTransition概述的 动画在RelativeLayout中交换位置的两个视图的动画.我通过简单地交换两个视图中的两个来实现这一点.RelativeLayout.LayoutParams

我的问题是如何监视自动创建和执行的动画,TransitionManager而无需创建自己的自定义过渡.我需要检测动画何时结束,以便我可以更改已交换的视图.

下面是交换两个视图的方法.CollageCanvasAperture是一个扩展,View而mApertureGroup是包含这些视图的RelativeLayout.

private void shuffle(int fromApertureInd, int toApertureInd) {
    final CollageCanvasAperture fromV = (CollageCanvasAperture) mApertureGroup.getChildAt(fromApertureInd);
    final CollageCanvasAperture toV = (CollageCanvasAperture) mApertureGroup.getChildAt(toApertureInd);

    if (null == fromV || null == toV) {
        return;
    }

    TransitionManager.beginDelayedTransition(mApertureGroup);

    RelativeLayout.LayoutParams fromLP = (RelativeLayout.LayoutParams) fromV.getLayoutParams();
    RelativeLayout.LayoutParams toLP = (RelativeLayout.LayoutParams) toV.getLayoutParams();

    fromV.setLayoutParams(toLP);
    toV.setLayoutParams(fromLP);
}
Run Code Online (Sandbox Code Playgroud)

我已经在这里进行了几个小时的搜索并梳理了TransitionManager代码,但无法看到如何检测更改.我更喜欢能够在CollageCanvasAperture中检测到动画结束,但是看不到要应用的任何相关侦听器.

我想我可以在执行动画之前提供目标LayoutParams的视图,然后视图可以监听大小和位置的变化,直到它们匹配......?

android android-animation

10
推荐指数
1
解决办法
4666
查看次数

是否有可能在Android上阅读和/或修改SMS标头?

我正在开发一个1.6及以上的Android应用程序,通过端口发送和接收SMS消息.要发送短信,我使用的方法:

SmsManager.sendDataMessage(String destinationAddress,String scAddress,short destinationPort,byte [] data,PendingIntent sentIntent,PendingIntent deliveryIntent)

但是发现byte []数据应该只包含消息体.似乎没有可用于发送多部分数据消息的方法,也没有办法修改SMS标头(UDH)来指定消息,例如,1中的1.

当我尝试从通过指定端口收到的SMS中提取消息计数信息时,我在接收端遇到类似的问题.我使用SMSMessage.getPdu()来提取包含消息头和消息体的byte [],但无法从头数据中提取特定信息.有谁知道Android平台用于短信标题的格式?

任何帮助将非常感谢.

sms android

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

我可以强制我的应用程序启动默认的相机,而不是提供"使用完整操作"列表吗?

我正在使用意图新的Intent(MediaStore.ACTION_IMAGE_CAPTURE); 捕获图像以在我的应用程序中使用.我的设备上安装了两个可以执行此功能的应用程序,但希望我的应用程序只使用默认摄像头.

有办法做到这一点吗?

camera android android-intent

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

如何在广播流期间更新 Chromecast MediaMetadata?

我最近添加了从我的 Android 广播应用程序 (chrome) 投射广播流 (audio/aac) 的功能。初始铸造按预期工作;流开始在选定的 chromecast 设备上播放,我提供的 MediaMetadata 显示在Cast Dialog 中,如果投射到电视或显示器,则通过接收器应用程序显示在屏幕上。

当我最初投射流时,我提供了当前播放曲目的 MediaMetadata。在我的 Android 应用程序中,我有一项服务,可以在曲目更改时通知我并发送更新的元数据。我遇到的问题是我正在努力寻找一种方法来通知 Chromecast 设备此更新,以便电视将更新曲目元数据,显示正确的标题/艺术家和艺术品。到目前为止,我发现的唯一部分的、hacky 的方法是RemoteMediaClient.load使用相同的流信息和更新的 MediaMetadata 再次调用 。这种方法是不可接受的,因为它会导致流重新加载,暂时停止播放。我在RemoteMediaClient中没有看到任何允许简单更新 MediaMetadata 的方法。

我可以在这里找到的唯一一篇与此有关的帖子是this one,但是它现在已有 4 年历史,并且指的是已弃用的旧版本 SDK。

我很确定我想要的功能是可能的,因为我在其他包含 Chromecast 功能的无线电应用程序中看到了这种行为。

android google-cast chromecast

5
推荐指数
0
解决办法
389
查看次数