小编fas*_*que的帖子

Android Studio - 调试密钥库

Android Studio是否签署调试版本?如果是这样,它用于执行此操作的密钥库在哪里?

android certificate android-studio

104
推荐指数
5
解决办法
10万
查看次数

Android如何将iOS中的异步任务组合在一起

我在iOS应用程序中有一个功能,用于dispatch_group对多个休息请求进行分组:

static func fetchCommentsAndTheirReplies(articleId: String, failure: ((NSError)->Void)?, success: (comments: [[String: AnyObject]], replies: [[[String: AnyObject]]], userIds: Set<String>)->Void) {
    var retComments = [[String: AnyObject]]()
    var retReplies = [[[String: AnyObject]]]()
    var retUserIds = Set<String>()

    let queue = dispatch_get_global_queue(QOS_CLASS_USER_INITIATED, 0)
    Alamofire.request(.GET, API.baseUrl + API.article.listCreateComment, parameters: [API.article.articleId: articleId]).responseJSON {
        response in

        dispatch_async(queue) {

            guard let comments = response.result.value as? [[String: AnyObject]] else {
                failure?(Helper.error())
                return
            }
            print(comments)
            retComments = comments

            let group = dispatch_group_create()

            for (commentIndex, comment) in comments.enumerate() {
                guard let id …
Run Code Online (Sandbox Code Playgroud)

java android ios android-asynctask swift

27
推荐指数
3
解决办法
3761
查看次数

如何在我的Android库(AAR)中包含proguard配置

根据AAR文件规范,Android库包含'proguard.txt'文件.我的理解是这个文件声明了如何正确地对库进行模糊处理和缩小.在我的情况下,我需要保留一些API类.

如何在库的build.gradle中声明库的proguard.txt文件?在创建使用我的库的应用程序(APK)时,是否会自动读取此文件?

我没有在Android的Gradle Plugin用户指南中找到此信息.

android proguard gradle aar

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

添加依赖项到Android Cordova插件

我正在构建一个Cordova Android插件.我想使用第三方View内的Intent由插件创建(特别是剪刀).通常(在非Cordova项目中)我会转到我的项目build.gradle文件并添加如下:

dependencies {
compile 'com.lyft:scissors:1.0.1' }
Run Code Online (Sandbox Code Playgroud)

但似乎build.gradle我的插件项目中的文件并不意味着被触及?向插件项目添加依赖项的正确方法是什么,通过Cordova支持构建并通过Android Studio构建?同样的问题,但对于本地项目(不在GitHub上托管).

android gradle cordova android-gradle-plugin cordova-plugins

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

动态更新TabLayout而不更改选定的选项卡

我想用Material Design Support库实现一个向导.

我正在使用ViewPager,Tablayout但我在动态添加新标签时遇到问题.

首先,我在onCreate方法中设置我的小部件:

viewPager = (ViewPager) findViewById(R.id.tab_viewpager);
tabLayout = (TabLayout) findViewById(R.id.tab_layout);

adapter = new ViewPagerAdapter(getSupportFragmentManager());
adapter.addFrag(new DummyFragment(), "1");
adapter.addFrag(new DummyFragment(), "2");
viewPager.setAdapter(adapter);
tabLayout.setupWithViewPager(viewPager);
Run Code Online (Sandbox Code Playgroud)

然后我想在单击列表中的元素时添加另一张卡片:

adapter.addFrag(new DummyFragment(), "3");
adapter.notifyDataSetChanged();
tabLayout.setTabsFromPagerAdapter(adapter);
Run Code Online (Sandbox Code Playgroud)

问题是:添加后,所选卡首先重置.

如何防止这种行为?

android android-layout android-viewpager android-tablayout

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

Android TV:RowsFragment项目在少数情况下点击不起作用

我正在研究一个Android TV应用程序,我面临一个与项目点击监听器相关的奇怪问题:一切正常,但有时点击不会传播,很可能没有设置监听器.

我有子类RowsFragment,我用6个元素的行显示我的图像:这意味着网格的每一行实际上都是适配器中的一行,即使视觉上照片的月份相同.请查看图片以便更好地理解.

在此输入图像描述

现在的问题是:当我启动应用程序并向下滚动时,上面图像中看不到的第一行(所以第四行,因为这里有3行被渲染),没有得到我的"点击",没有任何反应.对于第5行,第6行......也可能是这样但是然后(我没有识别出模式)行再次开始可点击(即第8,第9,......)前3行也总是可点击的.

如果我再次向上滚动并且那些不可点击的行再次出现在屏幕上,现在它们是可点击的.

onCreate片段中,我调用:
setOnItemViewClickedListener(new ItemViewClickedListener());
并且根据文档,这应该覆盖单项视图设置的侦听器.它还建议设置一个监听器,而不是两个:实际上我只是为片段设置了一个监听器.

Presenter单行项的类中,我尝试onCreateViewHolder在视图中添加一个单击侦听器,并且我发现问题发生时,将调用此侦听器.

因此,在某些情况下,整个片段侦听器似乎不会覆盖视图侦听器,或者根本不设置它.

这个问题让我担心的是,当我设置断点并停止滚动动画时,我无法在调试模式下重现它.

我正在使用最新的Leanback版本:

compile 'com.android.support:leanback-v17:25.3.1'
Run Code Online (Sandbox Code Playgroud)

这个问题在Nvidia Shield TV(Android 7.0)上是可重现的,在其他设备上并不确定.

更新:有趣的是,当一个项目在一行中无法点击时,我希望同一行中的所有项目都不可点击.相反,事实并非如此,有些是可点击的,有些则不是.

更新2:似乎ListRowPresenterItemBridgeAdapter方法onBind,在某些情况下,发现getOnItemViewClickedListener返回null,因此没有设置项目单击侦听器.这很奇怪,因为监听器是为主RowsFragment类设置的,它适用于大多数项目,也适用于那些不起作用的项目.

作为一种解决方法,我找到了这个解决方案:子类化ListRowPresenter并设置一个虚拟点击监听器.

private class GroupedListRowPresenter extends ListRowPresenter {
    GroupedListRowPresenter(int focusZoomFactor) {
        super(focusZoomFactor);
    }

    @Override
    protected void onBindRowViewHolder(RowPresenter.ViewHolder holder, Object item) {
        super.onBindRowViewHolder(holder, item);

        holder.setOnItemViewClickedListener(new BaseOnItemViewClickedListener() {
            @Override
            public void onItemClicked(Presenter.ViewHolder itemViewHolder, Object item, RowPresenter.ViewHolder
                    rowViewHolder, Object row) {
                Timber.d("item click …
Run Code Online (Sandbox Code Playgroud)

android android-support-library android-tv leanback

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

Android Gradle Plugin 3.0.0-alpha4 - 不从当地AAR中挑选.so库

我目前正在将我的Android项目迁移到最新版本的Android Gradle插件,以便与Android Studio 3.0一起使用.

一切似乎工作得很好,除了我在本地AAR文件中的.so本机库文件没有打包到最终的APK.lib里面没有文件夹.

我的项目已经定义了两个风味维度,我没有看到任何关于它的错误或警告,所以我认为这不是问题.

Android Gradle插件:

classpath 'com.android.tools.build:gradle:3.0.0-alpha4'
Run Code Online (Sandbox Code Playgroud)

Gradle版本是4.0.

使用New Module...Android Studio中的选项添加本地AAR ,它始终有效.

这是build.gradle生成的:

configurations.maybeCreate("default")
artifacts.add("default", file('FILENAME.aar'))
Run Code Online (Sandbox Code Playgroud)

在应用程序中,build.gradle我像往常一样声明它:

implementation project(':NAME_OF_THE_MODULE')
Run Code Online (Sandbox Code Playgroud)

我错过了一个突破性的变化吗?以下已知问题与我的问题有关吗? While using this plugin with Android Studio, dependencies on local AAR files are not yet supported.

更新:flatDir技巧仍然可以正常工作:

flatDir {
  dirs 'libs'
}
Run Code Online (Sandbox Code Playgroud)

然后将AA复制到该文件夹​​(即app/libs)中,并以这种方式将其声明为依赖项:

implementation(name: 'libvlc', ext: 'aar')
Run Code Online (Sandbox Code Playgroud)

android android-gradle-plugin android-studio-3.0

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

替换Fragment时的动态缩放动画

我想用动画替换片段,但每次都必须是动态的,即它将从我点击屏幕的点开始,但fragmentTransaction.setCustomAnimations方法使用anim文件夹中定义的预定义动画,如下所示:

fragmentTransaction.setCustomAnimations(R.anim.bounce, R.anim.bounce);
Run Code Online (Sandbox Code Playgroud)

我创建ScaleAnimation了满足我需要的对象:

ScaleAnimation animation = new ScaleAnimation(fromX,ToX,fromY,toY,pivitX,pivotY);
animation.setDuration(500);
Run Code Online (Sandbox Code Playgroud)

fragmentTransaction.setCustomAnimations方法不接受scaleAnimation它只接受int.那么如何在替换片段时获得动态动画.

android fragment android-animation android-transitions

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

libvlc Android:无法播放 HTTP 网络流

我目前在尝试使用适用于 Android 的 VLC 播放网络流时遇到问题。

我基本上遵循了这个指南,https://wiki.videolan.org/AndroidCompile/,克隆了 repo 并构建了:一切正常,我可以运行我的应用程序并播放视频(本地或来自网络)。

然后我libvlc AAR从头开始创建了一个新的 Android 项目:我可以播放本地视频,但是当我传入一个 URL 时,流没有打开。

相关代码:

// Create LibVLC
ArrayList<String> options = new ArrayList<String>();
options.add("--aout=opensles");
options.add("--audio-time-stretch"); // time stretching
options.add("-vvv"); // verbosity
libvlc = new LibVLC(options);
holder.setKeepScreenOn(true);

// Create media player
mMediaPlayer = new MediaPlayer(libvlc);
mMediaPlayer.setEventListener(mPlayerListener);

// Set up video output
final IVLCVout vout = mMediaPlayer.getVLCVout();
vout.setVideoView(mSurface);
vout.addCallback(this);
vout.attachViews();

Media m = new Media(libvlc, Uri.parse(media));
mMediaPlayer.setMedia(m);
mMediaPlayer.play();
Run Code Online (Sandbox Code Playgroud)

URL 中的mediaa在哪里String

我的配置(即模块)中是否缺少某些东西?

这是我得到的日志:

D/LibVLCAndroidSample: Playing …
Run Code Online (Sandbox Code Playgroud)

android libvlc vlc-android

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

Android TV:VerticalGridFragment 行项目对齐

我在 Android TV 项目中面临子类化问题VerticalGridFragment:一切正常,但如果一行中的项目少于最大列数,则项目将从中心开始水平对齐。

奇怪的是,只有当元素总数小于最大列数时才会发生这种情况。例如,假设这个数字是 6,如果我有 1 个项目,它将被放置在该行的中心。相反,如果我有 14 个项目,则第三行的 2 个项目将从左侧开始放置。

问题

有没有办法将一行中的项目与left或对齐start?难道我做错了什么?

我已经尝试过这种方式,但没有任何反应,项目从中心开始对齐。

<style name="AppTheme.Widget.Leanback.GridItems.VerticalGridView"
       parent="Widget.Leanback.GridItems.VerticalGridView">
    <item name="android:gravity">left|start</item>
</style>
Run Code Online (Sandbox Code Playgroud)

然后在我的主题中像这样设置它,该主题扩展自Theme.Leanback

<item name="itemsVerticalGridStyle">@style/AppTheme.Widget.Leanback.GridItems.VerticalGridView</item>
Run Code Online (Sandbox Code Playgroud)

android android-layout android-tv leanback

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

Android TV:VerticalGridFragment 阴影尺寸和颜色

我正在开发一个 Android TV 应用程序,但我对 渲染的标准阴影不太满意VerticalGridFragment,我想让它更小、更暗一些。

我搜索了代码,但没有找到任何完整的工作解决方案。在我的VerticalGridPresenter子类中,我可以重写的唯一方法是createShadowOverlayOptions但我无法获得我想要的结果。

我想出的唯一解决方法是定义以下维度,以便覆盖支持库中声明的维度:

<dimen name="lb_material_shadow_details_z">3dp</dimen>
<dimen name="lb_material_shadow_focused_z">4dp</dimen>
<dimen name="lb_material_shadow_normal_z">3dp</dimen>
Run Code Online (Sandbox Code Playgroud)

但这更多的是一种黑客行为,而不是一个正确的解决方案。

这是标准阴影:

标准阴影

这是我通过当前的 hack 得到的结果:

在此输入图像描述

正如你所看到的,它更小,但我无法改变颜色。

是否有正确的方法来设置VerticalGridFragmentRowsFragment类的阴影颜色和尺寸?

我正在使用最新的 Leanback 版本:

compile 'com.android.support:leanback-v17:25.2.0'
Run Code Online (Sandbox Code Playgroud)

由于自定义 Android TV 播放器,我的minSdkVersion年龄是 17 岁,但从 21 岁开始就可以正常工作。

android android-layout android-support-library android-tv leanback

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

如何在Android应用程序的发布版本中删除Log.d()调用?

我注意到我的发布版本,我在eclipse中通过以下方式制作:

Android工具 - >导出已签名的应用程序包...

我的proguard-project.txt包含:

-assumenosideeffects class android.util.Log {
    public static boolean isLoggable(java.lang.String, int);
    public static int v(...);
    public static int i(...);
    public static int w(...);
    public static int d(...);
    public static int e(...);
}
Run Code Online (Sandbox Code Playgroud)

然而,如果我在设备上运行应用程序并使用CatLog查看日志,我会看到所有Log.d(),Log.v()消息都不应该存在.还有别的东西我应该设置吗?我花了很多时间在谷歌搜索,但没有关于该主题的明确指示.我找到的大多数事情都是有类似问题但没有解决方案的人.

android android-proguard

3
推荐指数
2
解决办法
7050
查看次数

Android Google Fit示例无效

我在使用Google提供的Google Fit运行示例应用时遇到问题.

我想通了,到目前为止,那resultCode我得到的onActivityResult0我选择了后Account.

我现在使用的示例应用程序BasicRecordingApi可以在这里找到.但我也尝试过其他人.

我为该应用创建了一个API密钥,并且我已经启用了Google Fit API.

什么都没有帮助.

有任何想法吗?

android google-fit-sdk google-fit

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