Android: add js dispatcher for refresh widget
This commit is contained in:
parent
52e5977d20
commit
aa844407b4
@ -1,15 +1,20 @@
|
||||
package pub.doric.refresh;
|
||||
|
||||
import com.github.pengfeizhou.jscore.JSDecoder;
|
||||
import com.github.pengfeizhou.jscore.JSObject;
|
||||
import com.github.pengfeizhou.jscore.JSValue;
|
||||
import com.github.pengfeizhou.jscore.JavaValue;
|
||||
|
||||
import java.util.concurrent.Callable;
|
||||
|
||||
import pub.doric.DoricContext;
|
||||
import pub.doric.async.AsyncResult;
|
||||
import pub.doric.extension.bridge.DoricMethod;
|
||||
import pub.doric.extension.bridge.DoricPlugin;
|
||||
import pub.doric.extension.bridge.DoricPromise;
|
||||
import pub.doric.shader.SuperNode;
|
||||
import pub.doric.shader.ViewNode;
|
||||
import pub.doric.utils.DoricJSDispatcher;
|
||||
|
||||
/**
|
||||
* @Description: pub.doric.pullable
|
||||
@ -25,6 +30,8 @@ public class RefreshableNode extends SuperNode<DoricSwipeLayout> implements Pull
|
||||
private String mHeaderViewId;
|
||||
private ViewNode<?> mHeaderNode;
|
||||
|
||||
private final DoricJSDispatcher jsDispatcher = new DoricJSDispatcher();
|
||||
|
||||
public RefreshableNode(DoricContext doricContext) {
|
||||
super(doricContext);
|
||||
}
|
||||
@ -184,6 +191,7 @@ public class RefreshableNode extends SuperNode<DoricSwipeLayout> implements Pull
|
||||
|
||||
@Override
|
||||
public void startAnimation() {
|
||||
jsDispatcher.clear();
|
||||
if (mHeaderNode != null) {
|
||||
mHeaderNode.callJSResponse("startAnimation");
|
||||
}
|
||||
@ -191,15 +199,21 @@ public class RefreshableNode extends SuperNode<DoricSwipeLayout> implements Pull
|
||||
|
||||
@Override
|
||||
public void stopAnimation() {
|
||||
jsDispatcher.clear();
|
||||
if (mHeaderNode != null) {
|
||||
mHeaderNode.callJSResponse("stopAnimation");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPullingDistance(float rotation) {
|
||||
public void setPullingDistance(final float rotation) {
|
||||
if (mHeaderNode != null) {
|
||||
mHeaderNode.callJSResponse("setPullingDistance", rotation);
|
||||
jsDispatcher.dispatch(new Callable<AsyncResult<JSDecoder>>() {
|
||||
@Override
|
||||
public AsyncResult<JSDecoder> call() throws Exception {
|
||||
return mHeaderNode.callJSResponse("setPullingDistance", rotation);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -84,4 +84,8 @@ public class DoricJSDispatcher implements AsyncResult.Callback<JSDecoder> {
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
public void clear() {
|
||||
blocks.clear();
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user