小编nat*_*rio的帖子

ParseFile.cancel()无法正常工作 - 文件不断下载

我正在使用parse.comAndroid SDK管理我的应用中的一些图片.是cancel()停止与parse.com服务器进行交易的唯一方法吗?

最小的例子:

final ParseFile file = ... ;
file.getDataInBackground(new GetDataCallback() {

    //called when loading is done
    @Override
    public void done(byte[] bytes, ParseException e) {
        Log.e(TAG, String.valueOf(bytes == null));
    }

}, new ProgressCallback() {

    //called to notify progress   
    @Override
    public void done(Integer integer) {
        Log.e(TAG, String.valueOf(integer));
        if (integer > 50) {
            file.cancel();
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

我希望在达到50%之后加载停止,但事实并非如此.我在这种情况下的登录将是:

1
2
3
....
49
50
51
....
98
99
100
true
Run Code Online (Sandbox Code Playgroud)

与您调用的cancel()次数和次数不同的唯一区别是,如果您取消了byte[]结果,则为null.但这确实是次要的,这里的重点是file …

android parse-platform

12
推荐指数
2
解决办法
619
查看次数

CoordinatorLayout有两个浮动动作按钮

我在CoordinateLayout视图中有两个Fab.当我展示Snackbar时,我希望两个Fab一起上升,但结果是只有一个Fab(较低的一个)响应并上升(见图).我在这里想念什么?

berfore 在此输入图像描述在此输入图像描述

叫小吃店

 mSnackbar = Snackbar.make(getActivity().findViewById(R.id.coords_wrapper), "Loading", 1000000000);   
Run Code Online (Sandbox Code Playgroud)

XML

<android.support.design.widget.CoordinatorLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/coords_wrapper">

    <!-- main contents here, left out -->
    <Relativelayout ...... />

    <android.support.design.widget.FloatingActionButton
        android:id="@+id/action_button_location"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src ="@drawable/ic_add_black"
        android:layout_gravity="right|bottom"
        android:layout_marginBottom="82dp"
        android:layout_marginRight="16dp"
        app:borderWidth="0dp"
        app:elevation="6dp"
        />

    <android.support.design.widget.FloatingActionButton
        android:id="@+id/action_button_filter"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src ="@drawable/ic_add_black"
        android:layout_gravity="right|bottom"
        android:layout_margin="16dp"
        app:borderWidth="0dp"
        app:elevation="6dp"
        />
</android.support.design.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)

android android-support-library android-design-library android-snackbar android-coordinatorlayout

12
推荐指数
1
解决办法
7343
查看次数

如何撤消ParseUser.setPassword()调用?

我让用户更改他的凭据.他键入了新的用户名,电子邮件和密码,我想:

ParseUser user = ParseUser.getCurrentUser();
user.setUsername("MY NEW NAME");
user.setEmail(email);
user.setPassword("MY NEW PW");
user.saveInBackground(...);
Run Code Online (Sandbox Code Playgroud)

所以呢?所以这个save()调用可能会因为很多原因而失败(例如:其他人已经使用了用户名).我可以说,在这种情况下,上述字段没有得到更新,这是公平的:我显示错误,用户知道一切都出错了.

如果您注意到事情变得复杂,即使在之后ParseException,user上面会保留其脏字段,这些字段无法保存到服务器.即

//saveInBackground fails
//...
user.getUsername().equals("MY NEW NAME") // true!
Run Code Online (Sandbox Code Playgroud)

问题

现在,我可以通过调用将这些字段恢复为正确的值user.fetch(),但这不适用于该password字段.

这是特别不需要的,因为任何未来的呼叫save()或此类呼叫(可能不会因为可能是完全不同的呼叫而失败)也会更新密码!即

//later
ParseUser user = ParseUser.getCurrentUser();
user.put("stuff");
user.save();
Run Code Online (Sandbox Code Playgroud)

这不仅会放"东西",还会将密码更改为"我的新PW" ..用户不知道.

有没有办法重置本地password字段,除此之外fetch()不起作用?我知道我可以通过三种不同的查询来保存用户名,电子邮件和密码,但这不是我案例的可能解决方案.

android parse-platform

11
推荐指数
1
解决办法
248
查看次数

更改工具栏和CollapsingToolbarLayout以编程方式滚动标记

我有一个包含大量片段的Activity android应用程序.当我显示列表屏幕时,我想使用Toolbarwith app:layout_scrollFlags="scroll|enterAlways"属性.在细节片段中,我想使用CollapsingToolbarLayout带有图像的片段.由于它是一个Activity应用程序,我只有一个Toolbar.是否可以通过编程方式修改我的布局以适应这两种情况?

android android-layout android-fragments material-design android-support-design

9
推荐指数
2
解决办法
5484
查看次数

使用ggplot聚合数据

我们以mpg数据集为例,特别是classcyl列.我可以看到每个单元有多少条目class,并根据cyl值区分填充颜色:

library(ggplot2)
p <- ggplot(mpg)
p <- p + geom_bar(mapping=aes(x=class, fill=factor(cyl)), position=position_dodge())
print(p)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

但是,我想看到的是每个不同值的平均条目数(每个class)cyl.基本上,如果你看一下上面的图,我想要每个类一个单独的条,其高度应该是该类的彩色条的平均高度.

我可以通过预处理数据框来获得这个结果,例如:

df <- aggregate(formula=cyl~class, data=mpg, FUN=function(x) { length(x) / length(unique(x)) })
p <- ggplot(df)
p <- p + geom_bar(mapping=aes(x=class, y=cyl), stat='identity')
p <- p + ylab('average count')
Run Code Online (Sandbox Code Playgroud)

这给了我想要的输出:

在此输入图像描述

但是,考虑到ggplot2有多强大,我想知道这是否可以通过ggplot函数实现.我想这涉及使用特定的stat(可能与group=cyl?),但我无法做到.

plot r ggplot2

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

ListView嵌套在API <21上滚动

标题很清楚.我有这个布局:

_________________
|_______________| <- Toolbar    
|___|___|___|___| <- Tablayout
|               |
|               |
|   ViewPager   |
|               |
|_______________|
Run Code Online (Sandbox Code Playgroud)

工具栏和tablayout都在一个内部AppBarLayout,所以我可以使用滚动标记来隐藏工具栏向上滚动.问题是这只适用于嵌套滚动支持的视图.大多数标签 - 我的意思是,大多数页面 - 是support.v4.NestedScrollViews,所以这是可以的; 其他人(并且需要)ListView.

从Lollipop开始,我可以简单地添加android:nestedScrollingEnabled="true"到列表视图,并且工具栏在滚动时正确隐藏.

但是,在API <21上,没有这样的属性,工具栏也不会隐藏.更重要的是,列表中的最后一项是隐藏的,因为有一些测量错误CoordinatorLayout:listview就好像它有工具栏当前占用的空间一样.

解决方案:

  • 切换到RecyclerView,它支持嵌套滚动:我不能,因为我需要使用只适用于适配器视图的外部库适配器,并且我无法替换(即,ParseQueryAdapter);

  • 扩展ListView和实现嵌套滚动:似乎很复杂;

  • 扩展ListView并实现一些解决方法,例如测量东西以避免最后一项问题或(和)自定义行为以使工具栏隐藏:似乎也很复杂;

  • 使用一些布局技巧:找不到.

有帮助吗?

例如,我(拼命)尝试:

<android.support.v4.widget.NestedScrollView
    android:nestedScrollingEnabled="true"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <ListView
        android:id="@+id/list"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    </ListView>

</android.support.v4.widget.NestedScrollView>
Run Code Online (Sandbox Code Playgroud)

但是这种方式ListView并没有被列为match_parent.我得到一个小高度的小视图,页面的其余部分是空的.

android android-listview android-support-library android-design-library android-appbarlayout

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

使用ACTION_GET_CONTENT或OPEN_DOCUMENT从Google相册提供者中选择

我不知道为什么会发生这种情况,但是我无法从Google相册提供者中选择图片。在API 27上进行测试。

使用ACTION_GET_CONTENT

如果我使用:

val intent = Intent(Intent.ACTION_GET_CONTENT)
intent.addCategory(Intent.CATEGORY_OPENABLE)
intent.type = "image/*"
Run Code Online (Sandbox Code Playgroud)
  • 我可以在提供商中看到Google相册
  • 我可以浏览到一些图片并选择它
  • 然后,我被定向到提供程序列表(而不是我的应用程序),就像提供程序在尝试捕获中崩溃一样

当我打开“照片”提供程序并浏览文件夹时,会看到很多这样的文件:

2019-03-02 12:04:15.164 17641-13395/? W/NetworkManagementSocketTagger: untagSocket(120) failed with errno -22
2019-03-02 12:04:22.528 13217-13217/? E/ResourceType: Style contains key with bad entry: 0x01010586
2019-03-02 12:04:22.535 13217-13217/? W/ResourceType: For resource 0x7f020366, entry index(870) is beyond type entryCount(468)
Run Code Online (Sandbox Code Playgroud)

当我单击图片时,我看到以下内容:

2019-03-02 12:04:34.150 13217-13217/? W/ResourceType: For resource 0x7f02036c, entry index(876) is beyond type entryCount(468)
2019-03-02 12:04:34.151 13217-13217/? W/ResourceType: For resource 0x7f02036c, entry index(876) is beyond type entryCount(468)
2019-03-02 12:04:34.229 2907-16891/? W/MediaExtractor: …
Run Code Online (Sandbox Code Playgroud)

android android-intent kotlin google-photos document-provider

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

多次重复AnimatorSet动画

我已经尝试了几个小时,我觉得是时候放弃了.如何循环xml中定义的AnimatorSet?

<set xmlns:android="http://schemas.android.com/apk/res/android">

    <objectAnimator />

    <objectAnimator />

    <objectAnimator />

    <objectAnimator />

</set>
Run Code Online (Sandbox Code Playgroud)

我尝试了几十种组合startOffset,repeatCount而且duration单一组合objectAnimator,但这不是正确的方法.

我读到了这个有前途的解决方法:

a.addListener(new AnimatorListenerAdapter() {

    @Override
    public void onAnimationEnd(Animator animation) {
        animation.start();
        Log.i();
    }
});
Run Code Online (Sandbox Code Playgroud)

但它只是不起作用:onAnimationEnd一次调用,重复动画,然后onAnimationEnd不再调用.

这里的其他类似问题涉及错误的答案(参考android.view.animation框架)或建议为单个定义自定义插值器objectAnimator,但这不是我正在寻找的.谢谢.

android android-animation

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

通过Parse Cloud Code功能下载图像

我正在开发一个处理图片和使用parse.com服务作为后端的应用程序.在某些时候我不得不选择:

  • 存储相同图片的不同版本,例如100x100用于缩略图,400x400用于更大的视图,1000x1000用于全屏视图;
  • 仅存储1000x1000版本,并在需要时将其缩小,可能是服务器端.

我目前正在研究的解决方案是两者的混合:我持有100x100缩略图,1000x1000全屏视图,并希望将其缩小以满足任何其他需求.我开始研究云代码功能来实现这一目标.我希望将函数传递给当前视图的宽度,以使图像适应客户的需要.

var Image = require("parse-image");

Parse.Cloud.define("getPicture", function(request, response) {

  var url = request.params.pictureUrl;
  var objWidth = request.params.width / 2;

  Parse.Cloud.httpRequest({
    url: url

  }).then(function(resp) {
    var i = new Image();
    return i.setData(resp.buffer);

  }).then(function(i) {
    var scale = objWidth / i.width();
    if (scale >= 1) {
        response.success(i.data());
    }
    return i.scale({
      ratio: scale
    });

  }).then(function(i) {
    return i.data();

  }).then(function(data) {
    response.success(data);
  });

});
Run Code Online (Sandbox Code Playgroud)

我有两个问题:

  • 这种方法是正确的,还是应该更好地存储一个中等版本的图像(如400x400 …

javascript java android parse-platform

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

BackgroundSubtractorMOG2中"history"的含义是什么?

我正在使用OpenCV for java(但这与我猜不相关).我正在使用这里BackgroundSubtractorMOG2引用的(很差)类.我已经阅读并理解了Zivkovic关于算法的论文,您可以在这里找到.

BackgroundSubtractorMOG2在其构造函数中引入一个名为的参数history.它是什么,它如何影响结果?例如,你能指点我在纸上的参考吗?

类源代码,第106行,据说alpha = 1/history.这意味着历史就是论文中的T参数,即(或多或少)构成训练集的帧数.

然而,它似乎并非如此.将构造函数中的值从10更改为500或更高,对最终结果没有影响.这就是我所说的:

Mat result = new Mat();
int history = 10; //or 50, or 500, or whatever
BackgroundSubtractorMOG2 sub = new BackgroundSubtractorMOG2(history, 16, false);
for (....) {
    sub.apply(frame[i], result);
}
imshow(result); //let's see last frame
Run Code Online (Sandbox Code Playgroud)

我设定的历史无关紧要,无论是5,10,500,1000 - 结果总是一样的.然而,如果我改变了alpha价值(学习率)apply(),我可以看到它真正的影响力:

Mat result = new Mat();
float alpha = 0.1; //learning rate, 1/T (1/history?)
BackgroundSubtractorMOG2 sub = new BackgroundSubtractorMOG2(whatever, …
Run Code Online (Sandbox Code Playgroud)

c++ java opencv image-segmentation

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