我正在使用新的CoordinatorLayout与AppBarLayout和CollapsingToolbarLayout.在AppBarLayout下面,我有一个带有内容列表的RecyclerView.
我已经验证了当我在列表中上下滚动时,滚动滚动在RecyclerView上工作.但是,我还希望AppBarLayout在扩展期间顺利滚动.
向上滚动以展开CollaspingToolbarLayout时,一旦将手指从屏幕上抬起,滚动会立即停止.如果向上快速向上滚动,有时CollapsingToolbarLayout也会重新折叠.与使用NestedScrollView时,RecyclerView的这种行为似乎有很大不同.
我试图在recyclerview上设置不同的滚动属性,但我无法弄清楚这一点.
这是一个显示一些滚动问题的视频. https://youtu.be/xMLKoJOsTAM
这是一个显示RecyclerView(CheeseDetailActivity)问题的示例. https://github.com/tylerjroach/cheesesquare
以下是使用Chris Banes的NestedScrollView的原始示例. https://github.com/chrisbanes/cheesesquare
android android-appcompat android-layout android-design-library
我有一个RecyclerView + LinearLayoutManger,它使用一个包含聊天消息的适配器.我将聊天消息的数量限制在最近的100个.这个问题是,当我删除旧的聊天时,recyclerview中聊天的滚动位置会发生变化,因为索引0已被删除.我开始编写下面的代码:
int firstVisiblePosition = layoutManager.findFirstVisibleItemPosition();
View v = layoutManager.getChildAt(firstVisiblePosition);
if (firstVisiblePosition > 0 && v != null) {
int offsetTop = //need to get the view offset here;
chatAdapter.notifyDataSetChanged();
if (firstVisiblePosition - 1 >= 0 && chatAdapter.getItemCount() > 0) {
layoutManager.scrollToPositionWithOffset(firstVisiblePosition - 1, offsetTop);
}
}
Run Code Online (Sandbox Code Playgroud)
我认为获得第一个可见项目位置的可见偏移很容易.防爆.如果第一个可见视图是300dp但只有最后200dp是可见的,我想获得100偏移量.
这样我就可以使用scrollToPositionWithOffset(firstVisiblePosition - 1,offsetTop).
我在这里错过了什么吗?这似乎是一个很容易解决的问题,但我还没有看到任何方法可以支持这一点.
我正在使用带有Okhttp拦截器的Retrofit来检测我的oauth令牌是否已过期.如果令牌已过期,我想请求新令牌,再次尝试请求,然后将该响应发送到Retrofit.
这是我的拦截器类:
public class CustomInterceptor implements Interceptor {
@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain.request();
// try the request
Response response = chain.proceed(request);
if (response.body().string().contains(Constants.TOKEN_AUTH_ERROR_MESSAGE)) {
Log.v("retrofit_error", "token expired");
//get current token, create headers
OAuthTokenResponse expiredToken = SharedPreferencesUtil.getOAuthToken();
OAuthTokenResponse newOauthToken = RestClient.getInstance().getTokenService().refreshOauthToken(expiredToken.getRefreshToken());
//store new token, return
SharedPreferencesUtil.saveOAuthToken(newOauthToken);
// create a new request and modify it accordingly using the new token
Request.Builder newRequestBuilder = request.newBuilder()
.removeHeader("Authorization");
Request newRequest = newRequestBuilder.addHeader("Authorization", SharedPreferencesUtil.getOAuthToken().getAccessToken()).build();
// retry the request
return …Run Code Online (Sandbox Code Playgroud) 我知道之前已经问过这个问题,但是,我找不到任何有效的解决方案.
在Nexus 6前置摄像头始终显示在我的应用程序倒置.一些解决方案是使用" setDisplayOrientation",它会在屏幕上翻转相机.但是,我们使用frames收到的视频对视频进行编码onPreviewFrame.
按照Android SDK Documentation,setDisplayOrientation实际上并没有改变byte[]在onPreviewFrame.
这不会影响onPreviewFrame(byte [],Camera),JPEG图片或录制视频中传递的字节数组的顺序.在预览期间不允许调用此方法.
如果无法获得Nexus 6前置摄像头onPreviewFrame框架correct orientation,那么fastest翻转每个框架的方式是什么,而不会出现fps下降.
谢谢!