小编Zie*_*iem的帖子

Android可扩展GridView就像谷歌图片一样

我想创建可扩展的GridView,其行为类似于Google图像页面.我想知道如何实现这样的功能:当我点击其中一个图像时,页面会展开并显示图片的详细信息.是否有可能在Android中做类似的事情?

图像网格: 谷歌图片

扩展图像网格: 谷歌图片扩大

android android-gridview

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

如何同步执行RoboSpice请求?

如何同步执行RoboSpice请求?可能吗?我想在IntentService中使用RoboSpice.

编辑:

有时需要同步执行某些操作,例如在服务中.在我最近的项目中,我必须排队一些不同类型的请求,我想将IntentService与RoboSpice一起使用.在我的情况下,当我执行不同的请求时,我需要等待结果request1然后从中传递数据request2并执行它.

我想要一些批量请求队列.假设我们有两种类型的请求:request1request2.request2需要获取的数据request1:

  1. 执行 request1
  2. 等待
  3. 获取数据request1并传递给request2
  4. 执行 request2
  5. 等待
  6. 转到1.

我想使用IntentService(队列)但由于异步而在启动请求后死亡.

在我看来,使用听众或CountDownLatch并不是最好的方法.

robospice

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

如何在Retrofit中自定义响应体JSON转换?

我正在使用Retrofit来实现Rest Client,在尝试将响应体转换为模型Object时遇到了一些麻烦.

我的界面中有以下内容:

@POST("/users")
void createUser(@Body RegisterUserToken token, Callback<User> callback);
Run Code Online (Sandbox Code Playgroud)

我的User课基本上是一个POJO:

public class User {

    private int id;
    private String username;
    private String email;
    private String language;
    // getters and setters...
}
Run Code Online (Sandbox Code Playgroud)

这就是我使用Rest Client的方式:

restClient.createUser(token, new Callback<User>() {
    @Override
    public void success(User user, Response response) {
        // ...problem is here, with the user object
    }

    @Override
    public void failure(RetrofitError error) {
        // ...
    }
});
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是响应主体没有被转换为User对象.我很确定问题是服务器正在返回:

{"user":{"id":13,"username":"john","email":"john@gmail.com","language":"eng"}}
Run Code Online (Sandbox Code Playgroud)

而不仅仅是:

{"id":13,"username":"john","email":"john@gmail.com","language":"eng"}
Run Code Online (Sandbox Code Playgroud)

鉴于我无法真正修改服务器代码,我如何自定义Retrofit/GSON以正确地将此响应主体转换为我的User对象?

android android-networking retrofit

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

如何从RxJava中的延迟列表中发出项目?

我正在使用Retrofit从REST API获取书签:

public interface BookmarkService {
    @GET("/bookmarks")
    Observable<List<Bookmark>> bookmarks();
}
Run Code Online (Sandbox Code Playgroud)

现在我想延迟发出此列表中的每个项目.

我做了类似的东西在Java中,但onCompleted永远不会触发.

private Observable<Bookmark> getBookmarks() {
    return getBookmarkService().bookmarks()
         .flatMap(new Func1<List<Bookmark>, Observable<Bookmark>>() {
            @Override
            public Observable<Bookmark> call(List<Bookmark> bookmarks) {
                Observable<Bookmark> resultObservable = Observable.never();
                for (int i = 0; i < bookmarks.size(); i++) {
                    List<Bookmark> chunk = bookmarks.subList(i, (i + 1));
                    resultObservable = resultObservable.mergeWith(Observable.from(chunk).delay(1000 * i, TimeUnit.MILLISECONDS));
                }

                return resultObservable;
            }
        })
        .observeOn(AndroidSchedulers.mainThread());
}
Run Code Online (Sandbox Code Playgroud)

我做错了什么?

用法:

mSwipeRefreshLayout.setRefreshing(true);
getBookmarks()
    .subscribe(new Observer<Bookmark>() {
        @Override
        public void onCompleted() {
            Timber.i("Completed");
            mSwipeRefreshLayout.setRefreshing(false); …
Run Code Online (Sandbox Code Playgroud)

android rx-java retrofit rx-android

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

Android - 相机闪光灯在不同设备中以错误的间隔闪烁

我正在开发一个应用程序,我想在特定的时间间隔闪烁闪光灯.

以下是我遵循的步骤.

1)将Timer设置为特定的间隔.

2)在run()方法中我做了TurnOn和TurnOff闪存的代码.

但闪光灯闪烁的间隔在不同的设备上是不同的.所有设备的计时器时间都相同,我也在其间放置了一个Log,我得到的值相同,但问题仍然存在.

这是硬件问题,因为不同设备的硬件不同.我也测试了iPhone 5s(通过在iOS中转换相同的代码),但闪烁闪烁比Android快得多.

对于Android,我已经在Nexus 4,Motorola G2,Sony Xperia Neo上进行了测试,它运行良好.

问题在于Nexus 5和三星Galaxy S4.

编辑

定时器代码:

long delayLong = 200;
long timerValueLong = 500;
Timer timer;

timer = new Timer();
timer.schedule(new TimerTask() {
    @Override
    public void run() {
        if (!mLightOn) {
            turnOnFlash();
        } else {
            turnOffFlash();
        }
    }
}, delayLong, timerValueLong);
Run Code Online (Sandbox Code Playgroud)

flash android led

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

viewPagerIndicator:错误:工件'com.viewpagerindicator:library:2.4.1:library.aar'未找到

当我同步gradle时,我有这个错误:

错误:未找到工件'com.viewpagerindicator:library:2.4.1:library.aar'.

我的朋友是:

apply plugin: 'com.android.application'

repositories {
    maven { url "http://dl.bintray.com/populov/maven" }
    mavenCentral()
}

android {
    compileSdkVersion 20
    buildToolsVersion "20.0.0"

    defaultConfig {
        minSdkVersion 14
        targetSdkVersion 19
    }

    packagingOptions {
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/NOTICE'
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:19.1.+'
    compile 'com.mcxiaoke.volley:library:1.0.6@aar'
    compile 'com.squareup.picasso:picasso:2.2.+'
    compile 'com.nineoldandroids:library:2.4.0'
    compile 'com.daimajia.slider:library:1.1.2@aar'
    compile 'com.viewpagerindicator:library:2.4.1@aar'
    compile files('libs/jsoup-1.8.1.jar')
}
Run Code Online (Sandbox Code Playgroud)

我需要做什么?!

android maven build.gradle android-gradle-plugin

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

Android使用MediaStore.Images.Media.insertImage自定义创建的文件名

在我的应用程序中,我正在尝试保存位图,MediaStore.Images.Media.insertImage我尝试使用此方法自定义选择创建的文件名,但在将任何文件名作为String传递后,此方法创建随机文件名,我无法更改它,例如在这段代码中,我想创建"123456"并保存它

String path = Environment.getExternalStorageDirectory().toString();
OutputStream fOut = null;
bitmapFileName = "123456";
File file = new File(path, bitmapFileName + ".jpg");
fOut = new FileOutputStream(file);
fOut.flush();
fOut.close();

drawView.getDrawingCache().compress(Bitmap.CompressFormat.JPEG, 85, fOut); 

String imgSaved = null;
imgSaved = MediaStore.Images.Media.insertImage(getContentResolver(), file.getAbsolutePath(), file.getName(), file.getName());
Run Code Online (Sandbox Code Playgroud)

保存图像后,此方法创建文件名,14524645878.jpg而不是123456.jpg什么问题?或者如何找到并获得由这个方法创建的女巫文件名

android

6
推荐指数
0
解决办法
741
查看次数

如何在Facebook Android SDK V4中获取当前访问令牌?

我想检查用户是否在主FragmentActivity中登录,但是用户已登录

AccessToken.getCurrentAccessToken()

返回null.我在下面的代码中做错了什么?

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    context = this;          
    FacebookSdk.sdkInitialize(context);
    callbackManager = CallbackManager.Factory.create();
    AccessToken accessToken = AccessToken.getCurrentAccessToken();
    if (accessToken != null) {
        if (!accessToken.isExpired()) {

        }
    }
}
Run Code Online (Sandbox Code Playgroud)

android facebook facebook-android-sdk facebook-login facebook-access-token

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

Android - fragmentTransaction.replace()不适用于支持库25.1.0

我使用片段替换FrameLayout fragmentTransaction.replace().

布局:

<FrameLayout
        android:id="@+id/articlesAppender"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
</FrameLayout>
Run Code Online (Sandbox Code Playgroud)

替换Activity的onCreate:

FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
articlesFragment = (ArticlesFragment) fragmentManager.findFragmentByTag(ARTICLES_FRAGMENT_TAG);

if (articlesFragment == null) {
    articlesFragment = new ArticlesFragment();
}

fragmentTransaction.replace(R.id.articlesAppender, articlesFragment, ARTICLES_FRAGMENT_TAG);
fragmentTransaction.commit();
Run Code Online (Sandbox Code Playgroud)

ArticleFragment的onCreate:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    view = inflater.inflate(R.layout.articles_fragment, container, false);
    view.setVisibility(View.GONE);
    return view;
}
Run Code Online (Sandbox Code Playgroud)

但是view.setVisibility(View.GONE);不支持库25.1.0.因此片段仍将显示在屏幕上.如果我设置了articlesAppenderto 的可见性GONE.所以看起来应该是这样的:

<FrameLayout
        android:id="@+id/articlesAppender"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:visibility="gone">
</FrameLayout>
Run Code Online (Sandbox Code Playgroud)

然后片段在屏幕上将不可见,但是当我稍后尝试呼叫时view.setVisibility(View.VISIBLE);,它仍然不起作用.片段仍然不可见.

这意味着view返回的inflater.inflate(R.layout.articles_fragment, container, false);不是片段的真实视图.但它在支持库25.0.1上完美运行. …

android fragment android-support-library

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

如何处理OutOfMemory异常

我在我的项目中使用Volley库但是我遇到了OutOfMemory异常的问题.在我的应用程序中,我通过NetworkImageView使用setImageUrl方法从服务器下载拇指和全尺寸图像.我正在使用BitmapLruCache:

public class BitmapLruCache extends LruCache<String, Bitmap> implements ImageLoader.ImageCache {

    public static int getDefaultLruCacheSize() {
        final int maxMemory = (int) (Runtime.getRuntime().maxMemory() / 1024);
        final int cacheSize = maxMemory / 8;

        return cacheSize;
    }

    public BitmapLruCache() {
        this(getDefaultLruCacheSize());
    }

    public BitmapLruCache(int sizeInKiloBytes) {
        super(sizeInKiloBytes);
    }

    @Override
    protected int sizeOf(String key, Bitmap value) {
        return value.getRowBytes() * value.getHeight() / 1024;
    }

    @Override
    public Bitmap getBitmap(String url) {
        return get(url);
    }


    @Override
    public void putBitmap(String url, Bitmap bitmap) {
        put(url, bitmap); …
Run Code Online (Sandbox Code Playgroud)

android out-of-memory android-2.2-froyo android-volley

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