我想用延迟(20s)的animatoin创建聊天列表.在这段时间之后,每个项目都应该消失,同时淡出动画.
如果我RecyclerView不使用滚动就没问题.我重写适配器中的方法,一切正常.
@Override
public void onViewAttachedToWindow(final ViewHolder holder) {
if(holder.alpha == null) {
holder.alpha = ObjectAnimator.ofFloat(holder.itemView, View.ALPHA, 1f, 0f);
holder.alpha.setDuration(300);
holder.alpha.setStartDelay(20000);
holder.alpha.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animation) {
}
@Override
public void onAnimationEnd(Animator animation) {
holder.profilePic.setEnabled(false);
holder.messageContainer.setEnabled(false);
if (items.size() > 0) {
items.remove(0);
notifyItemRemoved(0);
}
}
@Override
public void onAnimationCancel(Animator animation) {
}
@Override
public void onAnimationRepeat(Animator animation) {
}
});
holder.alpha.start();
}
}
@Override
public void onViewDetachedFromWindow(ViewHolder holder) {
if(holder.alpha != null) {
holder.alpha.cancel();
holder.alpha …Run Code Online (Sandbox Code Playgroud) 我有问题.改造是否支持使用SNI的SSL?这是一种允许服务器根据请求的主机名返回不同SSL证书的技术,允许在共享主机方案中使用SSL.
我有关系:
(Track) -- M:1 --> (TrackChannel) <--1:M (Channel)
(User) -- M:1 --> (UserChannel) <--1:M (Channel)
Channel模型包括对象Track作为current_track_id一对一的关系。Track并且Channel通过多对多相关TrackChannelUser并且Channel通过多对多相关UserChannel/* Channel.js: */
module.exports = function(sequelize, DataTypes) {
return sequelize.define('channel', {
id: {
allowNull: false,
primaryKey: true,
type: DataTypes.UUID,
defaultValue: DataTypes.UUIDV4,
},
current_counter: {
type: DataTypes.INTEGER,
allowNull: false,
defaultValue: 0
},
track_counter: {
type: DataTypes.INTEGER,
allowNull: false,
defaultValue: 0
},
track_id: {
type: DataTypes.STRING,
allowNull: true,
references: {
model: …Run Code Online (Sandbox Code Playgroud) 我有两个Observables。observableDisconnectContact负责调用 API 请求删除联系人并正常工作。observableDeleteContact如果联系人从数据库中删除,则第二个发出 true 或 false。我用greeDao.
Observable<Boolean> observableDisconnectContact = apiClient.observableDisconnectContact(contactModel.getId())
Observable<Boolean> observableDeleteContact = contactModelRxDao.deleteByKey(contactModel.getDbId())
Run Code Online (Sandbox Code Playgroud)
我想将两者结合起来,但第二个 observable 应该在第一个完成时开始并返回 true。我考虑使用concat()和first()。但我必须知道两个流都发出结果是真的。所以我使用combineLatest()or zip()。但这不是一个好主意,因为两个流都在同一时间运行。我注意到first()运算符不适用于zip()and combineLatest()。
Observables如果第一次返回 false 并且两个流的结果应该是一个结果,我如何将第二个开始的位置与第一个流之后的位置结合起来。
Observable.combineLatest(observableDisconnectContact, observableDeleteContact, new Func2<Boolean, Boolean, Boolean>() {
@Override
public Boolean call(Boolean isDisconnectSuccess, Boolean isRemoveSuccess) {
return isDisconnectSuccess && isRemoveFromDatabaseSuccess;
}
}).subscribe(new Subscriber<Boolean>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
} …Run Code Online (Sandbox Code Playgroud) 由于我已将 Android Studio 从 3.4 更新到 3.5,因此我在项目中遇到了错误。错误列表如下,似乎 proguard 文件中缺少规则。
但是一旦我提出了这些规则:
-dontnote androidx.**
-dontwarn androidx.**
Run Code Online (Sandbox Code Playgroud)
该项目正在无限构建,不会完成。我等了 30-40 分钟,根本没有结果。(通常项目构建时间为4-5min)
Note: there were 6 duplicate class definitions.
(http://proguard.sourceforge.net/manual/troubleshooting.html#duplicateclass)
Note: the configuration refers to the unknown class 'com.amazonaws.auth.AWS4Signer'
Warning: androidx.appcompat.widget.ActivityChooserView: can't find referenced method 'void saveAttributeDataForStyleable(android.content.Context,int[],android.util.AttributeSet,android.content.res.TypedArray,int,int)' in program class androidx.appcompat.widget.ActivityChooserView
Warning: androidx.appcompat.widget.AppCompatTextViewAutoSizeHelper: can't find referenced method 'boolean isHorizontallyScrollable()' in library class android.widget.TextView
Warning: androidx.appcompat.widget.AppCompatTextViewAutoSizeHelper: can't find referenced method 'android.text.TextDirectionHeuristic getTextDirectionHeuristic()' in library class android.widget.TextView
Warning: androidx.appcompat.widget.ButtonBarLayout: can't find referenced method 'void saveAttributeDataForStyleable(android.content.Context,int[],android.util.AttributeSet,android.content.res.TypedArray,int,int)' in program …Run Code Online (Sandbox Code Playgroud) 我有项目,Kotlin我已经将Android Studio更新到2.3.3和gradle3.3并将工具构建到25.3.1.在构建期间,我收到此错误:
Caused by: java.lang.UnsupportedOperationException: The "android" command is no longer included in the SDK. Any references to it (e.g. by third-party plugins) should be removed.
at com.android.SdkConstants.androidCmdName(SdkConstants.java:1947)
at com.android.SdkConstants$androidCmdName$0.callStatic(Unknown Source)
at com.jakewharton.sdkmanager.internal.AndroidCommand$Real.<init>(AndroidCommand.groovy:21)
at com.jakewharton.sdkmanager.internal.PackageResolver.resolve(PackageResolver.groovy:22)
at com.jakewharton.sdkmanager.internal.PackageResolver$resolve.call(Unknown Source)
at com.jakewharton.sdkmanager.SdkManagerPlugin$_apply_closure2$_closure3.doCall(SdkManagerPlugin.groovy:44)
at com.jakewharton.sdkmanager.SdkManagerPlugin$_apply_closure2$_closure3.doCall(SdkManagerPlugin.groovy)
at com.jakewharton.sdkmanager.SdkManagerPlugin.time(SdkManagerPlugin.groovy:51)
at com.jakewharton.sdkmanager.SdkManagerPlugin$_apply_closure2.doCall(SdkManagerPlugin.groovy:43)
at org.gradle.listener.ClosureBackedMethodInvocationDispatch.dispatch(ClosureBackedMethodInvocationDispatch.java:40)
at org.gradle.listener.ClosureBackedMethodInvocationDispatch.dispatch(ClosureBackedMethodInvocationDispatch.java:25)
at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:44)
at org.gradle.internal.event.BroadcastDispatch.dispatch(BroadcastDispatch.java:79)
at org.gradle.internal.event.BroadcastDispatch.dispatch(BroadcastDispatch.java:30)
at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
at com.sun.proxy.$Proxy16.afterEvaluate(Unknown Source)
at org.gradle.configuration.project.LifecycleProjectEvaluator.notifyAfterEvaluate(LifecycleProjectEvaluator.java:82)
... 56 more
Run Code Online (Sandbox Code Playgroud)
Gralde文件:
buildscript {
repositories {
maven { url 'https://maven.fabric.io/public' } …Run Code Online (Sandbox Code Playgroud) android build-tools kotlin android-studio android-gradle-plugin
我创建了一个简单的项目来检查RxAlamofire和AlamofireObjectMapper之类的库。我有ApiService一个端点很简单,PHP脚本可以正常工作并返回JSON。我想打电话给recipeURL我,我用flatMap运算符来获取响应,并将其提供Mapper给应该获取Recipe对象的位置。我该怎么做?
还是有其他方法?
class ApiService: ApiDelegate{
let recipeURL = "http://example.com/test/info.php"
func getRecipeDetails() -> Observable<Recipe> {
return request(.get, recipeURL)
.subscribeOn(MainScheduler.asyncInstance)
.observeOn(MainScheduler.instance)
.flatMap({ request -> Observable<Recipe> in
let json = ""//request.??????????? How to get JSON response?
guard let recipe: Recipe = Mapper<Recipe>().map(JSONObject: json) else {
return Observable.error(ApiError(message: "ObjectMapper can't mapping", code: 422))
}
return Observable.just(recipe)
})
}
}
Run Code Online (Sandbox Code Playgroud) android ×4
alamofire ×1
animation ×1
build-tools ×1
gradle ×1
greendao ×1
kotlin ×1
node.js ×1
postgresql ×1
proguard ×1
retrofit ×1
retrofit2 ×1
rx-android ×1
rx-java ×1
rx-swift ×1
sequelize.js ×1
swift ×1
swift3 ×1