小编Ale*_* Fu的帖子

ActionItem的动画图标

我一直在寻找适合我问题的解决方案,但我似乎找不到一个.我有一个ActionBar(ActionBarSherlock),其菜单从XML文件中膨胀,该菜单包含一个项目,并且该项目显示为ActionItem.

菜单:

<menu xmlns:android="http://schemas.android.com/apk/res/android" >    
    <item
        android:id="@+id/menu_refresh"       
        android:icon="@drawable/ic_menu_refresh"
        android:showAsAction="ifRoom"
        android:title="Refresh"/>    
</menu>
Run Code Online (Sandbox Code Playgroud)

活动:

[...]
  @Override
  public boolean onCreateOptionsMenu(Menu menu) {
    getSupportMenuInflater().inflate(R.menu.mymenu, menu);
    return true;
  }
[...]
Run Code Online (Sandbox Code Playgroud)

ActionItem显示时带有图标而没有文本,但是当用户点击ActionItem时,我希望图标开始动画,更具体地说,是在适当的位置旋转.有问题的图标是刷新图标.

我意识到ActionBar支持使用自定义视图(添加动作视图)但是这个自定义视图被扩展为覆盖ActionBar的整个区域并且实际上阻止了除应用程序图标之外的所有内容,在我的情况下这不是我想要的.

所以我的下一次尝试是尝试使用AnimationDrawable并逐帧定义我的动画,将drawable设置为菜单项的图标,然后在onOptionsItemSelected(MenuItem item)获取图标并开始使用动画((AnimationDrawable)item.getIcon()).start().但这并不成功.有谁知道有任何方法来实现这种效果?

android android-animation actionbarsherlock

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

什么是NoSaveStateFrameLayout?

我一直在阅读Android Dev博客中的布局优化,我一直在使用hierarchyviewer来查看我可以展平或合并布局/元素的位置.但是我在视图层次结构中看到了这些东西...... NoSaveStateFrameLayout.任何人都可以对此有所了解吗?它显示(通常)在LinearLayout之前,它似乎很无用,只是在层次结构中添加了另一个(不必要的)级别.我试着寻找这是什么,但我没有运气.

android android-layout

22
推荐指数
1
解决办法
6129
查看次数

RxJava的后备可观察

我正在寻找一种更好的方法来在使用RxJava时为空结果实现一个简单的Observable回退系统.我们的想法是,如果对一组数据的本地查询导致零项,则应该进行后备查询(可以是网络调用,或其他).目前,我的代码包含以下内容:

Observable.create(new Observable.OnSubscribe<Object>() {
  @Override
  public void call(Subscriber<? super Object> subscriber) {
     List<Object> results = queryLocalDatabase();
     if (results.isEmpty()) {
       subscriber.onError(new Throwable("Empty results"));
     } else {
       // Process results...
     }
  }
}).onErrorResumeNext(/* Fallback Observable goes here */);
Run Code Online (Sandbox Code Playgroud)

虽然这有效,但为空结果集抛出异常并没有多大意义.我注意到有条件运算符可用isEmpty,但是它似乎并不像我想要的那样.例如,使用isEmpty......

localObservable = Observable.create(new Observable.OnSubscribe<Object>() {
  @Override
  public void call(Subscriber<? super Object> subscriber) {
     List<Object> results = queryLocalDatabase();
     for (Object obj : results) {
       // Process object
       subscriber.onNext(object);           
     }
     subscriber.onCompleted();
  }
});

localObservable.isEmpty()
  .switchMap(new Func1<Boolean, Observable<? extends Object>>() {
    @Override …
Run Code Online (Sandbox Code Playgroud)

rx-java

13
推荐指数
1
解决办法
6457
查看次数

解析JSON并将其保存在SQLite数据库中

我曾经拥有这种简单的JSON数据,我可以成功地解析属性并将它们保存到SQLite数据库中.

[
  {
  "project_title" : " ",
  "organization_title" : " ",
  "website": "",
  "address": "",
  "keyword" : "",
  "short_code" : "",
  "project_description" : "",
  "smallImageUrl" : "",
  "bigImageUrl" : "",
  "price" : "",
  "country" : "",
  "donationAmount" : "",
  "categories" : "",
  "campaign_id" : "",
  "currency_isoname": "",
  "paypal_email" : "",
  "elv_available" : ""
  }
]
Run Code Online (Sandbox Code Playgroud)

但现在我有一个更复杂的JSON文件:

[
  {
    "location": {
      "deleted_at": "null",
      "documentary_video_length": "81",
      "id": "15",
      "latitude": "52.4134145988286",
      "longitude": "13.0904620846177",
      "position": "5",
      "updated_at": "2011-08-26T15:30:27+02:00",
      "name": "Glienicker Br\u00fccke",
      "text": "",
      "documentary_video_url": …
Run Code Online (Sandbox Code Playgroud)

java android json

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

使用Samsung S5的Camera2 API AutoFocus

我在Samsung S5上使用新的Camera2 API.此设备报告支持的硬件级别LEGACY,这很好.

但是,我似乎无法自动对焦于此设备.触发自动对焦的请求如下所示:

previewRequestBuilder.set(CaptureRequest.CONTROL_AF_MODE, CaptureRequest.CONTROL_AF_MODE_AUTO);
previewRequestBuilder.set(CaptureRequest.CONTROL_AF_TRIGGER, CaptureRequest.CONTROL_AF_TRIGGER_START);
state = STATE_PREVIEW;
try {
  captureSession.setRepeatingRequest(previewRequestBuilder.build(), captureCallback, backgroundHandler);
} catch (CameraAccessException e) {
  e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)

发送请求后,请求的结果始终是CONTROL_AF_STATE_ACTIVE_SCAN偶尔的CONTROL_AF_STATE_NOT_FOCUSED_LOCKED.

奇怪的是,当状态为时CONTROL_AF_STATE_NOT_FOCUSED_LOCKED,自动对焦会返回CONTROL_AF_STATE_ACTIVE_SCAN状态一段时间然后再返回状态CONTROL_AF_STATE_NOT_FOCUSED_LOCKED,从而产生无限焦点循环.根据文件,当状态是CONTROL_AF_STATE_NOT_FOCUSED_LOCKED......

镜头将保持静止,直到AF模式(android.control.afMode)更改或新的AF触发器发送到相机设备(android.control.afTrigger).

我想知道这种差异是否是因为硬件级别的问题LEGACY,我应该回到使用已弃用的Camera API,但这对于像自动对焦这样的流行功能来说似乎很疯狂.

是否有任何建议如何处理报告的设备LEGACY

android android-camera

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

Android RxJava,非阻塞?

据我所知,rxjava-android在一个单独的线程上执行操作(当提供正确的调度程序时),导致非阻塞操作,但是快速而肮脏的测试似乎证明这是不正确的.

我使用了以下代码片段,在两种情况下,UI都被阻止了......

片段1

Observable observable = Observable.create(new Observable.OnSubscribe<Object>() {
  @Override
  public void call(Subscriber<? super Object> subscriber) {
    int i = 0;
    while (i == 0) {}
    subscriber.onCompleted();
  }
});
observable.subscribeOn(Schedulers.newThread());
observable.observeOn(AndroidSchedulers.mainThread());
observable.subscribe();
Run Code Online (Sandbox Code Playgroud)

片段2

Observable observable = Observable.create(new Observable.OnSubscribe<Object>() {
  @Override
  public void call(Subscriber<? super Object> subscriber) {
    SystemClock.sleep(5000);
    subscriber.onCompleted();
  }
});
observable.subscribeOn(Schedulers.newThread());
observable.observeOn(AndroidSchedulers.mainThread());
observable.subscribe();
Run Code Online (Sandbox Code Playgroud)

我在这里错过了什么吗?

android rx-java

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

无缝嵌套滚动(Android)

我们都被建议不要使用包含滚动机制的嵌套视图.然而,在最新的Android版本(5.0)中,电话应用程序引起了我的注意,似乎是一个ListView内部ScrollView.

真正引起我兴趣的是滚动机制从无缝切换ScrollViewListView无缝.

请注意,在实际ListView开始滚动之前,选项卡上方的内容将被推出视图.

我自己试过复制这个,但结果不成功.这是我采取的基本方法......

在此输入图像描述

通过单个连续触摸事件(不抬起手指)......

当用户滚动时,ListView慢慢地覆盖了ImageView.一旦ImageView100%覆盖并ListView占据整个屏幕,就ListView开始滚动.

目前,我正在听触摸事件ListView,如果顶部已经达到了,叫requestDisallowInterceptTouchEventListView,即

@Override
public boolean onTouch(View v, MotionEvent event) {
  if (listViewAtTop) {
    v.requestDisallowInterceptTouchEvent(true);
  } else {
    v.requestDisallowInterceptTouchEvent(false);
  }
  return false;
}
Run Code Online (Sandbox Code Playgroud)

只有当您抬起手指并继续滚动时,切换滚动上下文才有效.

是否有不同的方法可以达到预期的效果?

android listview

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