小编Dar*_*usL的帖子

Gitlab CI gradle依赖缓存

我在Gitlab CI上构建android并且每次下载依赖项都很烦人.我试过缓存:

$HOME/.gradle/
$HOME/.gradle/caches/
$GRADLE_HOME/caches/
$HOME/.m2/
.gradle/
build/
app/build/
Run Code Online (Sandbox Code Playgroud)

我的.gitlab-ci.yml的第26594次迭代就在这里.我已经在我的构建环境中安装了gradle,因为没有缓存gradlew每次下载它,这需要更多的时间.我用于建筑的图像就在这里.我的CI服务器启动脚本可以在这里找到.我假设,如果缓存有效,我将看不到每个构建下载的依赖项列表.

构建日志:

gitlab-ci-multi-runner 0.7.2(998cf5d)使用Docker执行器和图像android ...拉码头图像gitlab/gitlab-runner:build ...拉码头图像android:最新...警告:不能拉最新版本的图像android:最新:错误:图像库/ android:最新未找到警告:将使用本地找到的图像.

Running on runner-76acd9d3-project-74192-concurrent-0 via ff9200d4be41...
Fetching changes...
Removing .gradle/
Removing artifacts.upload.log
Removing rxfirebaseandroid/build/
HEAD is now at 7f151df djgfj
Checking out 7f151df2 as ci-gitlab...
HEAD is now at 7f151df... djgfj
Restoring cache...

$ gradle testDebug
Download https://jcenter.bintray.com/com/android/tools/build/gradle/1.3.0/gradle-1.3.0.pom
Download https://jcenter.bintray.com/com/android/tools/build/gradle-core/1.3.0/gradle-core-1.3.0.pom
Download https://jcenter.bintray.com/com/android/tools/build/builder/1.3.0/builder-1.3.0.pom
Download https://jcenter.bintray.com/com/android/tools/lint/lint/24.3.0/lint-24.3.0.pom
Download https://jcenter.bintray.com/net/sf/proguard/proguard-gradle/5.2.1/proguard-gradle-5.2.1.pom
Download https://jcenter.bintray.com/net/sf/proguard/proguard-parent/5.2.1/proguard-parent-5.2.1.pom
Download https://jcenter.bintray.com/com/android/tools/build/builder-model/1.3.0/builder-model-1.3.0.pom
Download https://jcenter.bintray.com/com/android/tools/build/builder-test-api/1.3.0/builder-test-api-1.3.0.pom
Download https://jcenter.bintray.com/com/android/tools/sdklib/24.3.0/sdklib-24.3.0.pom
Download https://jcenter.bintray.com/com/android/tools/sdk-common/24.3.0/sdk-common-24.3.0.pom
Download https://jcenter.bintray.com/com/android/tools/common/24.3.0/common-24.3.0.pom
Download …
Run Code Online (Sandbox Code Playgroud)

android gradle gitlab-ci gitlab-ci-runner

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

AppCompat上的TextView色调

我制作了一些带有textview的复选框和单选按钮,但它们在Lollipop之前没有着色.

我的textviews扩展AppCompatCheckedTextView,样式为:

<style name="CheckBoxStyle" parent="android:Widget.TextView">
    <item name="android:textAppearance">?android:attr/textAppearance</item>
    <item name="android:drawableRight">?android:attr/listChoiceIndicatorMultiple</item>
    <item name="android:drawableEnd">?android:attr/listChoiceIndicatorMultiple</item>
    <item name="android:clickable">true</item>
    <item name="android:background">?attr/selectableItemBackground</item>
    <item name="android:gravity">center_vertical</item>
    <item name="android:paddingTop">8dp</item>
    <item name="android:paddingBottom">8dp</item>
</style>
Run Code Online (Sandbox Code Playgroud)

我的主题中定义了我的口音:

<style name="AppTheme.Platform.NoActionBar" parent="Theme.AppCompat.NoActionBar">
    <item name="android:selectableItemBackground">@drawable/press_overlay_dark</item>
    <item name="android:borderlessButtonStyle">@style/BorderlessButton</item>

    <item name="android:colorAccent">@color/color_accent</item>
    <item name="colorAccent">@color/color_accent</item>
</style>
Run Code Online (Sandbox Code Playgroud)

我正在构建v21,至少使用v16并使用AppCompat v7-22.1.1.我的活动扩展了AppCompatActivity

Genymotion 4.1.1 Nexus 5 5.1.1

android android-appcompat

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

RecyclerView无法显示

我有一个不显示任何项目的RecyclerView.最初它是空的,但后来我添加了项目并调用notifyDatasetChanged().getItemCount()被调用并返回25,onBindViewHolder被调用3次并正确设置视图.

public AlbumListAdapter(FacebookActivity activity, long pageId, OnItemClickListener listener){
    this.listener = listener;
    this.inflater = LayoutInflater.from(activity);
    this.service = new PagedGraphService<Album>(String.format("https://graph.facebook.com/%d/albums", pageId),
            new PagedGraphService.ServiceUpdateListener() {
        @Override
        public void dataUpdated() {
            notifyDataSetChanged();
        }

        @Override
        public void endReached() {

        }
    },
    new TypeToken<PagedGraphService.GraphResponse<Album>>(){}.getType());
}

@Override
public AlbumHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
    return new AlbumHolder(inflater.inflate(R.layout.photo_album_list_card, viewGroup, false));
}

@Override
public void onBindViewHolder(AlbumHolder viewHolder, int i) {
    viewHolder.setAlbum(service.get(i));
}

@Override
public int getItemCount() {
    return service.getLoadedCount();
}
Run Code Online (Sandbox Code Playgroud)

它的要点.该服务包含一个专辑列表,并通过调用dataUpdated()和endReached()通知适配器更改.

更多代码:

@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup …
Run Code Online (Sandbox Code Playgroud)

android android-recyclerview

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

查找视图是否布局

是否存在向后兼容的方式来确定视图是否布局?ViewisLaidOut,但它是API 19.我目前使用if(view.getWidth() + view.getHeight() > 0),但它看起来不像一个稳定和干净的方式来做到这一点.我知道OnGlobalLayoutListener,但我想知道现在是否有一个观点.

android

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

Android MediaPlayer getCurrentPosition()会导致音频卡顿

我正在使用SeekBar来显示音频文件的进度以及寻找某个时间.为了更新,我使用Runnable,每隔一秒左右在MediaPlayer上调用getCurrentPosition().每次发生这种情况都会导致音频中出现少量延迟.因为我经常打电话,所以在玩东西时我会发现非常明显的口吃.如果它是相关的,我正在使用setAudioStreamType(AudioManager.STREAM_MUSIC),文件格式是mp4,而AAC音频(没有视频),我正在使用Android 2.3.4.有没有办法通过getCurrentPosition()获得良好的音频,还是我必须实现自己的进度计算?

Runnable:

private Runnable mUpdateTask = new Runnable(){

    @Override
    public void run() {
        mSeekBar.setProgress((int) (mPlayer.getCurrentPosition() * 100 / mArrayAdapter.getRecording(mPlayingId).mDuration));
        mHandler.postDelayed(mUpdateTask, 999);
    }
};
Run Code Online (Sandbox Code Playgroud)

audio android media-player

8
推荐指数
2
解决办法
3262
查看次数

点击RecyclerView空白区域

我有一个布局,其中RecyclerView位于具有几个按钮的另一个布局之上.第一个回收商项目是一个带有较大上边距的标题,以在其上方创建一个空白区域.现在我希望点击通过该开放空间工作,刷卡也应该滚动回收器.视图位于一个简单的框架中.

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <package.FeedBackgroundView
        android:id="@+id/feed_background"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

    <android.support.v7.widget.RecyclerView
        android:id="@+id/recycler"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:scrollbars="vertical"/>

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

回收者仅使用顶部填充或边距消耗所有点击.我需要点击才能通过,但是滑动应该留在回收器中进行滚动.

编辑:

我的点击工作,解决方案是:

recycler.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            background.dispatchTouchEvent(event);
            return false;
        }
    });
Run Code Online (Sandbox Code Playgroud)

现在我有一个问题,因为我翻译了背景(视差),点击没有到达正确的位置.我是否也要翻译这些活动?

android android-recyclerview

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

Android填充与边距性能

我正在做一些属性动画,想知道哪个更快-更新边距或填充。两者都通过扩展进行更新Property<T, V>

public static final Property<View, Integer> LINEAR_TOP_MARGIN_PROPERTY = new Property<View, Integer>(Integer.class, "") {
    @Override
    public Integer get(View view) {
        LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) view.getLayoutParams();
        return params.topMargin;
    }

    @Override
    public void set(View view, Integer value) {
        LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) view.getLayoutParams();
        params.topMargin = value;
        view.requestLayout();
    }
};

public static final Property<View, Integer> PADDING_BOTTOM_PROPERTY = new Property<View, Integer>(Integer.class, "") {
    @Override
    public Integer get(View view) {
        return view.getPaddingBottom();
    }

    @Override
    public void set(View object, Integer value) {
        object.setPadding(
                object.getPaddingLeft(), …
Run Code Online (Sandbox Code Playgroud)

android

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

Leakcanary与Google的Firebase崩溃

在处理泄漏时,我得到了一个java.lang.IllegalStateException: FirebaseApp with name [DEFAULT] doesn't exist.内部Application.onCreate.根据我的理解,这是因为LeakCanary创建了我的应用程序类而没有所有Google Play服务,Firebase无法成功初始化.任何想法如何解决这一问题?

编辑:我正在使用leakcanary-android:1.4-beta2,这是在转储堆后发生的.

android firebase leakcanary

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

concatMap,flatMap,switchMap为单个项目

我知道之间的差异concatMap,flatMap以及switchMap,但如果我只流发出一个单一的项目和完成?在这种情况下,功能上(双关语)这两个运算符是相同的,但性能如何呢?如果输入仅发出单个项目,哪个运营商需要更多资源?大多数情况下,如果相关,输出也是单个项目.

rx-java

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