小编use*_*552的帖子

Android中的动画ProgressBar更新

我在我的应用程序中使用ProgressBar,我在onProgressUpdate中更新AsyncTask.到现在为止还挺好.

我想要做的是为进度更新设置动画,这样它不仅可以"跳转"到值,而且可以平滑地移动到它.

我尝试这样做运行以下代码:

this.runOnUiThread(new Runnable() {

        @Override
        public void run() {
            while (progressBar.getProgress() < progress) {
                progressBar.incrementProgressBy(1);
                progressBar.invalidate();
                try {
                    Thread.sleep(10);
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }

    });
Run Code Online (Sandbox Code Playgroud)

问题是进度条在完成其最终值(进度变量)之前不会更新其状态.中间的所有状态都不会显示在屏幕上.调用progressBar.invalidate()也没有帮助.

有任何想法吗?谢谢!

user-interface animation android progress-bar

53
推荐指数
7
解决办法
5万
查看次数

共享RxBindings多个订阅者之间的可观察事件

我正在使用RxBindings库中的Focus Observable来对焦点变化做出反应.因为我要验证输入并触发动画,我需要两次焦点事件.Jake Wharton建议在一个observable上使用share()运算符进行多个订阅.但是如果我在使用share()之后操纵observable,那么第一个订阅就会死掉.

这是我的用例的一个小例子

public class ShareTest extends AppCompatActivity {

@Bind(R.id.editTextOne)
EditText editTextOne;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_share_test);

    ButterKnife.bind(this);

    Observable<Boolean> focusChangeObservable = RxView.focusChanges(editTextOne);
    focusChangeObservable.subscribe(focused -> Log.d("test","Subscriber One: "+focused));

    focusChangeObservable.share().skip(1).filter(focused -> focused == false).subscribe(focused -> {
        Log.d("test","Subscriber Two: "+focused);
    });
}
}
Run Code Online (Sandbox Code Playgroud)

我需要和期望的是当我获得并放松对EditText的关注时的输出

Focus gain
Subscriber One: true

Focus loss
Subscriber One: false
Subscriber Two: false
Run Code Online (Sandbox Code Playgroud)

但我真正得到的是

Focus gain

Focus loss
Subscriber Two: false
Run Code Online (Sandbox Code Playgroud)

因此,第二种情况的操纵似乎超越了第一种情况.我做错了什么,以及在多个订阅者被不同地操纵时在多个订阅者之间共享事件的预期方式是什么

谢谢

android publish-subscribe rx-java rx-android

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

使用Android HttpClient重用SSL连接

我正在我自己实现的java Web代理(将请求转发给实际的Web服务)和Android应用程序之间开发一个安全的Web服务.

使用标准(不安全)http连接这样做非常有效.现在我想在代理和Android客户端之间使用安全(SSL)连接.

只要我为每个请求实例化一个新的HttpClient,这就会起作用,这就是浪费资源非常慢,因为我正在为每个请求进行双向握手.

所以我正在尝试为每个请求重用HttpClient,这会导致以下异常中的安全连接

java.lang.IllegalStateException:连接已打开.在org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:150)在org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)在org.apache.http.impl .client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)在org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)在org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient .java:487)org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)

当我将我的代理和客户端更改为no-ssl通信时,它可以正常工作.有人知道我做错了什么吗?非常感谢你的帮助!

顺便说一句,除了使用带有加载证书的SSLServerSocket而不是使用ServerSocket之外,服务器代码完全相似.

客户参数设置

// Set basic data
    HttpParams params = new BasicHttpParams();
    HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
    HttpProtocolParams.setContentCharset(params, "UTF-8");
    HttpProtocolParams.setUseExpectContinue(params, true);
    HttpProtocolParams.setUserAgent(params, "Android app/1.0.0");

    // Make pool
    ConnPerRoute connPerRoute = new ConnPerRouteBean(12);
    ConnManagerParams.setMaxConnectionsPerRoute(params, connPerRoute);
    ConnManagerParams.setMaxTotalConnections(params, 20);

    // Set timeout
    HttpConnectionParams.setStaleCheckingEnabled(params, false);
    HttpConnectionParams.setConnectionTimeout(params, connectionTimeoutMillis);
    HttpConnectionParams.setSoTimeout(params, socketTimeoutMillis);
    HttpConnectionParams.setSocketBufferSize(params, 8192);

    // Some client params
    HttpClientParams.setRedirecting(params, false);
Run Code Online (Sandbox Code Playgroud)

Http客户端创建

// load truststore certificate
            InputStream clientTruststoreIs = context.getResources().openRawResource(R.raw.server);
            KeyStore trustStore = KeyStore.getInstance("BKS");
            trustStore.load(clientTruststoreIs, "server".toCharArray());

            // initialize trust manager factory with the …
Run Code Online (Sandbox Code Playgroud)

ssl android httpclient

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

在Android库项目中包含AAR依赖项

在我的Android Studio Gradle项目中,我使用了几个库,而一个库应该使用本地AAR文件作为依赖项.我使用流行的解决方案将AAR文件作为依赖项包含在我的库项目中:

flatDir {
    dirs 'libs'
}

compile(name: 'aar-library', ext: 'aar')
Run Code Online (Sandbox Code Playgroud)

当我现在尝试同步时,我收到错误消息

无法解决:依赖'aar-library'

在我的主项目中,即使我没有在那里使用/引用AAR文件.如果我只是将AAR文件复制到我的主项目的libs文件夹中也可以.任何的想法?

android android-studio android-gradle-plugin aar

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

Actionbar Sherlock搜索小部件展开不起作用

我正在使用Actionbar Sherlock.启动时显示的活动应以"搜索模式"开始,以立即开始搜索.为此,我使用以下代码:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    super.onCreateOptionsMenu(menu);

    //collapse search
    MenuItem searchItem = menu.add(Menu.NONE, R.string.inlineSearch, Menu.NONE, getString(R.string.inlineSearch)).setIcon(R.drawable.menu_search);
    searchItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
    searchView = new SearchView(this);
    searchItem.setActionView(new SearchView(this));
    searchItem.expandActionView();
    return true;
}
Run Code Online (Sandbox Code Playgroud)

SearchView是Android/Actionbar Sherlock提供的View.

我面临的问题是,无论我做什么,该项目在启动时都不会扩展.我尝试在启动后使用另一个操作栏项调用expandActionView方法,没有任何更改.我实现了自己的View实现了CollapsibleActionView,但是onActionViewExpanded()和onActionViewCollapsed()的方法永远不会被调用.

但是,如果我单击SearchView的折叠按钮,视图将按预期展开.

有谁知道我做错了什么?谢谢你的帮助!

user-interface android actionbarsherlock

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

库项目 build.gradle 中 buildscript 标签的最佳实践

我想知道为 Android 库项目定义构建脚本存储库和依赖项的最佳/预期方法是什么。

在野外(如 Github),大多数存储库都在 build.gradle 中定义了以下内容

buildscript {
repositories {
    jcenter()
}
dependencies {
    classpath 'com.android.tools.build:gradle:1.0.0'
} }
Run Code Online (Sandbox Code Playgroud)

但是,如果我在 Android Studio 中创建一个库项目,则不会创建此 buildscript 块,因为它已经在根 build.gradle 文件中,因此没有必要(我假设)。

那么正确的方法是什么,只在根 build.gradle 或每个库项目中定义一次(这也意味着在新插件版本的情况下更新每个库的版本号)。或者这取决于我是否想独立于我的主应用程序发布该库?

android android-library build.gradle android-gradle-plugin

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

Gradle 任务发布/上传 android apk 到 Http Server

到目前为止,我们使用 Jenkins 和 Ant 来构建我们的 Android APK。使用 curl 将构建的 APK、proguard mappings.txt 和一些发行说明上传到 Http Server

curl -k -F "app=@$apk_dir" -F "release_notes=@$release_notes_file" "https://ourserver.com/apps/internal/app/$app_dir/$version"
Run Code Online (Sandbox Code Playgroud)

而 app 目录是由 Android Manifest 中的一些参数组合而成的

app_dir="${app_name}-${some_other_manifest_meta_data}"
Run Code Online (Sandbox Code Playgroud)

当我现在开始切换到 Gradle 时,我想将其移动到 gradle 构建文件中。想到了一个依赖Android插件组装任务的任务,将组装好的apk、发行说明和proguard文件上传到Http Server上。

不幸的是,官方 Gradle 文档和大多数链接只描述了如何上传到 Maven 或 Ivy 服务器。

如果有人可以向我提供代码或至少提供有关如何执行此操作的提示,那就太好了。

谢谢

upload android publish gradle jenkins

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