美文网首页
MVVM实现一个小说APP(一)

MVVM实现一个小说APP(一)

作者: ryanxun | 来源:发表于2021-07-19 13:08 被阅读0次
嘿,今天的你过的还好吗

突发奇想昂,我记得之前写过一个小说的阅读器,仿制的QQ阅读...但是过于久远,很多东西都是网上趴出来的....属于自己的东西很少...那从今天开始,我就自己写一个小说阅读器,每个步骤,我都在简书上写出来.包括思路啊什么之类的...本来想用Kt写的...我怕我写一半呢.kt用烦了...断更了.所以java...MVVM不用说了...必用.也方便我调取东西.网络层 retorfit+rxjava...版本管理Git(没初步完成之前.我可能不会放出来...)至于app名字...没太想好...反正先做吧.那天想好了再说...不是很重要...整个流程我会努力按照标准来进行.命名啊.规范啊之类的...当然,我努力...

啊对!因为整个流程app都得我自己来想昂.进度慢也是正常,毕竟本人也有班要上,后台接口数据库也都得自己上...很多东西也是需要学习来找...当然.也欢迎有兴趣小伙伴私信加入昂...不为别的.就为了喜爱...我初步安排是这样...先画界面,感觉差不多了再去找后台...没有美工昂...好不好看就凭感觉.或者说谁介绍一个我也不是不行

那么第一天,先实现一个引导页,先说思路昂...
害.闪屏页.国家整改.不放广告不就完了....
1.铺满全屏的一个图片或者动图/实在丑加个滑动也不是不可.可以慢慢调
2.右上角加一个圆钮倒计时跳过吧.在整个边框渐变.完美
3.自己给自己打广告应该不违规.所以我打算加个点击事件,跳转一下自己的书城啥的.至于书得去找人谈...那等以后再说
4.文案复制,我打算在首页加一段话.点击复制,算是每天一句毒鸡汤

首先架构啥的就略过了,,,没个人风格都不同...我直接给大家看一下得了


项目框架

今天主要就是Splash功能实现

import android.annotation.SuppressLint;
import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.Context;
import android.content.Intent;
import android.os.CountDownTimer;
import android.view.View;

import com.blankj.utilcode.util.ToastUtils;
import com.xql.book.MainActivity;
import com.xql.book.R;
import com.xql.book.basic.BaseActivity;
import com.xql.book.bean.SplashBean;
import com.xql.book.databinding.ActivitySplashBinding;
import com.xql.book.txt.Phrase;
import com.xql.book.vm.SplashVM;

public class SplashActivity extends BaseActivity<ActivitySplashBinding, SplashVM> {
    //SplashBean实例化
    private final SplashBean splashBean = new SplashBean();
    //闪屏页短语
    private final Phrase phrase = new Phrase();
    //是否点击跳过
    private Boolean isSkip = false;

    @Override
    protected int layoutId() {
        return R.layout.activity_splash;
    }

    @Override
    protected void initData() {
        //点击事件
        mBinding.setOnClickLister(SplashActivity.this);
        //获取短语
        splashBean.setPhrase(phrase.PhraseText());
        //总时间
        int TOTAL_TIME = 3000;
        //间隔时间
        int INTERVAL_TIME = 1000;
        //闪屏页倒计时
        TimeCount time = new TimeCount(TOTAL_TIME, INTERVAL_TIME);
        time.start();
    }

    /**
     * 点击事件
     *
     * @param view
     */
    @SuppressLint("NonConstantResourceId")
    public void OnSingleClickListener(View view) {
        switch (view.getId()) {
            case R.id.tv_countDown:
                isSkip = true;
                Intent intent = new Intent(SplashActivity.this, MainActivity.class);
                startActivity(intent);
                finish();
                break;
            case R.id.tv_phrase:
                getPhraseText((String) mBinding.tvPhrase.getText());
                ToastUtils.showLong("复制成功");
                break;
        }
    }


    /**
     * 倒计时方法封装
     */
    class TimeCount extends CountDownTimer {

        public TimeCount(long millisInFuture, long countDownInterval) {
            super(millisInFuture, countDownInterval);
        }

        @Override
        public void onTick(long l) {
            splashBean.setCountDown("跳过(" + l / 1000 + ")");
            mBinding.setSplash(splashBean);
        }

        @Override
        public void onFinish() {
            if (!isSkip){
                Intent intent = new Intent(SplashActivity.this, MainActivity.class);
                startActivity(intent);
                finish();
            }

        }
    }

    /**
     * 剪切板管理器
     */
    public void getPhraseText(String phrasetext){
        //获取剪贴板管理器
        ClipboardManager cm = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
        //创建普通字符型clipdata
        ClipData mClipData = ClipData.newPlainText("phrase",phrasetext);
        cm.setPrimaryClip(mClipData);
    }
}

好了,今天就先这样...然后给今天成果贴出来

Splash页面
复制情况

.......昨晚又改了点其他东西,加了个每天只第一次时候显示引导页

  //判断是否写入istoday
        String istoday = SPUtils.getInstance().getString("istoday");
        if (!istoday.equals("")) {
            //判断是否今天
            boolean today = TimeUtils.isToday(istoday);
            if (today) {
                LogUtils.e("是");
                isSkip = true;
                Intent intent = new Intent(SplashActivity.this, MainActivity.class);
                startActivity(intent);
                finish();
            } else {
                LogUtils.e("不是");
                String nowString = TimeUtils.getNowString();
                SPUtils.getInstance().put("istoday", nowString);
            }
        } else {
            String nowString = TimeUtils.getNowString();
            SPUtils.getInstance().put("istoday", nowString);
        }

没更新或者频繁更新的时候都是在认真生活

相关文章

  • MVVM实现一个小说APP(一)

    嘿,今天的你过的还好吗 突发奇想昂,我记得之前写过一个小说的阅读器,仿制的QQ阅读...但是过于久远,很多东西都是...

  • MVVM实现一个小说APP(三)

    嘿,今天的你过的还好吗 这几天没更新是因为学习咋写接口去了,研究了一一系列的 用nodejs 写的接口,自己电脑当...

  • MVVM实现一个小说APP(二)

    嘿,今天的你过的还好吗 昨天写完没更新,我把ui啥的搞了一下...虽然不是很美丽,但是也算是好看了那么一口口 现在...

  • 搭建app框架-MVVM+RAC+路由

    搭建app框架-MVVM+RAC+路由 项目的介绍 项目使用了ReactiveCocoa框架,实现了MVVM架构,...

  • iOS-MVVM模式

    公司最近开始新的app项目,一直都在看mvvm,所以准备开发一个mvvm模式的app。 什么是MVVM? mvvm...

  • 学习Kotlin实现一个简易天气APP(MVVM+JetPack

    学习Kotlin实现一个简易天气APP(MVVM+JetPack组件+Databinding) 因为最近在学习Ko...

  • MVVM框架原理浅析

    MVVM 是一个 Android MVVM 框架,基于谷歌 dataBinding 技术实现。dataBindin...

  • DataBinding做了什么

    没有MVVM!没有MVVM!没有MVVM! 一、dataBinding用法 app的build.gradle中添加...

  • MVC/MVVM

    实现 MVC 和 MVVM 解释Class Diagram.png MVVM 的一个小例子(ReactiveCoc...

  • 安卓架构简谈

    DataBinding是一个实现数据和UI绑定的框架,是实现MVVM模式的工具,而MVVM中的VM(ViewMod...

网友评论

      本文标题:MVVM实现一个小说APP(一)

      本文链接:https://www.haomeiwen.com/subject/dmvcmltx.html