小编Gui*_*lhE的帖子

Android状态栏图标颜色

我想知道是否可以更改状态栏图标颜色(而不是状态栏颜色colorPrimaryDark) 在此输入图像描述 假设我想要这个状态栏:
<item name="colorPrimaryDark">@android:color/white</item>

和黑色的图标,这可能吗?

谢谢.

编辑:

M开发人员预览中的新功能:windowLightStatusBar.在主题中翻转它会告诉系统使用深色前景,对浅色状态栏很有用.请注意,M预览似乎有一个错误,通知图标保持白色,而系统状态图标正确地变为半透明黑色.

来自:Roman Nurik的 Google+ 帖子 在此输入图像描述

android android-styles android-5.0-lollipop android-statusbar

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

Android透明状态栏和操作栏

我已经对这个主题做了一些研究,我找不到一个完整的解决方案,所以,一步一步,经过一些反复试验,我终于找到了如何实现这些结果:透明或有色ActionbarStatusbar.请看下面的答案.

android android-appcompat android-actionbar android-toolbar android-statusbar

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

升级到谷歌播放服务8.4.0后,我的应用程序在启动时崩溃

我以前一直使用谷歌播放服务8.3.0没有任何问题.我正在寻求升级到谷歌播放服务8.4.0.我正在使用以下播放库:

compile 'com.google.android.gms:play-services-analytics:8.4.0'
compile 'com.google.android.gms:play-services-location:8.4.0'
compile 'com.google.android.gms:play-services-gcm:8.4.0'
Run Code Online (Sandbox Code Playgroud)

当我启动应用程序时崩溃,使用以下日志.

12-27 03:01:33.915 20567-20567/com.ryanc.android.stage.debug E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.ryanc.android.stage.debug, PID: 20567
    java.lang.NoSuchMethodError: No static method zzz(Ljava/lang/Object;)Ljava/lang/Object; in class Lcom/google/android/gms/common/internal/zzx; or its super classes (declaration of 'com.google.android.gms.common.internal.zzx' appears in /data/app/com.ryanc.android.stage.debug-1/base.apk:classes17.dex)
    at com.google.android.gms.measurement.internal.zzw.zzaT(Unknown Source)
    at com.google.android.gms.measurement.AppMeasurementContentProvider.onCreate(Unknown Source)
    at android.content.ContentProvider.attachInfo(ContentProvider.java:1696)
    at android.content.ContentProvider.attachInfo(ContentProvider.java:1671)
    at android.app.ActivityThread.installProvider(ActivityThread.java:4999)
    at android.app.ActivityThread.installContentProviders(ActivityThread.java:4594)
    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4534)
    at android.app.ActivityThread.access$1500(ActivityThread.java:151)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1364)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:135)
    at android.app.ActivityThread.main(ActivityThread.java:5254)
    at java.lang.reflect.Method.invoke(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:372)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
Run Code Online (Sandbox Code Playgroud)

编辑:不确定它会有所帮助,但在@gerardnimo请求这里是完整的build.gradle文件.另外值得注意的是,我已尝试从我的计算机上清理构建并删除并重新安装播放服务sdks.

apply plugin: 'com.android.application'
apply plugin: 'checkstyle' …
Run Code Online (Sandbox Code Playgroud)

crash android google-play-services

23
推荐指数
3
解决办法
3万
查看次数

协程和改造,处理错误的最佳方式

在阅读了这个问题如何处理异常和这个2019 年的中型Android 网络 - 使用 Kotlin 的协程改造后,我创建了我的解决方案,其中包括BaseService能够进行改造调用并将结果和异常转发到“链”中:

应用程序接口

@GET("...")
suspend fun fetchMyObject(): Response<List<MyObject>>
Run Code Online (Sandbox Code Playgroud)

基本服务

protected suspend fun <T : Any> apiCall(call: suspend () -> Response<T>): Result<T> {
    val response: Response<T>
    try {
        response = call.invoke()
    } catch (t: Throwable) {
        return Result.Error(mapNetworkThrowable(t))
    }
    if (!response.isSuccessful) {
        return Result.Error...
    }
    return Result.Success(response.body()!!)
}
Run Code Online (Sandbox Code Playgroud)

儿童服务

suspend fun fetchMyObject(): Result<List<MyObject>> {
    return apiCall(call = { api.fetchMyObject() })
}
Run Code Online (Sandbox Code Playgroud)

回购

    suspend fun myObjectList(): List<MyObject> {
        return …
Run Code Online (Sandbox Code Playgroud)

android kotlin kotlin-android-extensions retrofit2 kotlin-coroutines

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

Android ViewPager会自动更改页面


我想安排一个动作来自动更改我的ViewPager页面.我试过了:

@Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    ...

    swipeTimer = new Timer();
    swipeTimer.schedule(new TimerTask() {

         @Override
         public void run() {
            if (currentPage == NUM_PAGES) {
                currentPage = 0;
            }
            featureViewPager.setCurrentItem(currentPage++, true);
         }
    }, 100, 500);
Run Code Online (Sandbox Code Playgroud)

但我总是得到:

E/AndroidRuntime(5381): FATAL EXCEPTION: Timer-0
E/AndroidRuntime(5381): java.lang.IllegalStateException: Must be called from main thread of process
Run Code Online (Sandbox Code Playgroud)

我已经在主线程了吗?我怎么解决这个问题?
谢谢你的时间.

编辑:
====================================


感谢您的所有答案.根据这些回复,我遇到了两个解决方案:
解决方案1:

swipeTimer = new Timer();
            swipeTimer.schedule(new TimerTask() {

                @Override
                public void run() {
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            if (currentPage == …
Run Code Online (Sandbox Code Playgroud)

android timer ui-thread android-viewpager

21
推荐指数
2
解决办法
4万
查看次数

GCM和PARSE推送消息之间的区别

我正在建立一个Android应用程序,它将从我的服务器接收通知.这意味着超过100万的所有用户都将收到来自我服务器的通知.我知道解析和谷歌云消息传递(GCM)可以做推送消息,但我想知道这两个中最好的(解析和GCM),所以我可以实现它.提前致谢.

android parse-platform google-cloud-messaging

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

在gradle中设置可以在清单文件中使用的全局变量

我想创建一个类似于applicationId的全局变量.它是build.gradle中的设置值,将在清单中使用.可能吗?

android build.gradle android-gradle-plugin

10
推荐指数
3
解决办法
6093
查看次数

禁用ViewPager分页的最佳方法

我正在开发一个有ViewPager菜单的应用程序.每个fragment有一堆的可以是孩子的意见ListView,ScrollView,LinearLayout,等...一本fragments有一个设置按钮,切换一个设置面板(LinearLayout带包装)ScrollView和一些LinearLayout(按钮),并SeekBar为孩子的.此设置面板使用向上或向下滑动动画(当被关闭时)动画,当它可见时我禁用ViewPager分页:

@Override
public boolean onTouchEvent(MotionEvent event) {
    if (!pagingEnabled && event.getAction() == MotionEvent.ACTION_MOVE) {
        return true;
    }
    return super.onTouchEvent(event);
}

@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
    if (!pagingEnabled && event.getAction() == MotionEvent.ACTION_MOVE) {
        return true;
    }
    return super.onInterceptTouchEvent(event);
}

public boolean isPagingEnabled() {
    return pagingEnabled;
}

public void setPagingEnabled(boolean pagingEnabled) {
    this.pagingEnabled = pagingEnabled; …
Run Code Online (Sandbox Code Playgroud)

android android-viewpager scroll-paging

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

BaseGameActivity.runOnUpdateThread()与Entity.registerUpdateHandler()

如果我执行一个Runnablewith runOnUpdateThread()或者我将一个更新处理程序注册到一个Entity并用它执行代码有什么区别吗?

我想Sprite从场景中删除一个Sprite.detachSelf().在本例中,教程说必须在Update Thread中调用此方法BaseGameActivity.runOnUpdateThread().但是使用这个解决方案,我必须将活动对象传递给想要使用的每个对象runOnUpdateThread().嗯......我不喜欢它.

我的问题是,如果我RunnableHandler在Entity中创建一个对象并注册它registerUpdateHandler()并添加了新的Runnable RunnableHandler,这个解决方案是否与该runOnUpdateThread()功能相同.这是Runnable在更新线程中执行的吗?

/* MySprite is attached to a Scene object */
public class MySprite extends Sprite {
   private final RunnableHandler UPDATE_HANDLER = new RunnableHandler();

   public MySprite() {
       registerUpdateHandler(UPDATE_HANDLER);
   }

   /* called when the sprite has to be removed from scene */
   public void removeMyself() {
       Runnable r = new Runnable() {
           public void run() {
               detachSelf(); …
Run Code Online (Sandbox Code Playgroud)

android andengine

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

使用while循环的Android stackoverflow

我正在使用此方法缩小TextView文本,因为它的名字暗示:

public static float shrinkTextToFit(String caller, float availableWidth, TextView textView, float startingTextSize, float minimumTextSize) {
    startingTextSize = textView.getTextSize() < startingTextSize ? textView.getTextSize() : startingTextSize;
    Log.i("123", "=========================");
    Log.i("123", caller + " called shrinkTextToFit");
    CharSequence text = textView.getText();
    float textSize = startingTextSize;
    textView.setTextSize(startingTextSize);
    while (!TextUtils.equals(text, (TextUtils.ellipsize(text, textView.getPaint(), availableWidth, TextUtils.TruncateAt.END)))) {
        textSize -= 2;
        Log.i("123", "textSize: " + textSize);
        if ((textSize <= minimumTextSize) || (textSize <= 0)) {
            break;
        } else {
            textView.setTextSize(textSize);
        }
    }
    return textSize;
}
Run Code Online (Sandbox Code Playgroud)

而且我只有这个设备有堆栈溢出(有时候不会发生):

  • 三星GT-I9192
  • 三星GT-I9300 …

java stack-overflow android while-loop textwatcher

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