GithubHelp home page GithubHelp logo

youlookwhat / cloudreader Goto Github PK

View Code? Open in Web Editor NEW
4.9K 160.0 1.3K 93.18 MB

🗡️ 云阅:一款基于网易云音乐UI,使用玩Android Api,Retrofit2 + RxJava2 + Room + MVVM-databinding架构开发的Android客户端

Home Page: https://youlookwhat.github.io/CloudReader

License: Apache License 2.0

Java 92.40% Kotlin 7.60%
android mvvm-databing netease-cloud-music google-material reader wanandroid webview cloudreader rxjava2 retrofit2

cloudreader's Issues

可否说下app的缓存模块

初步看了下,是用ACache类来实现的,么有应用LRU算法。没有使用数据库,这快可否解释下你是怎么设计的呢?

@bindingAdapter呢?

xml中使用自定义属性
android:showBookImg='@{bean.images.large}'(item_book.xml),
android:showMovieImg="@{subjectsBean.images.large}"(item_one.xml)
请问,代码中@bindingAdapter在哪设置的?具体在哪个java文件中,大神,能给说一下不,找不到撒!!!
快瞅我!!

activity调用基类很乱,希望优化下

看过别人的上线项目,他们的activity都会继承baseActivity,做统一处理,比如退出,多界面退出,简化操作方法等,希望楼主也统一下,看着舒服撒~~~

暂时没啥问题

点个赞。
另外remusic是不能用了吗?仿的好,就是代码貌似有点乱。
另外能够认识楼主就好了。

请问Bean模型的BR类是怎么来的呢?

大兄弟,RT,在bean模型中多次使用的BR类是怎么来的?在项目中找不到此类。是 DataBindingHelper.jar 的作用吗?我该怎么在项目中使用 DataBindingHelper.jar 呢?
谢谢~

借你的项目提一下EMUI系统android7.0的BUG,寻求一下解决思路

**问题:**一般都会在onDestory()方法中执行释放内容,但在华为android7.0的手机上面,就会出现onDestory()延迟执行,在自个项目中做了一些数据统计,得出的结论是(AActivity--> BActivity,当B中需要执行大量方法时,A onDestory()会延迟执行(最长10s));
在您的项目启动页中也测试了一下,会延迟执行3s左右;
代码:
`@Override
protected void onPause() {
super.onPause();
time = System.currentTimeMillis();
}

private long time;

@Override
protected void onDestroy() {
    super.onDestroy();
    if (System.currentTimeMillis() - time > 500)
        Log.i("TAG", getLocalClassName() + "destroy超过了500Ms:" + (System.currentTimeMillis() - time));
}`

XRecyclerView报错了。

你好,我把项目里的com.example.xrecyclerview.XRecyclerView拿出来用时,当我设置了这句
setLayoutManager(new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL));
滑动时就报错了,报的是 java.lang.IllegalArgumentException: Pixel distance must be non-negative
如果改为 setLayoutManager(new LinearLayoutManager(getActivity()));
这样又没问题。在网上找了一下,没找到解决方案,请问这个你是怎么解决的呢?

isApp属性

大神,我看ViewBigImageActivity的时候看到你设置了一个isApp属性,并且根据该属性的true和false进行了不同的操作,但是我全局搜索的了一下,感觉全部都是设置的为false。请问是我看漏了么,另外就是他为true 或false的执行的步骤区别有什么吗

关于内存泄漏

举一个例子
listener是匿名内部类会持有UI层比如fragment的引用
如果网络比较慢listener异步请求 又销毁了fragment就会有泄露的风险
共同学习 现在已知的解决方法就是利用弱引用 加静态匿名内部类的方法避免
public void showBanncerPage(final RequestImpl listener) {
Subscription subscription = HttpUtils.getInstance().getDongTingServer().getFrontpage()
.observeOn(AndroidSchedulers.mainThread()).subscribeOn(Schedulers.io())
.subscribe(new Observer() {
@OverRide
public void onCompleted() {
}

                @Override
                public void onError(Throwable e) {
                    listener.loadFailed();
                }

                @Override
                public void onNext(FrontpageBean frontpageBean) {
                    listener.loadSuccess(frontpageBean);
                }
            });
    listener.addSubscription(subscription);
}

app优化

建议好好优化一下,很多地方存在内存泄漏的风险

已更新至V1.1

1.书籍详情页面增加自定义元素共享切换动画,并可简单添加需要支持的详情页
2.代码优化
3.其他

loadHotMovie Failure

HTTP GET https://api.douban.com/v2/movie/in_theaters
END HTTP (no body) END HTTP (no body)
D/Retrofit: javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
在浏览器输入API是有数据返回的,不过客户端解析出现问题

已更新至v1.2

1、更改每日推荐逻辑,使其一定有数据
2、干货集中营的item改为CardView展示
3、代码优化

大神,可否完善下注释

希望大神多添加下注释,能够整理一份流程图。也希望大神能够对框架做一份完整的框架设计,这样更能方便理解。

【已更新至v1.5 】

1、App体积大小从16M降到5.8M!
2、将App里固定的图片以移动到七牛。
3、更改项目主页透明状态栏显示方式。
4、更改每日推荐图片显示规则,使其不重复显示。
5、更换过渡图图片。
6、代码优化;删除多余资源。

我的高斯模糊图片为什么是白色的

唉,搞了半天没搞懂,不知为什么

private void setImgHeaderBg() {
        if (subjectsBean != null) {
            // 高斯模糊背景 原来 参数:12,5  23,4
            Glide.with(this).load(subjectsBean.getImages().getLarge())
                    .error(R.drawable.stackblur_default)
                    
                    .bitmapTransform(new BlurTransformation(this, 23, 4))
                    //.bitmapTransform( new BlurTransformation( mIvTitleHeadBg.getContext(), 25 ) )
                   // .transform(new BlurTransformation(mIvTitleHeadBg.getContext()))
                    .listener(new RequestListener<String, GlideDrawable>() {
                        @Override
                        public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) {
                            Log.d(TAG, "xyz  onException: " + e);
                            return false;
                        }

                        @Override
                        public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
                            mTitleToolBar.setBackgroundColor(Color.TRANSPARENT);
                            mIvTitleHeadBg.setImageAlpha(0);
                            mIvTitleHeadBg.setVisibility(View.VISIBLE);
                            Log.d(TAG, "xyz  onResourceReady: 执行过了没有");
                            return false;
                        }
                    }).into(mIvTitleHeadBg);
        }

    }

求指点,我没用databing 和 RX,但是滑下去的时候,Toolbar有背景图

screenshot_1492916372
screenshot_1492916376

Help

很高兴能阅读到这么优秀的代码,其中有一部分不是很理解,希望作者能提供帮助。

    @ParamNames("count")
    private int count;
    @ParamNames("start")
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface ParamNames {
    String value();
}

这个注解的使用有什么样的作用,应用场景是怎么样的。
希望能提供一些资料供阅读参考。
谢谢。

banner问题求解

哈喽 请问大神首页轮播是遇到什么异常问题啊 我这是当轮播到了第三页或以上 点击底部菜单时 重新切回来 banner会倒回到第二页开始 无语 请问情况与我一样么 分享下 谢谢

怎么运行项目

很抱歉,想知道如何打开您写的开源项目呢,用什么工具实行

怎么没有处理异常的代码!!

Subscription get = HttpClient.Builder.getDouBanService().getBook(mType, mStart, mCount)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer() {}
这段代码如何添加解析{"code":0,"message":"","result":""}的代码
我想在登录的时候根据code状态判断是否登录,大神,求带

ACache疑似bug

Dear,youlookwhat:
最近看了你ACache模块的实现,非常不错。但是在看代码中发现一个问题
1 ACache.remove();
2 ACache.put(),此时恰好需要清楚最久使用的一个文件,调用removeNext;在1中与已经执行f.delete();重复执行是否会报异常;

      这个概率低(我这面没有网络,不知道会否报异常,如没有请你忽视)

databinding不存在

Error:(23, 51) 错误: 程序包com.example.jingbin.cloudreader.databinding不存在
小白求解 这个包在哪里
1496819698 1

关于样式中的toolbarItemBackground

你好~ 我有个疑问,在项目的values/styles.xml 样式文件中,有以下:

   <!--titleBar样式-->
    <style name="ToolbarStyle" parent="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
        <item name="actionBarItemBackground">@drawable/toolbarItemBackground</item>
        <item name="selectableItemBackground">@drawable/toolbarItemBackground</item>
        <item name="titleTextAppearance">@style/ToolBar.Title</item>
        <item name="subtitleTextAppearance">@style/Toolbar.SubTitle</item>
        <item name="android:windowNoTitle">true</item>
        <!--<item name="android:textSize">18sp</item> &lt;!&ndash;  搞掂字体大小&ndash;&gt;-->
    </style>

我想请问的是,其中引用 @drawable/toolbarItemBackground 这个配置文件,我在项目中找不到,搜索不到答案,上来请教一下,这是怎么来的呢? 我原样照抄的话会报错,是我哪儿错漏了吗?
谢谢了~

item_one.xml中的一处疑问?

我自己练习了大神的代码,发现这行总是提示bug,删除这行就正常运行,
位置:app--res--item_one.xml--的:android:showMovieImg="@{subjectsBean.images.large}"
提示bug:
Error:Execution failed for task ':app:compileDebugJavaWithJavac'.

java.lang.RuntimeException: Found data binding errors.
****/ data binding error ****msg:Cannot find the setter for attribute 'android:showMovieImg' with parameter type java.lang.String on android.widget.ImageView.
file:E:\as_workspace\ISS\app\src\main\res\layout\item_one.xml
loc:35:40 - 35:64
****\ data binding error ****
求解答!!!

还有一处疑惑:databindinghelper.jar包为啥子放在工程下,而不放在module的libs下,求解答!!

BR类找不到

大神,能给你说说bean中的BR类是怎么生成的么,
我的登录步骤是:
(1)先按照你的bean模板创建自己的Bean(get set)
(2)用retrofit异步调用接口:
Subscription sp = HttpClient.Builder.loginService().login(user.userName, user.password)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer() {...}
可是rebuild/clean 都提示该bean的BR找不到。还缺什么?

看这里!看这里!!!!!

运行报错,我的jdk是1.8版本

image

要运行的时候一直报上面的错误,好像和DataBindingHelper.jar 包有关系

错误代码:
Error:PARSE ERROR:
Error:unsupported class file version 52.0
Error:...while parsing DataAction.class

Error:Execution failed for task ':app:transformClassesWithDexForDebug'.

com.android.build.api.transform.TransformException: java.lang.RuntimeException: java.lang.RuntimeException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: java.lang.UnsupportedOperationException

rxBux的bug

你好!我在运行代码的时候,针对
// 首页跳转到电影栏
public static final int JUMP_TYPE_TO_ONE = 1;
的这个事件,做了测试,发现由于rxBus的bug,会导致进入多少次MainActivity,就会多出多少次该事件的响应:即,如果这个事件被post一次,而进入了MainActivity 3次,那么call事件变调起3次。
应该是由于在退出 MainActivity的时候,没有对其进行释放导致的。
但是我对rxBus理解还不够深入,请问如果释放掉呢

【已更新至V1.8.2】

1、[修复] 首页轮播图显示异常问题
2、[修复] 干货订制页,刷新内容到底无内容后切换到其他类别,无法上拉加载的情况

小米4.4.4手机运行不了

02-09 09:14:27.437 9294-9294/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.jingbin.cloudreader, PID: 9294
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.jingbin.cloudreader/com.example.jingbin.cloudreader.ui.TransitionActivity}: android.content.res.Resources$NotFoundException: File res/drawable/abc_vector_test.xml from drawable resource ID #0x7f020052
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2190)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2239)
at android.app.ActivityThread.access$800(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1202)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5047)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:806)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:622)
at dalvik.system.NativeStart.main(Native Method)
Caused by: android.content.res.Resources$NotFoundException: File res/drawable/abc_vector_test.xml from drawable resource ID #0x7f020052
at android.content.res.Resources.loadDrawable(Resources.java:2120)
at android.content.res.MiuiResources.loadDrawable(MiuiResources.java:320)
at android.content.res.Resources.getDrawable(Resources.java:710)
at android.support.v4.content.ContextCompat.getDrawable(ContextCompat.java:374)
at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:200)
at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:188)
at android.support.v7.widget.AppCompatDrawableManager.checkVectorDrawableSetup(AppCompatDrawableManager.java:723)
at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:193)
at android.support.v7.widget.TintTypedArray.getDrawableIfKnown(TintTypedArray.java:81)
at android.support.v7.app.AppCompatDelegateImplBase.(AppCompatDelegateImplBase.java:127)
at android.support.v7.app.AppCompatDelegateImplV9.(AppCompatDelegateImplV9.java:147)
at android.support.v7.app.AppCompatDelegateImplV11.(AppCompatDelegateImplV11.java:27)
at android.support.v7.app.AppCompatDelegateImplV14.(AppCompatDelegateImplV14.java:53)
at android.support.v7.app.AppCompatDelegate.create(AppCompatDelegate.java:205)
at android.support.v7.app.AppCompatDelegate.create(AppCompatDelegate.java:185)
at android.support.v7.app.AppCompatActivity.getDelegate(AppCompatActivity.java:525)
at android.support.v7.app.AppCompatActivity.onCreate(AppCompatActivity.java:74)
at com.example.jingbin.cloudreader.ui.TransitionActivity.onCreate(TransitionActivity.java:29)
at android.app.Activity.performCreate(Activity.java:5249)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2154)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2239) 
at android.app.ActivityThread.access$800(ActivityThread.java:141) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1202) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:136) 
at android.app.ActivityThread.main(ActivityThread.java:5047) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:515) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:806) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:622) 
at dalvik.system.NativeStart.main(Native Method) 
Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #17: invalid drawable tag vector
at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:933)
at android.graphics.drawable.Drawable.createFromXml(Drawable.java:877)
at android.content.res.Resources.loadDrawable(Resources.java:2116)
at android.content.res.MiuiResources.loadDrawable(MiuiResources.java:320) 
at android.content.res.Resources.getDrawable(Resources.java:710) 
at android.support.v4.content.ContextCompat.getDrawable(ContextCompat.java:374) 
at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:200) 
at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:188) 
at android.support.v7.widget.AppCompatDrawableManager.checkVectorDrawableSetup(AppCompatDrawableManager.java:723) 
at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:193) 
at android.support.v7.widget.TintTypedArray.getDrawableIfKnown(TintTypedArray.java:81) 
at android.support.v7.app.AppCompatDelegateImplBase.(AppCompatDelegateImplBase.java:127) 
at android.support.v7.app.AppCompatDelegateImplV9.(AppCompatDelegateImplV9.java:147) 
at android.support.v7.app.AppCompatDelegateImplV11.(AppCompatDelegateImplV11.java:27) 
at android.support.v7.app.AppCompatDelegateImplV14.(AppCompatDelegateImplV14.java:53) 
at android.support.v7.app.AppCompatDelegate.create(AppCompatDelegate.java:205) 
at android.support.v7.app.AppCompatDelegate.create(AppCompatDelegate.java:185) 
at android.support.v7.app.AppCompatActivity.getDelegate(AppCompatActivity.java:525) 
at android.support.v7.app.AppCompatActivity.onCreate(AppCompatActivity.java:74) 
at com.example.jingbin.cloudreader.ui.TransitionActivity.onCreate(TransitionActivity.java:29) 
at android.app.Activity.performCreate(Activity.java:5249) 
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2154) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2239) 
at android.app.ActivityThread.access$800(ActivityThread.java:141) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1202) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:136) 
at android.app.ActivityThread.main(ActivityThread.java:5047) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:515) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:806) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:622) 
at dalvik.system.NativeStart.main(Native Method) 

【已更新至V1.8.0】

  • 1、[新增] 侧边栏增加“登录GitHub账号”和“退出应用”功能
  • 2、[新增] WebView新增“分享到”、“复制链接”、“打开链接”功能
  • 3、[新增] 使其系统更改字体无效
  • 4、[改进] 网络请求更换成retrofit 2.x
  • 5、[改进] 首页轮播图更换显示链接
  • 6、[优化] 进入主界面动画优化
  • 7、[优化] 兼容至7.0、升级关联库和代码优化等

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.