Commit ed6ea768 by mReturn

添加学习模块

parent ad140f20
Showing with 1670 additions and 76 deletions
......@@ -110,6 +110,9 @@ dependencies {
if (isSaleModule.toBoolean()) {
api project(':saleCenter')
}
if (isLearnModule.toBoolean()) {
api project(':learnCenter')
}
// compile(name: 'orderCenter-debug', ext: 'aar')
// compile(name: 'userCenter-debug', ext: 'aar')
// compile(name: 'messageCenter-debug', ext: 'aar')
......
......@@ -146,7 +146,9 @@
<activity
android:name=".ui.MainActivity"
android:launchMode="singleTask"
android:screenOrientation="portrait" />
android:screenOrientation="portrait"
android:configChanges="orientation|screenSize|keyboardHidden"
/>
<activity
android:name="com.dayu.bigfish.ui.ManagerActivity"
android:launchMode="singleTask"
......
......@@ -3,6 +3,7 @@ package com.dayu.bigfish.ui;
import com.dayu.base.ui.activity.DataBindingActivity;
import com.dayu.bigfish.AboutUsBinding;
import com.dayu.bigfish.R;
import com.dayu.utils.AppUtils;
/**
* 关于我们
......@@ -19,6 +20,8 @@ public class AboutUsActivity extends DataBindingActivity<AboutUsBinding> {
@Override
public void initView() {
mBind.ivBack.setOnClickListener(o -> finish());
String versionCode = AppUtils.getPackageNum();
mBind.tvVersion.setText(getString(R.string.tv_now_version)+versionCode);
}
}
......@@ -3,7 +3,6 @@ package com.dayu.bigfish.ui;
import android.app.NotificationManager;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
......@@ -20,7 +19,8 @@ import android.widget.TextView;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.alibaba.android.arouter.launcher.ARouter;
import com.bigfish.salecenter.event.SaleTabNumEvent;
import com.dayu.event.LearnTabNumEvent;
import com.dayu.event.SaleTabNumEvent;
import com.bigfish.salecenter.ui.fragment.HomeSaleFragment;
import com.dayu.base.api.Api;
import com.dayu.base.api.DownloadService;
......@@ -35,16 +35,14 @@ import com.dayu.bigfish.api.protocol.VersionInfo;
import com.dayu.bigfish.databinding.ActivityMainBinding;
import com.dayu.bigfish.presenter.main.MainContract;
import com.dayu.bigfish.presenter.main.MainPresenter;
import com.dayu.bigfish.ui.fragment.HomeFirstTabFragment;
import com.dayu.bigfish.ui.service.LocationService;
import com.dayu.bigfish.utils.HxManager;
import com.dayu.common.BaseApplication;
import com.dayu.common.Constants;
import com.dayu.event.DownloadBean;
import com.dayu.event.UserInfo;
import com.dayu.learncenter.ui.fragment.HomeLearnFragment;
import com.dayu.location.base.LocationUtils;
import com.dayu.managercenter.ui.fragment.ManagerFragment;
import com.dayu.message.ui.fragment.HomeMessageFragment;
import com.dayu.order.common.TabNumEvent;
import com.dayu.order.ui.activity.OrderDetailsActivity;
import com.dayu.order.ui.activity.ReceivingActivity;
......@@ -54,12 +52,10 @@ import com.dayu.provider.event.RefreshReceivingNum;
import com.dayu.provider.event.SwtichFragment;
import com.dayu.provider.router.RouterPath;
import com.dayu.usercenter.ui.activity2.BusinessTypeActivity;
import com.dayu.usercenter.ui.fragment.HomePersonFragment;
import com.dayu.usercenter.ui.fragment.HomeUserFragment;
import com.dayu.utils.LogUtils;
import com.dayu.utils.SPUtils;
import com.dayu.utils.TimeUtils;
import com.dayu.utils.ToastUtils;
import com.dayu.utils.UserManager;
import com.dayu.utils.badgeNumberManger.BadgeNumberManager;
import com.dayu.widgets.BadgeView;
......@@ -73,8 +69,9 @@ import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import java.io.File;
import java.util.HashMap;
import java.util.Map;
import cn.jzvd.Jzvd;
import cn.jzvd.JzvdStd;
/**
* Created by luofan
......@@ -92,6 +89,7 @@ public class MainActivity extends BaseActivity<MainPresenter, ActivityMainBindin
// private HomeFirstTabFragment firstFragment;
private HomeSaleFragment saleFragment;
private HomeOrderFragment secondFragment;
private HomeLearnFragment learnFragment;
// private HomeMessageFragment thirdFragment;
// private HomePersonFragment fourFragment;
private HomeUserFragment fourFragment;
......@@ -99,6 +97,7 @@ public class MainActivity extends BaseActivity<MainPresenter, ActivityMainBindin
private BadgeView mBadgeView;
private BadgeView mOrderBadgeView;
private BadgeView mSaleBadgeView;
private BadgeView mLearnBadgeView;
@Override
public int getLayoutId() {
......@@ -119,24 +118,25 @@ public class MainActivity extends BaseActivity<MainPresenter, ActivityMainBindin
MobclickAgent.onEvent(this, "go_home");
saleFragment = HomeSaleFragment.newInstance();
secondFragment = HomeOrderFragment.newInstance();
learnFragment = new HomeLearnFragment();
fourFragment = HomeUserFragment.newInstance();
// thirdFragment = HomeMessageFragment.newInstance();
// fourFragment = HomePersonFragment.newInstance();
fourFragment = HomeUserFragment.newInstance();
if (UserManager.getInstance().getRole() == Constants.ENGINEER) {
// if (UserManager.getInstance().getRole() == Constants.ENGINEER) {
// firstFragment = HomeFirstTabFragment.newInstance();
// mFragments = new Fragment[]{firstFragment, secondFragment, thirdFragment, fourFragment};
// mFirstPositon = 1;
mFragments = new Fragment[]{saleFragment, secondFragment, fourFragment};
mFragments = new Fragment[]{saleFragment, secondFragment, learnFragment,fourFragment};
mFirstPositon = 0;
} else if (UserManager.getInstance().getRole() == Constants.MANAGER_ENGINEER) {
// } else if (UserManager.getInstance().getRole() == Constants.MANAGER_ENGINEER) {
// managerFragment = ManagerFragment.newInstance();
// mFragments = new Fragment[]{managerFragment, secondFragment, thirdFragment, fourFragment};
mFragments = new Fragment[]{saleFragment, secondFragment, fourFragment};
mFirstPositon = 0;
mBind.tabFirst.setText(getString(R.string.send_order));
}
// mFragments = new Fragment[]{saleFragment, secondFragment, learnFragment,fourFragment};
// mFirstPositon = 0;
// mBind.tabFirst.setText(getString(R.string.send_order));
// }
// mTabs = new TextView[]{mBind.tabFirst, mBind.tabSecond, mBind.tabThird, mBind.tabFour};
mTabs = new TextView[]{mBind.tabSale, mBind.tabSecond, mBind.tabFour};
mTabs = new TextView[]{mBind.tabSale, mBind.tabSecond,mBind.tabLearn, mBind.tabFour};
addFragment();
initListener();
doAction(getIntent());
......@@ -178,7 +178,8 @@ public class MainActivity extends BaseActivity<MainPresenter, ActivityMainBindin
}
});
mBind.tabFour.setOnClickListener(o -> showHideFragment(2, mPosition));
mBind.tabLearn.setOnClickListener(o -> showHideFragment(2, mPosition));
mBind.tabFour.setOnClickListener(o -> showHideFragment(3, mPosition));
}
//提示去认证身份
......@@ -225,6 +226,7 @@ public class MainActivity extends BaseActivity<MainPresenter, ActivityMainBindin
*/
private void showHideFragment(int showPosition, int hidePosition) {
if (showPosition == hidePosition) return;
if (showPosition != 2) JzvdStd.goOnPlayOnPause();
mFragmentManger.beginTransaction()
.hide(mFragments[hidePosition])
.show(mFragments[showPosition])
......@@ -314,6 +316,22 @@ public class MainActivity extends BaseActivity<MainPresenter, ActivityMainBindin
mSaleBadgeView.setText("99+");
}
}
@Subscribe
public void changeLearnNum(LearnTabNumEvent event) {
if (event.num <= 0)
return;
if (mLearnBadgeView == null) {
mLearnBadgeView = new BadgeView(this);
mLearnBadgeView.setTargetView(mBind.tabLearn);
mLearnBadgeView.setBadgeGravity(Gravity.CENTER | Gravity.TOP);
mLearnBadgeView.setBadgeMargin(20, 0, 0, 0);
}
if (event.num < 100) {
mLearnBadgeView.setText(event.num + "", TextView.BufferType.NORMAL);
} else {
mLearnBadgeView.setText("99+");
}
}
@Override
......@@ -470,10 +488,12 @@ public class MainActivity extends BaseActivity<MainPresenter, ActivityMainBindin
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
if (!Jzvd.backPress()) {
// 不退出程序,进入后台
moveTaskToBack(true);
return true;
}
}
return super.onKeyDown(keyCode, event);
}
......
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@mipmap/img_tab_learn_selected" android:state_selected="true"/>
<item android:drawable="@mipmap/img_tab_learn"/>
</selector>
\ No newline at end of file
......@@ -79,6 +79,19 @@
android:textColor="#585858"
android:textSize="10sp" />
<TextView
android:id="@+id/tab_learn"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_weight="1"
android:drawablePadding="2dp"
android:drawableTop="@drawable/tab_learn_selector"
android:gravity="center"
android:text="@string/learn_str"
android:textColor="#585858"
android:textSize="10sp" />
<LinearLayout
android:visibility="gone"
android:id="@+id/tab_get_order"
......
......@@ -52,7 +52,7 @@
android:layout_width="@dimen/dp_205"
android:layout_height="@dimen/dp_205"
android:layout_centerHorizontal="true"
android:layout_marginTop="@dimen/dp_57"
android:layout_marginTop="40dp"
android:src="@mipmap/about_us"
/>
......@@ -82,12 +82,22 @@
android:textSize="@dimen/sp_15"
/>
<TextView
android:id="@+id/tv_version"
style="@style/common_text_style"
android:layout_below="@id/about_main_text"
android:layout_centerHorizontal="true"
android:layout_marginTop="@dimen/dp_30"
android:text="@string/tv_now_version"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/about_main_text"
android:layout_below="@id/tv_version"
android:layout_centerHorizontal="true"
android:layout_marginTop="@dimen/dp_41"
android:layout_marginTop="@dimen/dp_20"
android:text="@string/tv_about_dayu"
android:textColor="@color/cl_selector_hui"
android:textSize="@dimen/sp_12"
......
......@@ -70,10 +70,7 @@ dependencies {
api 'com.journeyapps:zxing-android-embedded:3.5.0'
api project(':locationComponent')
api project(':pickerview')
api 'cn.jzvd:jiaozivideoplayer:7.1.0'
// api 'tv.danmaku.ijk.media:ijkplayer-java:0.8.4'
// api 'tv.danmaku.ijk.media:ijkplayer-armv7a:0.8.4'
// api 'tv.danmaku.ijk.media:ijkplayer-x86:0.8.4'
api 'cn.jzvd:jiaozivideoplayer:7.2.4'
api 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.35'
api 'com.badoo.mobile:android-weak-handler:1.1'
api 'com.youth.banner:banner:1.4.10'
......@@ -83,5 +80,6 @@ dependencies {
api 'com.google.android:flexbox:1.0.0'
api 'com.github.chrisbanes:PhotoView:2.0.0'
api project(':umeng')
}
......@@ -49,30 +49,30 @@ public class Constants {
/**
* uat环境配置.
*/
// public static final String ENVIROMENT = "uat";
// public static final int LOG_LEVEL = LogUtils.LEVEL_ALL;
// public static final String BASE_URL = "http://47.95.223.6:3112";
// public final static String UP_PHOTO = "/file/uploadMore?targetPath=test/sp/mobile/android/business/checkApply";
// public final static String WEB_SOP = "http://47.95.223.6:9004/#/sop";
// public final static String WEB_SOP_DETAIL = "http://47.95.223.6:9004/#/sopdetail";
// public final static String WEB_ZHI_SHI = "http://47.95.223.6:9004/#/detail";
// public final static String CHECK_MULTI_WEB_SOP = "http://47.95.223.6:9004/#/manyServiceResult";
// public final static String MULTI_WEB_SOP = "http://47.95.223.6:9004/#/manySop";
// public static final boolean IS_DEBUG = true;
public static final String ENVIROMENT = "uat";
public static final int LOG_LEVEL = LogUtils.LEVEL_ALL;
public static final String BASE_URL = "http://47.95.223.6:3112";
public final static String UP_PHOTO = "/file/uploadMore?targetPath=test/sp/mobile/android/business/checkApply";
public final static String WEB_SOP = "http://47.95.223.6:9004/#/sop";
public final static String WEB_SOP_DETAIL = "http://47.95.223.6:9004/#/sopdetail";
public final static String WEB_ZHI_SHI = "http://47.95.223.6:9004/#/detail";
public final static String CHECK_MULTI_WEB_SOP = "http://47.95.223.6:9004/#/manyServiceResult";
public final static String MULTI_WEB_SOP = "http://47.95.223.6:9004/#/manySop";
public static final boolean IS_DEBUG = true;
/**
* 正式环境.
*/
public static final String ENVIROMENT = "release";
public static final int LOG_LEVEL = LogUtils.LEVEL_OFF;
public static final String BASE_URL = "https://mobile.kf.ai";
public final static String UP_PHOTO = "/file/uploadMore?targetPath=online/sp/mobile/android/business/checkApply";
public final static String WEB_SOP = "https://sop.kf.ai/#/sop";
public final static String WEB_SOP_DETAIL = "https://sop.kf.ai/#/sopdetail";
public final static String WEB_ZHI_SHI = "https://sop.kf.ai/#/detail";
public final static String CHECK_MULTI_WEB_SOP = "https://sop.kf.ai/#/manyServiceResult";
public final static String MULTI_WEB_SOP = "https://sop.kf.ai/#/manySop";
public static final boolean IS_DEBUG = false;
// public static final String ENVIROMENT = "release";
// public static final int LOG_LEVEL = LogUtils.LEVEL_OFF;
// public static final String BASE_URL = "https://mobile.kf.ai";
// public final static String UP_PHOTO = "/file/uploadMore?targetPath=online/sp/mobile/android/business/checkApply";
// public final static String WEB_SOP = "https://sop.kf.ai/#/sop";
// public final static String WEB_SOP_DETAIL = "https://sop.kf.ai/#/sopdetail";
// public final static String WEB_ZHI_SHI = "https://sop.kf.ai/#/detail";
// public final static String CHECK_MULTI_WEB_SOP = "https://sop.kf.ai/#/manyServiceResult";
// public final static String MULTI_WEB_SOP = "https://sop.kf.ai/#/manySop";
// public static final boolean IS_DEBUG = false;
/**
* 统一配置.
......
package com.dayu.event;
public class LearnTabNumEvent {
public int num;
public LearnTabNumEvent(int num) {
this.num = num;
}
}
package com.dayu.utils;
import android.app.Activity;
import android.os.Environment;
import com.luck.picture.lib.PictureSelectionModel;
import com.luck.picture.lib.PictureSelector;
import com.luck.picture.lib.config.PictureConfig;
import com.luck.picture.lib.config.PictureMimeType;
import java.io.File;
public class MediaChooseUtils {
/**
* 选择单张图片
*/
public static void chooseSigleImg(Activity activity) {
chooseMedia(activity,PictureMimeType.ofImage(),1,0);
}
/**
* 选择头像图片并裁剪
*/
public static void chooseAvatarImg(Activity activity) {
PictureSelectionModel selector = getPictureSelectionModel(activity, PictureMimeType.ofImage(), 1, 0);
selector.enableCrop(true)//是否裁剪
.withAspectRatio(1, 1)
.freeStyleCropEnabled(false);
selector.forResult(PictureConfig.CHOOSE_REQUEST);
}
/**
* 选择多张图片
*/
public static void chooseImgs(Activity activity,int maxCount) {
chooseMedia(activity,PictureMimeType.ofImage(),maxCount,0);
}
/**
* 选择单个视频
*/
public static void chooseSigleVideo(Activity activity,int videoLength) {
chooseMedia(activity,PictureMimeType.ofVideo(),1,videoLength);
}
/**
* 选择多个视频
*/
public static void chooseVideos(Activity activity,int maxCount,int videoLength) {
chooseMedia(activity,PictureMimeType.ofVideo(),maxCount,videoLength);
}
/**
* 选择多媒体文件
* @param activity
* @param type
* @param maxCount
* @param videoLength
*/
public static void chooseMedia(Activity activity,int type,int maxCount,int videoLength) {
PictureSelectionModel selector = getPictureSelectionModel(activity, type, maxCount, videoLength);
selector.forResult(PictureConfig.CHOOSE_REQUEST);
}
public static PictureSelectionModel getPictureSelectionModel(Activity activity, int type, int maxCount, int videoLength) {
return PictureSelector.create(activity)
.openGallery(type)//全部.PictureMimeType.ofAll()、图片.ofImage()、视频.ofVideo()
.maxSelectNum(maxCount)// 最大图片选择数量 int
.imageSpanCount(4)// 每行显示个数 int
.selectionMode(PictureConfig.MULTIPLE)// 多选 or 单选 PictureConfig.MULTIPLE or PictureConfig.SINGLE
.previewImage(true)// 是否可预览图片 true or false
.isCamera(true)// 是否显示拍照按钮 true or false
.recordVideoSecond(videoLength) //最大视频长度(秒)
.videoMaxSecond(videoLength) //最大视频长度(秒)
.isZoomAnim(true)// 图片列表点击 缩放效果 默认true
.sizeMultiplier(0.1f)// glide 加载图片大小 0~1之间 如设置 .glideOverride()无效
.setOutputCameraPath("/CustomPath")// 自定义拍、照保存路径,可不填
.compress(true)// 是否压缩 true or false
.glideOverride(300, 500)// int glide 加载宽高,越小图片列表越流畅,但会影响列表图片浏览的清晰度
.hideBottomControls(true)// 是否显示uCrop工具栏,默认不显示 true or false
.compressSavePath(getPath())//压缩图片保存地址
.previewEggs(true)// 预览图片时 是否增强左右滑动图片体验(图片滑动一半即可看到上一张是否选中) true or false
.minimumCompressSize(100)// 小于100kb的图片不压缩
// .enableCrop(true)//是否裁剪
// .freeStyleCropEnabled(true)
.synOrAsy(true);
}
public static String getPath() {
String path = Environment.getExternalStorageDirectory() + "/dayu/image/";
File file = new File(path);
if (file.mkdirs()) {
return path;
}
return path;
}
}
package com.dayu.widgets;
import android.content.Context;
import android.util.AttributeSet;
import com.dayu.baselibrary.R;
import cn.jzvd.JzvdStd;
public class MyJzvdStd extends JzvdStd {
public int curProgress;
public long curPosition;
private PlayCallBack callBack;
public MyJzvdStd(Context context) {
super(context);
}
public MyJzvdStd(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public int getLayoutId() {
return R.layout.jz_layout_std;
}
@Override
public void startVideo() {
super.startVideo();
curProgress = 0;
curPosition = 0;
if (callBack != null)
callBack.onstart();
}
//onState 代表了播放器引擎的回调,播放视频各个过程的状态的回调
@Override
public void onProgress(int progress, long position, long duration) {
super.onProgress(progress, position, duration);
curProgress = progress;
curPosition = position;
}
@Override
public void onStatePreparing() {
super.onStatePreparing();
}
@Override
public void onStatePause() {
super.onStatePause();
if (callBack != null)
callBack.onPause();
}
@Override
public void onStateError() {
super.onStateError();
}
@Override
public void onStateAutoComplete() {
super.onStateAutoComplete();
curProgress = 100;
curPosition = getDuration();
if (callBack != null)
callBack.onComplete();
}
@Override
public void updateStartImage() {
if (state == STATE_PLAYING) {
startButton.setVisibility(VISIBLE);
startButton.setImageResource(cn.jzvd.R.drawable.jz_click_pause_selector);
replayTextView.setVisibility(GONE);
} else if (state == STATE_ERROR) {
startButton.setVisibility(INVISIBLE);
replayTextView.setVisibility(GONE);
} else if (state == STATE_AUTO_COMPLETE) {
startButton.setVisibility(VISIBLE);
startButton.setImageResource(cn.jzvd.R.drawable.jz_click_replay_selector);
replayTextView.setVisibility(VISIBLE);
} else {
startButton.setImageResource(cn.jzvd.R.drawable.jz_click_play_selector);
replayTextView.setVisibility(GONE);
if (state == 0 && callBack != null)
callBack.onPrepare();
}
}
public void setPlayCallBack(PlayCallBack callBack) {
this.callBack = callBack;
}
public interface PlayCallBack {
void onstart();
void onPrepare();
void onPause();
void onComplete();
}
}
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<stroke
android:width="1dp"
android:color="#333"
/>
<corners android:radius="0.5dp"/>
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical">
<TextView
android:id="@+id/tabtext"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:textStyle="bold"
android:textSize="30sp"
android:textColor="#585858"
/>
<TextView
android:id="@+id/tabicon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#585858"
android:textSize="13.3sp"
android:layout_gravity="center"/>
</LinearLayout>
\ No newline at end of file
......@@ -80,6 +80,7 @@
<string name="tv_about_us">扫码关注我们的微信服务号</string>
<string name="tv_about_us_text">&#160;&#160;&#160;&#160;传统低效的客服体系,正在成为厂商、服务商、消费者的包袱。大鱼准备以科技之力进行客服产业革命。运用Ai、云和大数据等技术,连接厂商、销售商、服务商和消费者,打造去中心化的智能共享客户服务解决方案。</string>
<string name="tv_about_dayu">大鱼创想&#160;&#160;版权所有</string>
<string name="tv_now_version">当前版本:</string>
<string name="tv_about_user_feiyong">收取费用</string>
<string name="tv_order_updoor_feiyong">上门费</string>
<string name="tv_order_serve_feiyong">服务费用</string>
......@@ -973,7 +974,6 @@ C) 在甲方使用大鱼平å°æœåŠ¡è¿‡ç¨‹ä¸­äº§ç”Ÿçš„业务数æ®ï¼Œå®¢æˆ·æ•°æ
<string name="save_str">保存</string>
<string name="save_success">保存成功</string>
<string name="save_fail">保存失败</string>
<string name="record_income_total">收入总额(元)</string>
<string name="record_reward_total">收入总额(元)</string>
<string name="record_done_service">完成服务工单</string>
......@@ -983,5 +983,29 @@ C) 在甲方使用大鱼平å°æœåŠ¡è¿‡ç¨‹ä¸­äº§ç”Ÿçš„业务数æ®ï¼Œå®¢æˆ·æ•°æ
<string name="city_str"></string>
<string name="zone_str">区/县</string>
<!-- learn -->
<string name="learn_str">学习</string>
<string name="find_course">查找课程</string>
<array name="learn_top_tab_item">
<item>公开课</item>
<item>已学习</item>
<item>已发布</item>
</array>
<string name="pub_course_title">我要开课</string>
<string name="course_theme">课程主题:</string>
<string name="pls_input_course_theme">请填写课程主题</string>
<string name="course_desc">课程简介:</string>
<string name="pls_input_course_desc">请填写课程简介</string>
<string name="upload_video">上传视频:</string>
<string name="pls_choose_video">请选择视频</string>
<string name="learn_tips">温馨提示:</string>
<string name="learn_tip1">1、请勿发布反动和涉黄内容的视频,平台有权下架并追究发布者的法律责任。</string>
<string name="learn_tip2">2、大鱼平台将对优质课程(点赞数)和热门课程(阅读数)的发布者进行现金奖励。</string>
<string name="confirm_pub">确认发布</string>
<string name="limit_10_words">限10个字</string>
<string name="limit_100_words">限100字</string>
<string name="course_detail">课程详情</string>
<string name="course_puber">发布方:</string>
</resources>
......@@ -85,6 +85,35 @@
<item name="android:background">@drawable/bg_input_gray_react</item>
</style>
<style name="learn_course_edit" parent="common_text_style">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">35dp</item>
<item name="android:padding">3dp</item>
<item name="android:layout_marginLeft">10dp</item>
<item name="android:gravity">left|center_vertical</item>
<item name="android:background">@drawable/bg_input_gray_react</item>
</style>
<style name="ll_course_content" parent="common_text_style">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:orientation">horizontal</item>
<item name="android:gravity">center_vertical</item>
<item name="android:layout_marginTop">15dp</item>
<item name="android:layout_marginLeft">5dp</item>
<item name="android:layout_marginRight">5dp</item>
</style>
<style name="tv_course_left" parent="common_text_style">
<item name="android:layout_width">60dp</item>
<item name="android:gravity">right</item>
</style>
<style name="tv_course_content" parent="common_text_style">
<item name="android:layout_marginLeft">10dp</item>
<item name="android:textColor">#8b8b8b</item>
</style>
<style name="sale_item_text" parent="common_text_style">
<item name="android:maxLines">1</item>
</style>
......@@ -150,15 +179,27 @@
<item name="android:maxLines">1</item>
</style>
<style name="btn_bottom_common">
<item name="android:layout_width">match_parent</item>
<style name="btn_common">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">45dp</item>
<item name="android:background">@drawable/tab_blue_react</item>
<item name="android:textColor">@color/white</item>
<item name="android:gravity">center</item>
<item name="android:textSize">16sp</item>
</style>
<style name="btn_bottom_common" parent="btn_common">
<item name="android:layout_width">match_parent</item>
<item name="android:background">@drawable/tab_blue_react</item>
</style>
<style name="btn_common_gray" parent="btn_common">
<item name="android:background">@drawable/tab_gray_react</item>
</style>
<style name="btn_common_blue" parent="btn_common">
<item name="android:background">@drawable/tab_blue_react</item>
</style>
<style name="title">
<item name="android:layout_width">match_parent</item>
......
......@@ -9,6 +9,9 @@ isOrderModule=true
isManagerModule=true
##销售模块
isSaleModule=true
##培训模块
isLearnModule=true
##maven依赖
mavenMode=false
BASE_URL=http://47.94.101.239:3112
......
if (isLearnModule.toBoolean()) {
apply plugin: 'com.android.library'
} else {
apply plugin: 'com.android.application'
}
android {
compileSdkVersion compile_sdk_version
buildToolsVersion build_tools_version
defaultConfig {
minSdkVersion min_sdk_version
targetSdkVersion target_sdk_version
versionCode version_code
versionName verson_name
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
multiDexEnabled true
vectorDrawables.useSupportLibrary = true
javaCompileOptions {
annotationProcessorOptions {
arguments = [moduleName: project.getName()]
}
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
buildTypes {
release {
minifyEnabled isReleaseMinify
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
dataBinding {
enabled = true
}
dexOptions {
preDexLibraries = false
}
sourceSets {
main {
if (isLearnModule.toBoolean()) {
manifest.srcFile 'src/main/release/AndroidManifest.xml'
} else {
manifest.srcFile 'src/main/debug/AndroidManifest.xml'
}
}
}
}
dependencies {
api fileTree(dir: 'libs', include: ['*.jar'])
//ARouter
annotationProcessor "com.alibaba:arouter-compiler:$arouter_compiler_version"
api project(':provider')
}
# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles setting in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}
# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable
# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile
package com.dayu.learncenter;
import android.content.Context;
import android.support.test.InstrumentationRegistry;
import android.support.test.runner.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
import static org.junit.Assert.*;
/**
* Instrumented test, which will execute on an Android device.
*
* @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
*/
@RunWith(AndroidJUnit4.class)
public class ExampleInstrumentedTest {
@Test
public void useAppContext() {
// Context of the app under test.
Context appContext = InstrumentationRegistry.getTargetContext();
assertEquals("com.dayu.learncenter.test", appContext.getPackageName());
}
}
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.dayu.learncenter" />
package com.dayu.learncenter.adapter;
import android.view.View;
import com.dayu.base.ui.adapter.CoreAdapter;
import com.dayu.learncenter.R;
import com.dayu.learncenter.api.bean.CommonLearnBean;
import com.dayu.learncenter.databinding.ItemCommonLearnBinding;
import com.dayu.utils.GlideImageLoader;
import com.dayu.utils.LogUtils;
import com.dayu.utils.ToastUtils;
import com.dayu.widgets.MyJzvdStd;
public class LearnAdapter extends CoreAdapter<CommonLearnBean,ItemCommonLearnBinding> {
private int type;
public LearnAdapter(boolean needFoot,int type) {
super(needFoot);
this.type = type;
}
@Override
protected void onBind(ItemCommonLearnBinding holder, CommonLearnBean item, int position) {
super.onBind(holder, item, position);
holder.tvTitle.setText(item.title);
holder.jzVideo.setUp(item.url,"");
GlideImageLoader.load(mContext, holder.jzVideo.posterImageView, item.url, R.drawable.icon_video_default);
holder.jzVideo.setPlayCallBack(new MyJzvdStd.PlayCallBack() {
@Override
public void onstart() {
LogUtils.e("videoState start "+item.id);
item.showDate = false;
holder.tvDate.setVisibility(View.GONE);
}
@Override
public void onPrepare() {
LogUtils.e("videoState prepa3 "+item.id);
holder.tvDate.setVisibility(View.VISIBLE);
}
@Override
public void onPause() {
LogUtils.e("videoState pause: "+item.id+" "+holder.jzVideo.curProgress
+" "+holder.jzVideo.curPosition+" "+holder.jzVideo.getDuration());
}
@Override
public void onComplete() {
LogUtils.e("videoState complete");
}
});
}
}
package com.dayu.learncenter.api.bean;
public class CommonLearnBean {
public int id;
public String url;
public String title;
public boolean showDate = true;
public CommonLearnBean(int id, String url, String title) {
this.id = id;
this.url = url;
this.title = title;
}
}
package com.dayu.learncenter.presenter.common_learn;
import com.dayu.base.ui.presenter.BaseListPresenter;
import com.dayu.common.BaseView;
public interface CommonLearnContract {
interface View extends BaseView {
}
abstract class Presenter extends BaseListPresenter<View> {
}
}
package com.dayu.learncenter.presenter.common_learn;
import android.databinding.ObservableField;
import com.dayu.event.UserInfo;
import com.dayu.utils.UserManager;
public class CommonLearnPresenter extends CommonLearnContract.Presenter{
private int mUserId;
private int type;
private ObservableField<Object> datas = new ObservableField<>();
public void setType(int type) {
this.type = type;
}
@Override
public void onAttached() {
UserInfo userInfo = UserManager.getInstance().getUser();
mUserId = Integer.parseInt(userInfo.getAccountId());
}
@Override
public ObservableField<Object> getSourceDatas() {
return datas;
}
}
package com.dayu.learncenter.ui.activity;
import com.dayu.base.ui.activity.BaseActivity;
import com.dayu.base.ui.presenter.SImplePresenter;
import com.dayu.learncenter.R;
import com.dayu.learncenter.databinding.ActivityCourseDetailBinding;
/**
* 课程详情
*/
public class CourseDetailActivity extends BaseActivity<SImplePresenter,ActivityCourseDetailBinding> {
@Override
public void setPresenter() {
}
@Override
public int getLayoutId() {
return R.layout.activity_course_detail;
}
@Override
public void initView() {
mBind.titleBack.setOnClickListener(v->dumpBack());
}
}
package com.dayu.learncenter.ui.activity;
import android.content.Intent;
import android.text.TextUtils;
import android.view.View;
import com.dayu.base.ui.activity.BaseActivity;
import com.dayu.base.ui.presenter.SImplePresenter;
import com.dayu.learncenter.R;
import com.dayu.learncenter.databinding.ActivityPubCourseBinding;
import com.dayu.utils.GlideImageLoader;
import com.dayu.utils.MediaChooseUtils;
import com.dayu.utils.ToastUtils;
import com.luck.picture.lib.PictureSelector;
import com.luck.picture.lib.compress.Luban;
import com.luck.picture.lib.compress.OnCompressListener;
import com.luck.picture.lib.config.PictureConfig;
import com.luck.picture.lib.entity.LocalMedia;
import java.util.List;
/**
* 开课
*/
public class PubCourseActivity extends BaseActivity<SImplePresenter, ActivityPubCourseBinding> {
private String theme;
private String desc;
private String videoPath;
@Override
public void setPresenter() {
}
@Override
public int getLayoutId() {
return R.layout.activity_pub_course;
}
@Override
public void initView() {
setListener();
}
private void setListener() {
mBind.titleBack.setOnClickListener(view -> dumpBack());
mBind.btnCancle.setOnClickListener(view -> dumpBack());
mBind.btnConfirm.setOnClickListener(view -> onConfimClick());
mBind.rlVideo.setOnClickListener(v -> {
if (TextUtils.isEmpty(videoPath)) {
MediaChooseUtils.chooseSigleVideo(this, 180);
}
});
mBind.ivDelete.setOnClickListener(v -> {
videoPath = "";
setVideoView();
});
mBind.jzVideo.setOnClickListener(v->showToast("click"));
}
private void onConfimClick() {
if (canSubmit()) {
showToast("submit");
}
}
//判断是否能提交
private boolean canSubmit() {
String theme = mBind.edtTheme.getText().toString().trim();
String desc = mBind.edtDesc.getText().toString();
if (TextUtils.isEmpty(theme)) {
showToast(R.string.pls_input_course_theme);
return false;
}
if (TextUtils.isEmpty(desc) || TextUtils.isEmpty(desc.trim())) {
showToast(R.string.pls_input_course_desc);
return false;
}
if (TextUtils.isEmpty(videoPath)) {
showToast(R.string.pls_choose_video);
return false;
}
return true;
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
switch (requestCode) {
case PictureConfig.CHOOSE_REQUEST:
List<LocalMedia> mSelectList = PictureSelector.obtainMultipleResult(data);
if (mSelectList != null) {
videoPath = mSelectList.get(0).getPath();
setVideoView();
}
break;
}
}
}
//设置视频布局显示状态
private void setVideoView() {
if (TextUtils.isEmpty(videoPath)) {
mBind.jzVideo.setVisibility(View.GONE);
mBind.ivDelete.setVisibility(View.GONE);
} else {
mBind.ivDelete.setVisibility(View.VISIBLE);
mBind.jzVideo.setVisibility(View.VISIBLE);
mBind.jzVideo.setUp(videoPath, "");
GlideImageLoader.load(mActivity, mBind.jzVideo.posterImageView, videoPath, R.drawable.icon_video_default);
}
}
}
package com.dayu.learncenter.ui.fragment;
import android.os.Bundle;
import android.view.View;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.dayu.base.ui.fragment.BaseFragment;
import com.dayu.learncenter.R;
import com.dayu.learncenter.adapter.LearnAdapter;
import com.dayu.learncenter.api.bean.CommonLearnBean;
import com.dayu.learncenter.databinding.FragmentCommonLearnBinding;
import com.dayu.learncenter.databinding.ItemCommonLearnBinding;
import com.dayu.learncenter.presenter.common_learn.CommonLearnContract;
import com.dayu.learncenter.presenter.common_learn.CommonLearnPresenter;
import com.dayu.learncenter.ui.activity.CourseDetailActivity;
import com.dayu.learncenter.ui.activity.PubCourseActivity;
import com.dayu.widgets.listener.OnItemClickListener;
import java.util.ArrayList;
import java.util.List;
import cn.jzvd.Jzvd;
import cn.jzvd.JzvdStd;
public class CommonLearnFragment extends BaseFragment<CommonLearnPresenter,FragmentCommonLearnBinding>
implements CommonLearnContract.View {
private int type; //1.商品 2.收藏
public static CommonLearnFragment newInstance(int type) {
Bundle args = new Bundle();
args.putInt("type", type);
CommonLearnFragment fragment = new CommonLearnFragment();
fragment.setArguments(args);
return fragment;
}
@Override
public void setPresenter() {
mBind.setPresenter(mPresenter);
}
@Override
public int getLayoutId() {
return R.layout.fragment_common_learn;
}
@Override
protected void lazyLoad() {
super.lazyLoad();
mPresenter.refresh();
}
@Override
public void initView() {
Bundle bundle = getArguments();
type = bundle.getInt("type");
mPresenter.setType(type);
mBind.edtSeacher.setText(getString(R.string.find_course)+type);
mBind.rlSeacher.setVisibility(type==3?View.GONE:View.VISIBLE);
mBind.ivPubCourse.setOnClickListener(view -> startActivity(PubCourseActivity.class));
setAdapter();
}
private void setAdapter() {
List<CommonLearnBean> items = new ArrayList<>();
String url = "http://dl.kf.ai/online/ka/spu/serviceDetailVideo/c8f6169b1272663588a24b48c6261a0f.mp4";
for (int i=0;i<10;i++){
items.add(new CommonLearnBean(i,url,"Video Title "+i));
}
LearnAdapter mAdapter = new LearnAdapter(true,type);
mAdapter.setViewType(R.layout.item_common_learn);
mBind.recyclerView.setAdapter(mAdapter);
mAdapter.setData(items);
mAdapter.setOnItemClickListener((item, bind) -> {
startActivity(CourseDetailActivity.class);
});
}
@Override
public void onPause() {
super.onPause();
JzvdStd.goOnPlayOnPause();
}
}
package com.dayu.learncenter.ui.fragment;
import android.content.res.AssetManager;
import android.graphics.Typeface;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.TextView;
import com.dayu.base.ui.adapter.FragmentAdapter;
import com.dayu.base.ui.fragment.BaseFragment;
import com.dayu.base.ui.presenter.SImplePresenter;
import com.dayu.event.LearnTabNumEvent;
import com.dayu.learncenter.R;
import com.dayu.learncenter.databinding.FragmentHomeLearnBinding;
import com.dayu.utils.TabLayoutUtils;
import com.dayu.utils.UIUtils;
import com.umeng.analytics.MobclickAgent;
import org.greenrobot.eventbus.EventBus;
import java.util.ArrayList;
import java.util.List;
public class HomeLearnFragment extends BaseFragment<SImplePresenter, FragmentHomeLearnBinding> {
public List<Fragment> list_fragments;
private FragmentAdapter adapter;
private TextView mTabNumTv;
private TextView mTabTextTv;
private boolean isFirstAddTab = true;
private String[] tabDesc;
@Override
public void setPresenter() {
}
@Override
public int getLayoutId() {
return R.layout.fragment_home_learn;
}
@Override
public void initView() {
tabDesc = UIUtils.getStrings(R.array.learn_top_tab_item);
initData();
}
private void initData() {
list_fragments = new ArrayList<>();
list_fragments.add(CommonLearnFragment.newInstance(1));
list_fragments.add(CommonLearnFragment.newInstance(2));
list_fragments.add(CommonLearnFragment.newInstance(3));
adapter = new FragmentAdapter(getFragmentManager(), list_fragments);
mBind.vpLearn.setAdapter(adapter);
mBind.tabLearn.setupWithViewPager(mBind.vpLearn);
mBind.tabLearn.setTabMode(TabLayout.MODE_FIXED);
mBind.vpLearn.setOffscreenPageLimit(4);
mBind.tabLearn.post(() ->
TabLayoutUtils.setIndicator(mBind.tabLearn, 0, 0, R.color.cl_order_item_line_bg, mActivity));
mBind.tabLearn.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
int temp = tab.getPosition();
if (tab.getCustomView() == null) {
return;
}
mTabNumTv = tab.getCustomView().findViewById(R.id.tabtext);
mTabTextTv = tab.getCustomView().findViewById(R.id.tabicon);
mTabNumTv.setTextColor(getResources().getColor(R.color.bg_button));
mTabTextTv.setTextColor(getResources().getColor(R.color.bg_button));
mBind.vpLearn.setCurrentItem(temp);
MobclickAgent.onPageStart("HomeLearnFragment" + temp);
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
if (mTabNumTv == null || mTabTextTv == null) {
return;
}
int temp = tab.getPosition();
mTabNumTv.setTextColor(getResources().getColor(R.color.cl_tab_init));
mTabTextTv.setTextColor(getResources().getColor(R.color.cl_tab_init));
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
setTabNum(0);
// mPresenter.chooseTab(0);
}
public void setTabNum(int myTabIndex) {
EventBus.getDefault().post(new LearnTabNumEvent(1));
String[] tabNum = new String[]{0 + "", 0 + "", 0 + ""};
if (isFirstAddTab) {
mBind.tabLearn.removeAllTabs();
mBind.tabLearn.addTab(mBind.tabLearn.newTab().setCustomView(CreatTab(0, tabNum[0], tabDesc[0])));
mBind.tabLearn.addTab(mBind.tabLearn.newTab().setCustomView(CreatTab(1, tabNum[1], tabDesc[1])));
mBind.tabLearn.addTab(mBind.tabLearn.newTab().setCustomView(CreatTab(2, tabNum[2], tabDesc[2])));
isFirstAddTab = false;
} else {
for (int i = 0; i < mBind.tabLearn.getTabCount(); i++) {
TextView tv = mBind.tabLearn.getTabAt(i).getCustomView().findViewById(R.id.tabtext);
TextView tvIcon = mBind.tabLearn.getTabAt(i).getCustomView().findViewById(R.id.tabicon);
tv.setText(tabNum[i]);
tvIcon.setText(tabDesc[i]);
}
}
if (myTabIndex != -1) {
// mBind.vpLearn.setCurrentItem(myTabIndex);
mBind.tabLearn.getTabAt(myTabIndex).select();
}
}
private View CreatTab(int index, String number, String iconID) {
View newtab = LayoutInflater.from(mActivity).inflate(R.layout.layout_common_top_tab, null);
TextView textView_number = newtab.findViewById(R.id.tabtext);
AssetManager mgr = mActivity.getAssets();
if (index == 0) {
textView_number.setTextColor(getResources().getColor(R.color.cl_tab_read));
}
Typeface tf = Typeface.createFromAsset(mgr, "fonts/DIN Alternate Bold.ttf");
textView_number.setTypeface(tf);
textView_number.setText(number);
TextView textView = newtab.findViewById(R.id.tabicon);
textView.setText(iconID);
return newtab;
}
}
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.dayu.learncenter" >
<application
android:allowBackup="true"
android:label="@string/app_name"
android:supportsRtl="true">
<activity android:name=".ui.activity.PubCourseActivity"
android:configChanges="orientation|screenSize|keyboardHidden"
android:screenOrientation="portrait"
/>
<activity android:name=".ui.activity.CourseDetailActivity"
android:configChanges="orientation|screenSize|keyboardHidden"
android:screenOrientation="portrait"
/>
</application>
</manifest>
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white">
<RelativeLayout
android:id="@+id/rl_title"
style="@style/title">
<TextView
android:id="@+id/tv_title"
style="@style/text_title"
android:text="@string/course_detail" />
<ImageView
android:id="@+id/title_back"
style="@style/title_image_back" />
<ImageView
style="@style/card_line"
android:layout_alignParentBottom="true" />
</RelativeLayout>
<android.support.v4.widget.NestedScrollView
android:id="@+id/nsv_operate"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@id/rl_title"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout style="@style/ll_course_content">
<TextView
style="@style/tv_course_left"
android:text="@string/course_theme" />
<TextView
android:id="@+id/tv_theme"
style="@style/tv_course_content"
/>
</LinearLayout>
<LinearLayout style="@style/ll_course_content">
<TextView
style="@style/tv_course_left"
android:text="@string/course_desc"
/>
<TextView
android:id="@+id/tv_desc"
style="@style/tv_course_content"
/>
</LinearLayout>
<LinearLayout style="@style/ll_course_content">
<TextView
style="@style/tv_course_left"
android:text="@string/course_puber"
/>
<TextView
android:id="@+id/tv_puber"
style="@style/tv_course_content"
/>
</LinearLayout>
<LinearLayout
android:id="@+id/ll_video"
android:layout_width="match_parent"
android:layout_height="180dp"
android:layout_marginTop="15dp">
<cn.jzvd.JzvdStd
android:id="@+id/jz_video"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:gravity="center_vertical"
>
<TextView
android:id="@+id/tv_component"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="43dp"
android:gravity="center_vertical"
android:text="留言"
android:textColor="@color/cl_home_title_text_color"
android:textSize="14sp"
android:textStyle="bold" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/icon_looks"
android:layout_marginLeft="10dp"
/>
<TextView
android:id="@+id/tv_looks"
style="@style/common_text_style"
android:text="12345"
android:layout_marginLeft="5dp"
/>
<ImageView
android:id="@+id/iv_like"
android:layout_width="18dp"
android:layout_height="18dp"
android:src="@drawable/icon_like_gray"
android:layout_marginLeft="10dp"
/>
<TextView
android:id="@+id/tv_like"
style="@style/common_text_style"
android:text="12345"
android:layout_marginLeft="5dp"
android:layout_marginRight="10dp"
/>
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/color_ee" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:focusable="true"
android:focusableInTouchMode="true"
android:orientation="horizontal">
<ImageView
android:id="@+id/iv_avatar"
android:layout_width="35dp"
android:layout_height="35dp"
android:src="@drawable/icon_user_default"
android:layout_marginRight="10dp" />
<EditText
android:id="@+id/edt_comment"
android:layout_width="0dp"
android:layout_height="35dp"
android:layout_weight="1"
android:background="#f5f5f5"
android:hint="@string/ask_detail"
android:padding="5dp"
android:paddingLeft="5dp"
android:singleLine="true"
android:textSize="13sp" />
<Button
android:id="@+id/btn_send"
android:layout_width="80dp"
android:layout_height="35dp"
android:layout_gravity="center_vertical"
android:background="@color/cl_home_button"
android:gravity="center"
android:text="@string/send_str"
android:textColor="@color/white"
android:textSize="13sp" />
</LinearLayout>
<android.support.v7.widget.RecyclerView
android:id="@+id/rv_component"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
/>
</LinearLayout>
</android.support.v4.widget.NestedScrollView>
</RelativeLayout>
</layout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
>
<RelativeLayout
android:id="@+id/rl_title"
style="@style/title">
<TextView
android:id="@+id/tv_title"
style="@style/text_title"
android:text="@string/pub_course_title" />
<ImageView
android:id="@+id/title_back"
style="@style/title_image_back" />
<ImageView
style="@style/card_line"
android:layout_alignParentBottom="true" />
</RelativeLayout>
<ScrollView
android:layout_below="@+id/rl_title"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:overScrollMode="never"
android:padding="10dp"
android:layout_marginBottom="60dp"
android:scrollbars="none">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout style="@style/ll_part_bottom">
<TextView
style="@style/common_text_style"
android:drawableLeft="@drawable/icon_star_necessary"
android:text="@string/course_theme" />
<EditText
android:id="@+id/edt_theme"
style="@style/learn_course_edit"
android:maxLength="10"
android:hint="@string/limit_10_words" />
</LinearLayout>
<LinearLayout style="@style/ll_part_bottom">
<TextView
style="@style/common_text_style"
android:drawableLeft="@drawable/icon_star_necessary"
android:text="@string/course_desc" />
<EditText
android:id="@+id/edt_desc"
style="@style/learn_course_edit"
android:layout_height="100dp"
android:maxLength="100"
android:hint="@string/limit_100_words" />
</LinearLayout>
<TextView
style="@style/common_text_style"
android:layout_marginTop="20dp"
android:drawableLeft="@drawable/icon_star_necessary"
android:text="@string/upload_video" />
<RelativeLayout
android:id="@+id/rl_video"
android:layout_width="match_parent"
android:layout_height="180dp"
android:layout_margin="10dp"
android:background="@drawable/bg_input_gray_react"
>
<TextView
style="@style/common_text_style"
android:textSize="30sp"
android:textColor="#999"
android:text="+"
android:layout_centerInParent="true"
/>
<cn.jzvd.JzvdStd
android:visibility="gone"
android:id="@+id/jz_video"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<ImageView
android:visibility="gone"
android:id="@+id/iv_delete"
android:layout_width="25dp"
android:layout_height="25dp"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:src="@drawable/img_photo_delete" />
</RelativeLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:background="#f2f2f2"
android:padding="2dp"
android:layout_marginTop="15dp"
>
<TextView
style="@style/common_text_style"
android:textSize="16sp"
android:text="@string/learn_tips"
android:textStyle="bold"
/>
<TextView
style="@style/common_text_style"
android:text="@string/learn_tip1"
android:layout_marginTop="25dp"
/>
<TextView
style="@style/common_text_style"
android:text="@string/learn_tip2"
android:layout_marginTop="25dp"
android:layout_marginBottom="15dp"
/>
</LinearLayout>
</LinearLayout>
</ScrollView>
<LinearLayout
android:layout_alignParentBottom="true"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginBottom="15dp"
android:paddingLeft="15dp"
android:paddingRight="15dp"
>
<Button
android:id="@+id/btn_cancle"
style="@style/btn_common_gray"
android:layout_width="0dp"
android:layout_weight="1"
android:text="@string/cancle"
/>
<Button
android:id="@+id/btn_confirm"
android:layout_marginLeft="25dp"
style="@style/btn_common_blue"
android:layout_width="0dp"
android:text="@string/confirm_pub"
android:layout_weight="1.5"
/>
</LinearLayout>
</RelativeLayout>
</layout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<variable
name="presenter"
type="com.dayu.base.ui.presenter.BaseListPresenter" />
</data>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:focusable="true"
android:focusableInTouchMode="true"
android:background="#f5f5f5"
android:orientation="vertical">
<RelativeLayout
android:id="@+id/rl_seacher"
android:layout_width="match_parent"
android:layout_height="45dp"
android:background="@color/cl_white"
android:layout_marginLeft="13dp"
android:layout_marginRight="13dp"
>
<EditText
android:id="@+id/edt_seacher"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerVertical="true"
android:layout_marginBottom="5dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:background="@null"
android:gravity="center"
android:hint="@string/find_course"
android:imeOptions="actionSearch"
android:inputType="text"
android:singleLine="true"
android:layout_toLeftOf="@+id/tv_cancel"
android:textSize="15sp" />
<TextView
android:id="@+id/tv_cancel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginRight="20dp"
android:gravity="center"
android:text="@string/cancle"
android:textColor="@color/cl_black"
android:textSize="16sp"
android:textStyle="bold"
android:visibility="gone"
/>
<ImageView
android:layout_width="match_parent"
android:layout_height="5dp"
android:layout_alignParentBottom="true"
android:src="@drawable/line_shape" />
</RelativeLayout>
<com.dayu.widgets.LRecyclerView
android:layout_below="@id/rl_seacher"
android:id="@+id/recyclerView"
setPresenter="@{presenter}"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<ImageView
android:id="@+id/iv_pub_course"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_marginBottom="50dp"
android:layout_marginRight="30dp"
android:src="@drawable/icon_add_blue"
/>
</RelativeLayout>
</layout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/cl_white"
android:orientation="vertical">
<RelativeLayout style="@style/title">
<TextView
style="@style/text_title"
android:text="@string/learn_str" />
</RelativeLayout>
<android.support.design.widget.TabLayout
android:id="@+id/tab_learn"
android:layout_width="match_parent"
android:layout_height="78dp"
app:tabIndicatorColor="@color/cl_tab_line"
app:tabMaxWidth="0dp"
app:tabIndicatorHeight="0dp"
app:tabBackground="@drawable/top_tab_selector"
app:tabMode="fixed" />
<ImageView style="@style/card_line" />
<android.support.v4.view.ViewPager
android:id="@+id/vp_learn"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
</LinearLayout>
</layout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_13.3"
android:layout_marginTop="5dp"
android:layout_marginRight="@dimen/dp_13.3"
android:background="@drawable/item_shape">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<RelativeLayout
android:id="@+id/rl_video"
android:layout_width="match_parent"
android:layout_height="180dp">
<com.dayu.widgets.MyJzvdStd
android:id="@+id/jz_video"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</RelativeLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="45dp"
android:gravity="center_vertical"
android:orientation="horizontal">
<TextView
android:id="@+id/tv_title"
style="@style/common_text_style"
android:layout_width="0dp"
android:layout_marginLeft="5dp"
android:layout_weight="1"
android:maxLines="2"
android:text="标题" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:src="@drawable/icon_looks" />
<TextView
android:id="@+id/tv_looks"
style="@style/common_text_style"
android:layout_marginLeft="5dp"
android:text="12345" />
<ImageView
android:id="@+id/iv_like"
android:layout_width="18dp"
android:layout_height="18dp"
android:layout_marginLeft="10dp"
android:src="@drawable/icon_like_gray" />
<TextView
android:id="@+id/tv_like"
style="@style/common_text_style"
android:layout_marginLeft="5dp"
android:layout_marginRight="10dp"
android:text="12345" />
</LinearLayout>
</LinearLayout>
<TextView
android:id="@+id/tv_progress"
style="@style/common_text_style"
android:padding="10dp"
android:text="学习进度 0%"
android:textColor="@color/text_common_blue"
android:textSize="20sp"
android:layout_marginTop="15dp"
android:visibility="gone"
android:layout_centerHorizontal="true"
/>
<TextView
android:id="@+id/tv_date"
style="@style/common_text_style"
android:height="36dp"
android:gravity="center"
android:paddingLeft="15dp"
android:paddingRight="15dp"
android:text="发布时间 2020-01-01"
android:background="#80ffffff"
android:layout_marginTop="130dp"
android:layout_centerHorizontal="true"
/>
</RelativeLayout>
</layout>
\ No newline at end of file
<resources>
<string name="app_name">LearnCenter</string>
</resources>
package com.dayu.learncenter;
import org.junit.Test;
import static org.junit.Assert.*;
/**
* Example local unit test, which will execute on the development machine (host).
*
* @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
*/
public class ExampleUnitTest {
@Test
public void addition_isCorrect() {
assertEquals(4, 2 + 2);
}
}
\ No newline at end of file
......@@ -89,7 +89,7 @@ public class OperateDetailFragment extends BaseFragment<SImplePresenter, Fragmen
// String url = "http://jzvd.nathen.cn/c6e3dc12a1154626b3476d9bf3bd7266/6b56c5f0dc31428083757a45764763b0-5287d2089db37e62345123a1be272f8b.mp4";
String url = operateInfo.getVideoUrl();
mBind.jzVideo.setUp(url, "");
GlideImageLoader.load(mActivity, mBind.jzVideo.thumbImageView, url, R.drawable.icon_app_logo);
GlideImageLoader.load(mActivity, mBind.jzVideo.posterImageView, url, R.drawable.icon_video_default);
setListener();
}
......
......@@ -64,6 +64,7 @@
android:layout_marginBottom="50dp"
android:layout_marginRight="10dp"
android:src="@drawable/icon_create_order"
android:visibility="gone" />
android:visibility="gone"
/>
</RelativeLayout>
</layout>
\ No newline at end of file
package com.bigfish.salecenter.api;
import com.bigfish.salecenter.event.SaleTabNumEvent;
import com.bigfish.salecenter.model.CollectProductData;
import com.bigfish.salecenter.model.CommentBean;
import com.bigfish.salecenter.model.CommentPostData;
......
......@@ -6,22 +6,18 @@ import android.os.Bundle;
import android.support.design.widget.TabLayout;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.bigfish.salecenter.R;
import com.bigfish.salecenter.databinding.FragmentHomeSaleBinding;
import com.bigfish.salecenter.event.RefreshSaleTab;
import com.bigfish.salecenter.event.SaleTabNumEvent;
import com.dayu.event.SaleTabNumEvent;
import com.bigfish.salecenter.model.SaleTab;
import com.bigfish.salecenter.presenter.homesale.HomeSaleContract;
import com.bigfish.salecenter.presenter.homesale.HomeSalePresenter;
import com.dayu.base.ui.adapter.FragmentAdapter;
import com.dayu.base.ui.fragment.BaseFragment;
import com.dayu.provider.event.RefreshTab;
import com.dayu.utils.LogUtils;
import com.dayu.utils.TabLayoutUtils;
import com.dayu.utils.ToastUtils;
import com.umeng.analytics.MobclickAgent;
import android.support.v4.app.Fragment;
......
......@@ -117,7 +117,7 @@ public class ProductInstructionFragment extends BaseFragment<SImplePresenter, Fr
} else {
mBind.llVideo.setVisibility(View.VISIBLE);
mBind.jzVideo.setUp(url, "");
GlideImageLoader.load(mActivity, mBind.jzVideo.thumbImageView, url, R.drawable.icon_app_logo);
GlideImageLoader.load(mActivity, mBind.jzVideo.posterImageView, url, R.drawable.icon_video_default);
}
}
......
......@@ -56,6 +56,11 @@ public class SaleProductFragment extends BaseFragment<SaleProductPresent, Fragme
}
@Override
public int getLayoutId() {
return R.layout.fragment_common_sale;
}
@Override
protected void lazyLoad() {
super.lazyLoad();
mPresenter.refresh();
......@@ -85,8 +90,8 @@ public class SaleProductFragment extends BaseFragment<SaleProductPresent, Fragme
}
});
}
//搜索
private void initSearchView() {
mBind.edtSeacher.setHint(mActivity.getString(R.string.input_sale_product));
mBind.edtSeacher.addTextChangedListener(new MyTextWatcher(){
......@@ -123,19 +128,14 @@ public class SaleProductFragment extends BaseFragment<SaleProductPresent, Fragme
});
}
//跳转详情页
private void toDetail(ProductListBean item) {
Intent intent = new Intent(mActivity, ProductDetailActivity.class);
intent.putExtra("id", item.getId());
mActivity.startActivity(intent);
}
@Override
public int getLayoutId() {
return R.layout.fragment_common_sale;
}
@Subscribe
public void onCollectChange(CollectChangedEvent event) {
......
......@@ -12,6 +12,7 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#f5f5f5"
android:focusable="true"
android:focusableInTouchMode="true"
android:orientation="vertical">
......@@ -20,15 +21,19 @@
android:id="@+id/rl_seacher"
android:layout_width="match_parent"
android:layout_height="45dp"
android:background="@color/cl_white"
>
android:layout_marginLeft="13dp"
android:layout_marginRight="13dp"
android:background="@color/cl_white">
<EditText
android:id="@+id/edt_seacher"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerVertical="true"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginBottom="5dp"
android:layout_toLeftOf="@+id/tv_cancel"
android:background="@null"
android:gravity="center"
android:hint="@string/input_sale_product"
......@@ -50,8 +55,7 @@
android:textColor="@color/cl_black"
android:textSize="16sp"
android:textStyle="bold"
android:visibility="gone"
/>
android:visibility="gone" />
<ImageView
android:layout_width="match_parent"
......@@ -65,8 +69,7 @@
android:id="@+id/recyclerView"
setPresenter="@{presenter}"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#f5f5f5" />
android:layout_height="match_parent" />
</LinearLayout>
</layout>
\ No newline at end of file
include ':app', ':saleCenter',
include ':app', ':saleCenter', ':learnCenter',
':provider',
':baseSDK',
':messageCenter',
......@@ -8,4 +8,5 @@ include ':app', ':saleCenter',
':locationComponent',
':pickerview',
':wheelview',
':IDCardLib', ':umeng'
':IDCardLib',
':umeng'
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment