在Android中,想要TranslateAnimation与for循环一起用,但运行结果只有最后一次循环移动,不明求教

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Android中,想要TranslateAnimation与for循环一起用,但运行结果只有最后一次循环移动,不明求教相关的知识,希望对你有一定的参考价值。

void action(int fromXDelta, int toXDelta, int fromYDelta, int toYDelta)
// 平移 setFillAfter(true) 控制执行动画后定在当前状态
Animation translateIn = new TranslateAnimation(fromXDelta, toXDelta,
fromYDelta, toYDelta);
translateIn.setDuration(3000);
translateIn.setFillAfter(true);
scanLight.startAnimation(translateIn);
translateIn.cancel();

void run()
for (int i = 0; i < abc.length; i++)
switch (abc[i]) //在这里解析数组,根据数组的内容来进行定义xy坐标
case 1:
fromX=(100);
fromX=(50);
break;
case 2:
fromX=(100);
fromX=(500);
break;
case 3:
fromX=(500);
fromX=(500);
break;
case 4:
fromX=(500);
fromX=(700);
break;
case 5:
fromX=(1150);
fromX=(700);
break;
case 6:
fromX=(1150);
fromX=(300);
break;
case 7:
fromX=(500);
fromX=(500);
break;
case 8:
fromX=(100);
fromX=(500);
break;
default:
break;


action(x, fromX, y, fromY);
try
Thread.sleep(4000);
catch (InterruptedException e)
// TODO Auto-generated catch block
e.printStackTrace();


Log.i("aaa", "abc[i]" + abc[i]);
Log.i("xy", "x " + x + " toX " + fromX + " y " + y
+ " toY " + fromY);
x = fromX;
y = fromY;



根据数组内容来定义坐标,然后移动到坐标点,因为很多坐标点,要连续移动

参考技术A startAnimation 你没有设置重复执行 就只会执行一次追问

我设置过重复,但是只有最后一次for循环给的参数坐标重复执行

如何在Android中堆叠通知?

【中文标题】如何在Android中堆叠通知?【英文标题】:How to stack notifications in Android? 【发布时间】:2016-05-06 16:40:56 【问题描述】:

我是 Android 开发的新手,我正在创建一个从服务器(使用 WebSockets)接收消息的应用程序,我想在它发送消息时接收通知。我做到了,一切正常,我唯一想要的就是有一个可以扩展的通知(如 Gmail 或 WhatsApp 通知)。我搜索了过去两天,但没有找到我想要的东西(也来自 Android 开发者网站)。有人可以帮我这样做吗?在此先感谢,如果您需要澄清问题,请原谅我的英语不好,请问:)

这里有类似电话图片的东西:http://developer.android.com/intl/es/training/wearables/notifications/stacks.html(尝试这样做但没有成功。如果你想看,我可以发布代码)

这是我的代码(已更新):

         int n=0;
         final static String GROUP = "group";
public void notifica(String title,String text) 

    NotificationCompat.Builder mBuilder =
            (NotificationCompat.Builder) new NotificationCompat.Builder(this)
                    .setSmallIcon(R.drawable.icona)
                    .setContentTitle(title)
                    .setContentText(text)
                    .setStyle(new NotificationCompat.InboxStyle()
                    .addLine(text)
                    .setBigContentTitle(n+" new messages")
                    .setSummaryText("irrigator"))
                    .setGroup(GROUP)
                    .setGroupSummary(true)
                    .setDefaults(Notification.DEFAULT_ALL) // requires VIBRATE permission
                    .setStyle(new NotificationCompat.BigTextStyle()
                            .bigText(text));

    NotificationManager mNotifyMgr =
            (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
    mNotifyMgr.notify(n, mBuilder.build());

n++;

更新2:

 Notification notif = new NotificationCompat.Builder(this)
            .setContentTitle("New mail from a ")
            .setContentText("a")
            .setSmallIcon(R.drawable.icona)
            .setGroup(GROUP_KEY_EMAILS)
            .build();
    NotificationManagerCompat notificationManager =
            NotificationManagerCompat.from(this);
    notificationManager.notify(n, notif);
    n++;

    Notification notif2 = new NotificationCompat.Builder(this)
            .setContentTitle("New mail from dsd" )
            .setContentText("td")
            .setSmallIcon(R.drawable.icona)
            .setGroup(GROUP_KEY_EMAILS)
            .build();
    notificationManager.notify(n, notif2);
    n++;

【问题讨论】:

“它不起作用”是什么意思?你看到什么结果?其次第一步是设置组,你还没有设置组。 我已经更新了代码,它只是像以前一样每次发送新消息时都会显示一个带有文本的新通知 您正在为所有通知分配相同的 ID。这将简单地替换前一个,而不是向组中添加一个新的。 我忘记粘贴 n++;我更新了代码 这段代码在哪里? n 在每个通知上是否真的不同,还是每次都重置为 0。 【参考方案1】:

经过一番挖掘,我意识到目前大多数设备(一些可穿戴设备除外)不支持堆叠,因此您必须手动执行一些操作。我最终做的是将通知计数存储在 SharedPrefs 中,然后在新通知出现时更新消息,现在用新标题覆盖以前的通知。 FCMService.java

SharedPreferences sharedPrefs = Utils.getSharedPrefs(getApplicationContext());
int notificationCount = sharedPrefs.getInt("CURRENT_OUTSTANDING_NOTIFICATION_COUNT", 0);

notificationCount++;

SharedPreferences.Editor editor = sharedPrefs.edit();
editor.putInt("CURRENT_OUTSTANDING_NOTIFICATION_COUNT", notificationCount);
editor.commit();

if(notificationCount>1)
    messageTitle = notificationCount+" New Messages";
    messageText = "Last Message Content:"+ messageText;


//send notification with the new title and text
...

然后在读取您的通知的活动中,只需重置计数器,瞧,您就完成了。 NotificationViewActivity.java

//somewhere where notifications are read
SharedPreferences.Editor editor = sharedPrefs.edit();
editor.putInt("CURRENT_OUTSTANDING_NOTIFICATION_COUNT", 0);
editor.commit();

【讨论】:

以上是关于在Android中,想要TranslateAnimation与for循环一起用,但运行结果只有最后一次循环移动,不明求教的主要内容,如果未能解决你的问题,请参考以下文章

Android 应用 A 想要跟踪 Android 应用 B 安装的 Google Play 推荐数据

当您在 android listview 中滑动任何列表项时想要调用

Flutter 错误:VM 快照无效,无法从设置中推断。 - 当想要在 android 项目中包含 Flutter 模块时

想要在 webview android 中完成 url 加载后将 webview 重定向到其他意图

在Android中,想要TranslateAnimation与for循环一起用,但运行结果只有最后一次循环移动,不明求教

想要在不刷新 Activity 的情况下更新 Android 中的 Listview