我正在尝试从asset文件夹加载图像,然后将其设置为ImageView.我知道如果我使用这个更好R.id.*,但前提是我不知道图像的id.基本上,我试图通过其文件名动态加载图像.
例如,我随机检索元素的database代表,让我们说"牛",现在该怎么办我的应用程序会做的是显示的图像"牛"通过ImageView.对于所有元素也是如此database.(假设是,每个元素都有一个等价的图像)
提前致谢.
编辑
忘了这个问题,如何从asset文件夹中加载图像?
这个属性到底是做什么的?
我已经阅读了文档,我理解它应该是什么.但是,当我在主题中使用它时(我创建了一个带有android:Theme.Dialog父级的样式),更改此属性的值似乎没有任何效果.
我正在使用Glide从视频加载缩略图,但它似乎不适用于我的应用程序.由于某种原因,ImageView只是空的.
Glide.with(context)
.load(url)
.asBitmap()
.thumbnail(0.1f)
.diskCacheStrategy(DiskCacheStrategy.ALL)
.into(target);
Run Code Online (Sandbox Code Playgroud)
我添加了一个监听器,所以我可以找出错误但抛出的异常为空.
我尝试使用相同的URL使用ThumbnailUtils,因为我认为它可能有问题,但缩略图加载正常.
有没有经历过相同的人?我正在使用Nexus 7(6.0.1)
我正在使用Glide下载和显示图像,但是,当我尝试调整图像大小时,它不会这样做.我得到随机大小(或者可能是图像的实际大小).
这是我用于通过Glide加载的代码
Glide.with(context)
.load(file.getUrl())
.asBitmap()
.diskCacheStrategy(DiskCacheStrategy.ALL)
.centerCrop()
.transform(new CropCircleTransform(context))
.override(dimen, dimen)
.into(new SimpleTarget<Bitmap>() {
@Override
public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) {
bitmap = resource;
Log.info(resource.getWidth() + "x" + resource.getHeight());
}
});
Run Code Online (Sandbox Code Playgroud)
该CropCircleTransform只呈现位图圆形,中心作物.我尝试删除它只是为了测试此方法是否导致问题,但图像仍然没有调整到我指定的维度.
我的代码有什么问题吗?或者我在这里误解了覆盖方法?
编辑:
尝试删除覆盖,它似乎已加载大图像,这意味着实际上使用覆盖时发生调整大小.
为什么它不会调整到我指定的实际值?
编辑:
作为示例,值为dimen96,但图像日志中显示的尺寸为97x97,117x117,154x154等.
这是否意味着,覆盖方法的值是调整大小的基线而不是要使用的实际维度?
我在项目中实施了FCM。推送通知按预期方式工作,在收到通知时调用onMessageReceived。当应用程序位于前台时,这是正确的。
但是,当应用程序在后台运行时,系统托盘始终在到达时显示重复的通知(例如,收到通知A时,系统托盘显示2通知A)。
如何解决这个问题?
编辑:添加代码
我扩展了FirebaseMessagingService类并将其包含在onMessageReceived方法中
这是项目中我使用NotificationManager的唯一部分。
另外,我尝试在此方法上添加日志。当应用程序处于前台时,将调用onMessageReceived。应用程序在后台时不会被调用
@Override
public void onMessageReceived(RemoteMessage remoteMessage)
{
RemoteMessage.Notification notification = remoteMessage.getNotification();
Intent intent = new Intent(this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0 /* Request code */, intent,
PendingIntent.FLAG_ONE_SHOT);
String title = notification.getTitle();
String message = notification.getBody();
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
.setSmallIcon(R.mipmap.ic_launcher)
.setContentTitle(title)
.setContentText(message)
.setAutoCancel(true)
.setDefaults(Notification.DEFAULT_SOUND | Notification.DEFAULT_VIBRATE)
.setContentIntent(pendingIntent);
NotificationManager notificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(0, notificationBuilder.build());
}
Run Code Online (Sandbox Code Playgroud) android android-notifications firebase firebase-cloud-messaging
Android 中还有其他方法检查重复的字符串资源吗?
假设我有这两个字符串:
<!-- some other strings -->
<string name="A">I'm A</string>
<string name="A">I'm A</string>
<!-- some other strings -->
Run Code Online (Sandbox Code Playgroud)
在我的 Eclipse 中,这不会导致任何错误或警告,即使我尝试使用 lint,它也不会显示。那我怎么能看到这样的问题呢?
我正在尝试并行运行多个线程.我试图通过拥有一个线程的多个实例来实现这一点.我的假设是它将同时执行; 但是,线程正在按顺序执行.
这是我测试的一个简单代码:
new Thread(new Runnable() {
@Override
public void run() {
for (int i=0; i<100; i++) {
LMLog.info("THREAD", "Counting " + i + " in Thread A");
}
}
}).start();
new Thread(new Runnable() {
@Override
public void run() {
for (int i=0; i<100; i++) {
LMLog.info("THREAD", "Counting " + i + " in Thread B");
}
}
}).start();
new Thread(new Runnable() {
@Override
public void run() {
for (int i=0; i<100; i++) {
LMLog.info("THREAD", "Counting " + i + …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用领域。我设置了 build.gradle 并在应用程序启动时调用了 Realm.init(context)。
问题是,应用程序在启动时崩溃。
这是日志:
java.lang.RuntimeException: Unable to create application com.test.android com.getkeepsafe.relinker.MissingLibraryException: lib/armeabi/librealm-jni.so
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5406)
at android.app.ActivityThread.-wrap2(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1545)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6119)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
Caused by: com.getkeepsafe.relinker.MissingLibraryException: lib/armeabi/librealm-jni.so
at com.getkeepsafe.relinker.ApkLibraryInstaller.installLibrary(ApkLibraryInstaller.java:85)
at com.getkeepsafe.relinker.ReLinkerInstance.loadLibraryInternal(ReLinkerInstance.java:180)
at com.getkeepsafe.relinker.ReLinkerInstance.loadLibrary(ReLinkerInstance.java:136)
at com.getkeepsafe.relinker.ReLinker.loadLibrary(ReLinker.java:70)
at com.getkeepsafe.relinker.ReLinker.loadLibrary(ReLinker.java:57)
at io.realm.internal.RealmCore.loadLibrary(RealmCore.java:59)
at io.realm.Realm.init(Realm.java:187)
Run Code Online (Sandbox Code Playgroud)
该项目使用另一个仅支持armeabi. 这就是为什么我添加了 abiFilter
ndk { abiFilters "armeabi" }
在此处添加其他值将导致该库崩溃。
有没有办法只将 Realm 用于“armeabi”?
我决定使用Fresco它,因为它提供了我的问题的解决方案:GIF和WEBP播放.
根据文件:http://frescolib.org/docs/animations.html
我可以使用这些代码自动播放动画:
Uri uri;
DraweeController controller = Fresco.newDraweeControllerBuilder()
.setUri(uri)
.setAutoPlayAnimations(true)
. // other setters
.build();
mSimpleDraweeView.setController(controller);
Run Code Online (Sandbox Code Playgroud)
但是,当我使用代码时,它只显示静态图像.
为了玩GIF/WEBP,我还需要做任何其他步骤吗?或者我误解了文档对"动画"的使用?
编辑:
附加信息,在使用ControllerListener时,我发现onFinalImageSet()中的Animatable返回值为null.我不知道为什么.
我也试过运行这个示例项目,但.gif也没有动画:https://github.com/kaedea/fresco-sample-usage
我正在使用Nexus 5X测试btw(版本6.0.1)