Tag: android

如何在unit testing中处理嘲讽的RxJava2可观察抛出exception

在过去的几个星期里,我一直在Kotlin使用MVP在Android上进行TDD。 事情进展顺利。 我使用Mockito来模拟类,但我似乎无法完成如何执行我想运行的测试之一。 以下是我的测试: 调用API,接收数据列表,然后显示列表。 loadAllPlacesTest() 调用API,接收空数据,然后显示列表。 loadEmptyPlacesTest() 调用API,在路上发生一些exception,然后显示错误信息。 loadExceptionPlacesTest() 我已经成功测试了#1和#2。 问题在于#3 ,我不确定如何在代码中进行测试。 RestApiInterface.kt interface RestApiInterface { @GET(RestApiManager.PLACES_URL) fun getPlacesPagedObservable( @Header(“header_access_token”) accessToken: String?, @Query(“page”) page: Int? ): Observable } RestApiManager.kt实现接口的管理器类如下所示: open class RestApiManager: RestApiInterface{ var api: RestApiInterface internal set internal var retrofit: Retrofit init { val logging = HttpLoggingInterceptor() // set your desired log level […]

Dagger 2将命名对象注入到一个Activity中

我有一种感觉,这是对Dagger如何工作的一个简单的误解。 唉,我无法find问题。 我有几个GotIt像卡,我想要使用全部。 为此,我使用了一个模型,其中包括图标,正文文本,动作文本和动作点击处理程序。 各种活动使用不同的适配器来表示状态。 现在我正在关注一张卡片,告诉用户何时缺少位置权限。 我想要做的是创建一个模块,提供各种卡,我有(使用Kotlin): @Module class GotItCardModule { @Provides @Singleton @Named(Manifest.permission.ACCESS_FINE_LOCATION) fun provideLocationGotItCard(application: Application): GotItViewHolder.GotItCard { val icon = ResourcesCompat.getDrawable(application.resources, R.drawable.ic_location_off_black_24dp, null)?.apply { DrawableCompat.setTint(this, Color.WHITE) } return GotItViewHolder.GotItCard( iconDrawable = icon, bodyText = application.getString(R.string.location_permission_gotit_body), primaryButtonText = application.getString(R.string.location_permission_gotit_action_primary), primaryButtonCallback = View.OnClickListener { v -> (v.context as? Activity)?.let { activity -> ActivityCompat.requestPermissions(activity, arrayOf(Manifest.permission.ACCESS_FINE_LOCATION), RequestCode.Permission.ACCESS_FINE_LOCATION) […]

在片段中使用上下文

我怎样才能得到一个片段的上下文? 我需要使用我的数据库的构造函数在上下文中,但getApplicationContext()和FragmentClass.this不工作,所以我能做什么? 数据库构造函数 public Database(Context ctx) { this.context = ctx; DBHelper = new DatabaseHelper(context); }

什么是gradle.properties用于? (并使用外部variables)

我已经开发了一段时间的Android应用程序了,但是我意识到我还不知道gradle.properties文件是用来做什么的。 我已经通过Gradle文档了解了一些,例如,您可以添加用于指定Java Home或内存设置的配置。 还有什么可以用的吗? 我这个时代的主要参考通常是Google I / O开源应用程序,看着它的gradle.properties文件 ,我可以看到它的一个用处是存储依赖版本variables,所以Android的版本代码例如,支持库依赖关系不需要每个库的新版本都需要更新,只需要更新一个variables即可: … // Android support libraries. compile “com.android.support:appcompat-v7:${android_support_lib_version}” compile “com.android.support:cardview-v7:${android_support_lib_version}” compile “com.android.support:design:${android_support_lib_version}” compile “com.android.support:support-v13:${android_support_lib_version}” compile “com.android.support:recyclerview-v7:${android_support_lib_version}” compile “com.android.support:preference-v7:${android_support_lib_version}” … Google Play服务使用了相同的想法。 然而,在我自己的Android项目中,我一直在做类似的事情 – 我把我的版本variables放在root build.gradle文件中,如下所示: // Top-level build file where you can add configuration options // common to all sub-projects/modules. buildscript { ext.kotlin_version = ‘1.0.5-2’ repositories { […]

如何在Android中使用animation将视图移动到另一个视图?

我在屏幕的中心有一个ImageView + TextView的圆圈。 我有另外两个ImageView + TextView ,一个在顶部,另一个在屏幕的底部。 我的要求是: 我想要一个顶级的ImageView + TextView的副本和一个底部的ImageView + TextView的副本在animation中移动到圆的中心,从而改变圆内的textView的值。 例如: 说顶部的textView值200和底部的textview值300.我想这些值的一部分(比如100或150)进行animation和移动到圆,但原始值200和300应保持在同一位置。 我试过使用TranslateAnimation 。 但是我面临的问题是find中心圆的x和y坐标。 它不完全走向圆圈的中心。 原始view’s位置也不保留。 TranslateAnimation animation = new TranslateAnimation(startLayout.getX(),endLayout.getX(), startLayout.getY(),endLayout.getY); animation.setDuration(1000); animation.setFillAfter(false); startView.startAnimation(animation); startLayout是ImageView和TextView所在的线性布局。 请帮忙! 谢谢!

在“LatLngBounds”构建器上设置最大缩放级别

我在搜索中没有find答案,所以有几个答案,但他们并没有为我工作。 我在地图上有两个标记,我正在使用LatLngBounds构建器,以便让相机缩放到正确的缩放级别以将它们包括在内。 一切都按预期工作,除了一个事情,当两个标记彼此非常接近时,地图非常放大而且很好,具有这个缩放级别没有任何意义。 LatLngBounds.Builder builder = new LatLngBounds.Builder(); builder.include(firstMarker.getPosition()); builder.include(secondMarker.getPosition()); LatLngBounds bounds = builder.build(); CameraUpdate cu = CameraUpdateFactory.newLatLngBounds(bounds, markerPadding); 有没有办法强制一定程度的变焦,之后相机不会变焦? 这将避免让地图过于放大/缩小。 基本上我使用15.0f级别的缩放。 如果点太远,我想缩放以适应他们两个。 如果积分越来越近,我不希望缩放级别超过15.0f。

我们可以在xml中为android背景制作多个颜色渐变吗?

我一直在尝试在XML中创建多色背景,但只有3个选项可用,包括开始,中间,结束和指定的角度。 我们不能让这样的背景下面.. 我们可以在android中像这样的背景?

SwipeRefreshLayout会干扰ViewPager中的ScrollView

我有一个ViewPager周围的SwipeRefreshLayout。 由ViewPager加载的片段包含ScrollViews。 当我向下滚动它可以正常工作,但是当我向上滚动时,SwipeRefreshLayout激活而不让ScrollView先滚动。 我如何确保ScrollView具有优先权? 当SwipeRefreshLayout在ScrollView之外的独立片段中工作的很好,但是我需要它在ViewPager周围的活动本身。 以下是相关的布局: 活动: 由ViewPager加载的片段(有5个选项卡,每个都有其中之一): 如果你需要更多的信息,这里是GitHub上的回购: https : //github.com/sargunster/purdue-dining-courts-android

如何以编程方式获取Android导航栏的高度和宽度?

Android的屏幕底部的黑色导航栏不容易移动。 自3.0以来,它一直是Android的一部分,作为硬件按钮的替代品。 这是一张图片: 我怎样才能得到这个UI元素的宽度和高度的像素的大小?

Android:动态权限请求设计模式

我在android编程方面很新颖。 我想问一下关于startActivityForResult()和ActivityCompat.requestPermissions()函数及其设计。 我知道这些函数的结果是分别由另一个Activity函数( onActivityResult()和onRequestPermissionsResult() )处理的。 但我不明白为什么这样设计。 尤其是使用ActivityCompat.requestPermissions() 。 为什么我必须控制是否有权限( ContextCompat.checkSelfPermission() ),如果我没有要求它( ActivityCompat.requestPermissions() )。 如果我得到这个许可,然后处理完全不同的function? 我希望有这样的想法: askPermission(Context context, String permission, Runnable permissionGranted, Runnable permissionDenied) 如果我已经有权限,或者如果我从用户那里得到它,它将调用permissionGranted。 有了这个function,我将不得不关心,如果我有权限,或者我没有它。 现在,我必须distonguish如果我有权限,然后做同步任务,或者我没有它,然后在onRequestPermissionsResult() ,我经常做同样的,如果我已经有权限做的“异步”任务。 我的问题是:是否有一些原因,为什么这样设计的权限? 有没有一些function,我上面写了让我只是说如果我有什么做什么,如果我没有权限(以function的方式)做什么? 还是有一些设计模式,以便于处理权限和结果的启动活动? 感谢您的时间和一些解释,如果你知道为什么这个设计很好。