fix crash on Android 4
This commit is contained in:
parent
03f866f8c2
commit
4743c85d82
|
@ -66,10 +66,9 @@ dependencies {
|
|||
compile 'com.evernote:android-job:1.2.0'
|
||||
implementation 'com.android.support.constraint:constraint-layout:1.0.2'
|
||||
//room
|
||||
implementation "android.arch.persistence.room:runtime:1.0.0"
|
||||
implementation 'android.arch.persistence.room:runtime:1.0.0'
|
||||
kapt 'android.arch.persistence.room:compiler:1.0.0'
|
||||
|
||||
testCompile "junit:junit:4.12"
|
||||
testCompile 'junit:junit:4.12'
|
||||
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
|
||||
exclude group: 'com.android.support', module: 'support-annotations'
|
||||
})
|
||||
|
|
|
@ -17,7 +17,7 @@ package com.keylesspalace.tusky;
|
|||
|
||||
import android.app.Application;
|
||||
import android.arch.persistence.room.Room;
|
||||
import android.net.Uri;
|
||||
import android.support.v7.app.AppCompatDelegate;
|
||||
|
||||
import com.evernote.android.job.JobManager;
|
||||
import com.jakewharton.picasso.OkHttp3Downloader;
|
||||
|
@ -39,12 +39,7 @@ public class TuskyApplication extends Application {
|
|||
Picasso.Builder builder = new Picasso.Builder(this);
|
||||
builder.downloader(new OkHttp3Downloader(OkHttpUtils.getCompatibleClient()));
|
||||
if (BuildConfig.DEBUG) {
|
||||
builder.listener(new Picasso.Listener() {
|
||||
@Override
|
||||
public void onImageLoadFailed(Picasso picasso, Uri uri, Exception exception) {
|
||||
exception.printStackTrace();
|
||||
}
|
||||
});
|
||||
builder.listener((picasso, uri, exception) -> exception.printStackTrace());
|
||||
}
|
||||
|
||||
try {
|
||||
|
@ -60,5 +55,8 @@ public class TuskyApplication extends Application {
|
|||
.build();
|
||||
|
||||
JobManager.create(this).addJobCreator(new NotificationPullJobCreator(this));
|
||||
|
||||
//necessary for Android < APi 21
|
||||
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
|
||||
}
|
||||
}
|
|
@ -246,6 +246,9 @@ public class NotificationsAdapter extends RecyclerView.Adapter {
|
|||
usernameView = itemView.findViewById(R.id.notification_username);
|
||||
displayNameView = itemView.findViewById(R.id.notification_display_name);
|
||||
avatar = itemView.findViewById(R.id.notification_avatar);
|
||||
//workaround because Android < API 21 does not support setting drawableLeft from xml when it is a vector image
|
||||
Drawable followIcon = ContextCompat.getDrawable(message.getContext(), R.drawable.ic_person_add_24dp);
|
||||
message.setCompoundDrawablesWithIntrinsicBounds(followIcon, null, null, null);
|
||||
}
|
||||
|
||||
void setMessage(String displayName, String username, String avatarUrl) {
|
||||
|
@ -270,12 +273,7 @@ public class NotificationsAdapter extends RecyclerView.Adapter {
|
|||
}
|
||||
|
||||
void setupButtons(final NotificationActionListener listener, final String accountId) {
|
||||
avatar.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
listener.onViewAccount(accountId);
|
||||
}
|
||||
});
|
||||
avatar.setOnClickListener(v -> listener.onViewAccount(accountId));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
package com.keylesspalace.tusky.adapter;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.os.Build;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.view.View;
|
||||
|
@ -24,6 +25,7 @@ import android.widget.TextView;
|
|||
|
||||
import com.keylesspalace.tusky.R;
|
||||
import com.keylesspalace.tusky.interfaces.StatusActionListener;
|
||||
import com.keylesspalace.tusky.util.ThemeUtils;
|
||||
import com.keylesspalace.tusky.view.RoundedTransformation;
|
||||
import com.keylesspalace.tusky.viewdata.StatusViewData;
|
||||
import com.squareup.picasso.Picasso;
|
||||
|
@ -37,6 +39,10 @@ public class StatusViewHolder extends StatusBaseViewHolder {
|
|||
super(itemView);
|
||||
avatarReblog = itemView.findViewById(R.id.status_avatar_reblog);
|
||||
rebloggedBar = itemView.findViewById(R.id.status_reblogged);
|
||||
//workaround because Android < API 21 does not support setting drawableLeft from xml when it is a vector image
|
||||
Drawable rebloggedIcon = ThemeUtils.getDrawable(rebloggedBar.getContext(),
|
||||
R.attr.status_reblog_small_drawable, R.drawable.ic_reblog_dark_18dp);
|
||||
rebloggedBar.setCompoundDrawablesWithIntrinsicBounds(rebloggedIcon, null, null, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -84,12 +90,7 @@ public class StatusViewHolder extends StatusBaseViewHolder {
|
|||
// I think it's not efficient to create new object every time we bind a holder.
|
||||
// More efficient approach would be creating View.OnClickListener during holder creation
|
||||
// and storing StatusActionListener in a variable after binding.
|
||||
rebloggedBar.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
listener.onOpenReblog(getAdapterPosition());
|
||||
}
|
||||
});
|
||||
rebloggedBar.setOnClickListener(v -> listener.onOpenReblog(getAdapterPosition()));
|
||||
}
|
||||
|
||||
private void setRebloggedByDisplayName(String name) {
|
||||
|
|
|
@ -17,9 +17,7 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="4dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:drawableLeft="@drawable/ic_person_add_24dp"
|
||||
android:drawablePadding="10dp"
|
||||
android:drawableStart="@drawable/ic_person_add_24dp"
|
||||
android:ellipsize="end"
|
||||
android:gravity="center_vertical"
|
||||
android:maxLines="1"
|
||||
|
|
|
@ -13,9 +13,7 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/status_reblogged_bar_top_padding"
|
||||
android:drawableLeft="?attr/status_reblog_small_drawable"
|
||||
android:drawablePadding="6dp"
|
||||
android:drawableStart="?attr/status_reblog_small_drawable"
|
||||
android:gravity="center_vertical"
|
||||
android:paddingLeft="38dp"
|
||||
android:paddingStart="38dp"
|
||||
|
|
Loading…
Reference in New Issue