From 935a87b3578806ca37fee37f03da8c419a3896ce Mon Sep 17 00:00:00 2001 From: lmw <125975490@qq.com> Date: 星期二, 16 七月 2024 15:26:54 +0800 Subject: [PATCH] 删除无效引用 --- settings.gradle | 2 app/src/main/res/values/styles.xml | 33 ----- app/src/main/java/com/dollearn/student/ui/shop/GoodsDetailActivity.kt | 132 ++++++++++++++++++++++ app/src/main/AndroidManifest.xml | 23 --- app/src/main/java/com/dollearn/student/MainActivity.kt | 1 app/src/main/java/com/dollearn/student/ui/home/PayResultActivity.kt | 2 /dev/null | 17 -- app/src/main/java/com/dollearn/student/ui/mine/MineFragment.kt | 1 app/src/main/java/com/dollearn/student/ui/mine/adapter/ExchangeRecordAdapter.kt | 76 ++++++++++++ .idea/gradle.xml | 1 app/src/main/java/com/dollearn/student/ui/mine/ExchangeRecordActivity.kt | 67 +++++++++++ app/src/main/java/com/dollearn/student/ui/shop/ShopFragment.kt | 2 app/build.gradle | 1 13 files changed, 280 insertions(+), 78 deletions(-) diff --git a/.idea/gradle.xml b/.idea/gradle.xml index 3f95b95..26d9f5c 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -12,7 +12,6 @@ <option value="$PROJECT_DIR$/app" /> <option value="$PROJECT_DIR$/umeng_sdk" /> <option value="$PROJECT_DIR$/xldutils-kotlin" /> - <option value="$PROJECT_DIR$/zxinglibrary" /> </set> </option> <option name="resolveExternalAnnotations" value="false" /> diff --git a/app/build.gradle b/app/build.gradle index b8cbb4c..ee67782 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -94,7 +94,6 @@ implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' implementation 'com.youth.banner:banner:2.0.11' implementation project(path: ':umeng_sdk') - implementation project(path: ':zxinglibrary') implementation 'top.zibin:Luban:1.1.8'//图片压缩 implementation 'com.github.dueeeke.dkplayer:dkplayer-java:3.2.6' implementation 'com.github.dueeeke.dkplayer:dkplayer-ui:3.2.6' diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index ab1a974..f28e9e8 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -78,34 +78,17 @@ android:name=".ui.home.MatchActivity" android:label="自主学习5-音图相配" android:screenOrientation="landscape" /> - <activity - android:name=".ui.course.MyCourseDetailActivity" - android:label="课时详情" - android:launchMode="singleTask" /> - <activity - android:name=".ui.course.EvaluationActivity" - android:label="运动营成员评语" /> + <activity android:name=".ui.discovery.NoticeDetailActivity" android:label="公告详情" /> <activity - android:name=".ui.course.JoinedCourseDetailActivity" - android:label="运动营详情" /> - <activity - android:name=".ui.course.ReportActivity" - android:label="测试报告" /> - <activity - android:name=".ui.welfare.GoodsDetailActivity" + android:name=".ui.shop.GoodsDetailActivity" android:label="商品详情" /> <activity - android:name=".ui.welfare.ExchangeRecordActivity" + android:name=".ui.mine.ExchangeRecordActivity" android:label="兑换记录" /> - <activity - android:name=".ui.welfare.ExchangeDetailActivity" - android:label="商品详情" /> - <activity android:name=".ui.welfare.OnlineShopActivity" - android:screenOrientation="landscape"/> <activity android:name=".ui.home.WeekSelectActivity" android:label="第一年学习周目选择" android:screenOrientation="landscape"> <!-- <intent-filter>--> diff --git a/app/src/main/java/com/dollearn/student/MainActivity.kt b/app/src/main/java/com/dollearn/student/MainActivity.kt index feaf6fe..90a8e89 100644 --- a/app/src/main/java/com/dollearn/student/MainActivity.kt +++ b/app/src/main/java/com/dollearn/student/MainActivity.kt @@ -22,7 +22,6 @@ import com.dollearn.student.utils.Const import com.dollearn.student.utils.event.EmptyEvent import kotlinx.android.synthetic.main.activity_main.* -import kotlinx.android.synthetic.main.fragment_shop.* import org.greenrobot.eventbus.EventBus import org.greenrobot.eventbus.Subscribe diff --git a/app/src/main/java/com/dollearn/student/dialog/CalendarDialog.kt b/app/src/main/java/com/dollearn/student/dialog/CalendarDialog.kt deleted file mode 100644 index 74b37d9..0000000 --- a/app/src/main/java/com/dollearn/student/dialog/CalendarDialog.kt +++ /dev/null @@ -1,53 +0,0 @@ -package com.dollearn.student.dialog - -import android.view.Gravity -import androidx.core.os.bundleOf -import androidx.fragment.app.FragmentManager -import cn.sinata.xldutils.utils.showAllowingStateLoss -import com.haibin.calendarview.Calendar -import com.haibin.calendarview.CalendarView -import com.dollearn.student.R -import com.dollearn.student.utils.interfaces.StringCallback -import kotlinx.android.synthetic.main.dialog_calendar.* - -class CalendarDialog:BaseDialogFragment() { - override fun setContentView() = R.layout.dialog_calendar - - var callback:StringCallback? = null - - override fun setGravity() = Gravity.BOTTOM - - override fun initView() { - tv_cancel.setOnClickListener { dismissAllowingStateLoss() } - calendar.setOnCalendarSelectListener(object :CalendarView.OnCalendarSelectListener{ - override fun onCalendarOutOfRange(calendar: Calendar?) { - - } - - override fun onCalendarSelect(calendar: Calendar, isClick: Boolean) { - if (isClick){ - callback?.onResult(calendar.timeInMillis.toString()) - dismissAllowingStateLoss() - } - } - - }) - calendar.setOnMonthChangeListener { year, month -> - tv_date.text = "${year}年${month}月" - } - val c = java.util.Calendar.getInstance() - c.timeInMillis = System.currentTimeMillis()+ 10L*24*60*60*1000 - calendar.setRange(calendar.curYear,calendar.curMonth,calendar.curDay,c.get(java.util.Calendar.YEAR),c.get(java.util.Calendar.MONTH)+1,c.get(java.util.Calendar.DAY_OF_MONTH)) - val current = arguments?.getString("current")?:"" - calendar.scrollToCalendar(current.split("-")[0].toInt(),current.split("-")[1].toInt(),current.split("-")[2].toInt()) - } - - companion object{ - fun show(fm:FragmentManager,current:String,callback: StringCallback){ - val calendarDialog = CalendarDialog() - calendarDialog.arguments = bundleOf("current" to current) - calendarDialog.callback = callback - calendarDialog.showAllowingStateLoss(fm,"calendar") - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/dollearn/student/dialog/CheckShopsDialog.kt b/app/src/main/java/com/dollearn/student/dialog/CheckShopsDialog.kt deleted file mode 100644 index e8a6cab..0000000 --- a/app/src/main/java/com/dollearn/student/dialog/CheckShopsDialog.kt +++ /dev/null @@ -1,41 +0,0 @@ -package com.dollearn.student.dialog - -import android.view.Gravity -import androidx.core.os.bundleOf -import androidx.fragment.app.FragmentManager -import cn.sinata.xldutils.utils.showAllowingStateLoss -import com.dollearn.student.R -import kotlinx.android.synthetic.main.dialog_check_shops.* - -class CheckShopsDialog:BaseDialogFragment() { - override fun setContentView() = R.layout.dialog_check_shops - - override fun setGravity() = Gravity.BOTTOM - - private val type by lazy { arguments?.getInt("type",TYPE_MATCH_SHOP)?:TYPE_MATCH_SHOP } - private val shopinfo by lazy { arguments?.getString("shopinfo") } - - override fun initView() { - if(type == TYPE_COUPON_CITY){ - mtv.text = "可用城市" - }else if (type == TYPE_COUPON_USAGE){ - mtv.text = "可用门店" - }else if (type == TYPE_WORLD_SITE){ - mtv.text = "参与赛点" - } - iv_close.setOnClickListener { dismissAllowingStateLoss() } - mtvinfo.text = shopinfo?.replace(",",",") - } - - companion object{ - const val TYPE_MATCH_SHOP = 1 //赛事参与门店 - const val TYPE_COUPON_USAGE = 2//优惠券可用门店 - const val TYPE_COUPON_CITY = 3//优惠券可用城市 - const val TYPE_WORLD_SITE = 4//参与赛点 - fun show(fm: FragmentManager, content:String, type:Int){ - val loginRuleDialog = CheckShopsDialog() - loginRuleDialog.arguments = bundleOf("shopinfo" to content,"type" to type) - loginRuleDialog.showAllowingStateLoss(fm,"info") - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/dollearn/student/dialog/ConfirmShopDialog.kt b/app/src/main/java/com/dollearn/student/dialog/ConfirmShopDialog.kt deleted file mode 100644 index f332c2d..0000000 --- a/app/src/main/java/com/dollearn/student/dialog/ConfirmShopDialog.kt +++ /dev/null @@ -1,71 +0,0 @@ -package com.dollearn.student.dialog - -import android.view.Gravity -import androidx.core.os.bundleOf -import androidx.fragment.app.FragmentManager -import cn.sinata.xldutils.utils.showAllowingStateLoss -import com.dollearn.student.MainActivity -import com.dollearn.student.R -import com.dollearn.student.utils.Const -import com.dollearn.student.utils.event.EmptyEvent -import com.dollearn.student.utils.interfaces.StringCallback -import kotlinx.android.synthetic.main.dialog_confirm_shop.* -import org.greenrobot.eventbus.EventBus -import org.jetbrains.anko.support.v4.startActivity - -class ConfirmShopDialog : BaseDialogFragment() { - override fun setContentView() = R.layout.dialog_confirm_shop - - private val type by lazy { arguments?.getInt("type",0)?:0 } //作用是根据上级页面显示不同标题 - - var callback: StringCallback? = null - - override fun setGravity() = Gravity.CENTER - - override fun initView() { - when(type){ - TYPE_PLACE->{ - tv_title.text = "请确认预约门店" - } - TYPE_WORLD->{ - tv_title.text = "请确认参与赛点" - tv_change_shop.text = "更换赛点" - } - } - iv_shop.setImageURI(arguments?.getString("img")) - tv_name.text = arguments?.getString("name") - tv_address.text = arguments?.getString("address") - val distance = arguments?.getString("distance") - tv_distance.text = if (distance.isNullOrEmpty()) "" else "距你${distance}" - tv_change_shop.setOnClickListener { - dismissAllowingStateLoss() - startActivity<MainActivity>() - EventBus.getDefault().post(EmptyEvent(Const.EventCode.SHOW_CHANGE_SHOP_DIALOG)) - } - tv_cancel.setOnClickListener { dismissAllowingStateLoss() } - tv_action.setOnClickListener { - callback?.onResult("") - dismissAllowingStateLoss() - } - } - - companion object { - const val TYPE_PLACE = 1 //场地报名 - const val TYPE_WORLD = 2 //世界杯报名 - - fun show( - fm: FragmentManager, - img: String, - name: String, - address: String, - distance: String, - callback: StringCallback, - type:Int = 0 - ) { - val confirmShopDialog = ConfirmShopDialog() - confirmShopDialog.callback = callback - confirmShopDialog.arguments = bundleOf("img" to img,"name" to name,"address" to address,"distance" to distance,"type" to type) - confirmShopDialog.showAllowingStateLoss(fm,"confirm") - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/dollearn/student/dialog/ConfirmShopsDialog.kt b/app/src/main/java/com/dollearn/student/dialog/ConfirmShopsDialog.kt deleted file mode 100644 index 9120765..0000000 --- a/app/src/main/java/com/dollearn/student/dialog/ConfirmShopsDialog.kt +++ /dev/null @@ -1,44 +0,0 @@ -package com.dollearn.student.dialog - -import android.view.Gravity -import androidx.core.os.bundleOf -import androidx.fragment.app.FragmentManager -import cn.sinata.xldutils.utils.showAllowingStateLoss -import com.dollearn.student.R -import com.dollearn.student.utils.interfaces.StringCallback -import kotlinx.android.synthetic.main.dialog_confirm_shops.* - -class ConfirmShopsDialog : BaseDialogFragment() { - override fun setContentView() = R.layout.dialog_confirm_shops - - private val type by lazy { arguments?.getInt("type",0)?:0 } //作用是根据上级页面显示不同标题 - - var callback: StringCallback? = null - - override fun setGravity() = Gravity.CENTER - - override fun initView() { - - tv_name.text = arguments?.getString("name") - - tv_cancel.setOnClickListener { dismissAllowingStateLoss() } - tv_action.setOnClickListener { - callback?.onResult("") - dismissAllowingStateLoss() - } - } - - companion object { - - fun show( - fm: FragmentManager, - name: String, - callback: StringCallback - ) { - val confirmShopDialog = ConfirmShopsDialog() - confirmShopDialog.callback = callback - confirmShopDialog.arguments = bundleOf("name" to name) - confirmShopDialog.showAllowingStateLoss(fm,"confirm") - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/dollearn/student/dialog/CouponFilterPop.kt b/app/src/main/java/com/dollearn/student/dialog/CouponFilterPop.kt deleted file mode 100644 index b185357..0000000 --- a/app/src/main/java/com/dollearn/student/dialog/CouponFilterPop.kt +++ /dev/null @@ -1,47 +0,0 @@ -package com.dollearn.student.dialog - -import android.content.Context -import android.view.LayoutInflater -import android.view.ViewGroup -import android.widget.PopupWindow -import com.dollearn.student.R -import com.dollearn.student.utils.interfaces.StringCallback -import kotlinx.android.synthetic.main.layout_filter_coupon.view.* -import org.jetbrains.anko.dip - -class CouponFilterPop(context: Context) : PopupWindow(context) { - private var callback: StringCallback? = null - - init { - val inflate = LayoutInflater.from(context).inflate(R.layout.layout_filter_coupon, null) - contentView = inflate - inflate?.apply { - tv_all.setOnClickListener { - callback?.onResult("全部") - dismiss() - } - tv_used.setOnClickListener { - callback?.onResult("已使用") - dismiss() - } - tv_unused.setOnClickListener { - callback?.onResult("未使用") - dismiss() - } - tv_disable.setOnClickListener { - callback?.onResult("已过期") - dismiss() - } - } - width = context.dip(100) - height = ViewGroup.LayoutParams.WRAP_CONTENT - setBackgroundDrawable(context.resources.getDrawable(R.color.transparent)) - isOutsideTouchable = true - isFocusable = true - } - - fun setCallback(callback: StringCallback) { - this.callback = callback - } - -} \ No newline at end of file diff --git a/app/src/main/java/com/dollearn/student/dialog/CoursePayDialog.kt b/app/src/main/java/com/dollearn/student/dialog/CoursePayDialog.kt deleted file mode 100644 index 333d4f0..0000000 --- a/app/src/main/java/com/dollearn/student/dialog/CoursePayDialog.kt +++ /dev/null @@ -1,60 +0,0 @@ -package com.dollearn.student.dialog - -import android.view.Gravity -import androidx.core.os.bundleOf -import androidx.fragment.app.FragmentManager -import androidx.recyclerview.widget.LinearLayoutManager -import cn.sinata.xldutils.gone -import cn.sinata.xldutils.utils.SpanBuilder -import cn.sinata.xldutils.utils.myToast -import cn.sinata.xldutils.utils.showAllowingStateLoss -import com.dollearn.student.R -import com.dollearn.student.network.entity.PayCourse -import com.dollearn.student.ui.home.adapter.CoursePayAdapter -import com.dollearn.student.utils.interfaces.StringCallback -import kotlinx.android.synthetic.main.dialog_pay_by_course.* -import org.jetbrains.anko.support.v4.toast - -class CoursePayDialog: BaseDialogFragment() { - override fun setContentView() = R.layout.dialog_pay_by_course - - private val course by lazy {//课时 - arguments?.getInt("course",0)?:0 - } - private val list by lazy {//可用课时 - arguments?.getParcelableArrayList<PayCourse>("list")?: arrayListOf() - } - private val adapter by lazy { - CoursePayAdapter(list,course) - } - - var callback:StringCallback? = null - - override fun setGravity() = Gravity.BOTTOM - - override fun initView() { - tv_count.text = "所需课时数:${course}" - rv_course.layoutManager = LinearLayoutManager(requireContext()) - rv_course.adapter = adapter - tv_cancel.setOnClickListener { - dismissAllowingStateLoss() - } - tv_pay.setOnClickListener { - if (adapter.checked == -1) - myToast("请选择课时") - else - callback?.onResult(list[adapter.checked].id.toString()) - } - } - - companion object{ - - fun show(fm:FragmentManager,callback:StringCallback,course:Int,courseList:ArrayList<PayCourse>){ - val payDialog = CoursePayDialog() - payDialog.arguments = bundleOf("course" to course,"list" to courseList) - payDialog.callback = callback - payDialog.showAllowingStateLoss(fm,"coursePay") - } - } - -} \ No newline at end of file diff --git a/app/src/main/java/com/dollearn/student/dialog/FilterPop.kt b/app/src/main/java/com/dollearn/student/dialog/FilterPop.kt deleted file mode 100644 index 690f9c1..0000000 --- a/app/src/main/java/com/dollearn/student/dialog/FilterPop.kt +++ /dev/null @@ -1,43 +0,0 @@ -package com.dollearn.student.dialog - -import android.content.Context -import android.view.LayoutInflater -import android.view.ViewGroup -import android.widget.PopupWindow -import com.dollearn.student.R -import com.dollearn.student.utils.interfaces.StringCallback -import kotlinx.android.synthetic.main.layout_filter.view.* -import org.jetbrains.anko.dip - -class FilterPop(context: Context) : PopupWindow(context) { - private var callback: StringCallback? = null - - init { - val inflate = LayoutInflater.from(context).inflate(R.layout.layout_filter, null) - contentView = inflate - inflate?.apply { - tv_all.setOnClickListener { - callback?.onResult("全部记录") - dismiss() - } - tv_add.setOnClickListener { - callback?.onResult("增加") - dismiss() - } - tv_reduce.setOnClickListener { - callback?.onResult("扣除") - dismiss() - } - } - width = context.dip(100) - height = ViewGroup.LayoutParams.WRAP_CONTENT - setBackgroundDrawable(context.resources.getDrawable(R.color.transparent)) - isOutsideTouchable = true - isFocusable = true - } - - fun setCallback(callback: StringCallback) { - this.callback = callback - } - -} \ No newline at end of file diff --git a/app/src/main/java/com/dollearn/student/dialog/GetMyCourseDialog.kt b/app/src/main/java/com/dollearn/student/dialog/GetMyCourseDialog.kt deleted file mode 100644 index 82d18f1..0000000 --- a/app/src/main/java/com/dollearn/student/dialog/GetMyCourseDialog.kt +++ /dev/null @@ -1,47 +0,0 @@ -package com.dollearn.student.dialog - -import android.annotation.SuppressLint -import android.view.Gravity -import androidx.recyclerview.widget.LinearLayoutManager -import com.dollearn.student.R -import com.dollearn.student.network.entity.MyCourseList -import com.dollearn.student.ui.course.adapter.MyCoursListAdapter -import com.dollearn.student.utils.interfaces.StringCallback -import kotlinx.android.synthetic.main.dialog_getmycourse.* -import org.jetbrains.anko.support.v4.toast - -class GetMyCourseDialog(val call: StringCallback) : BaseDialogFragment() { - override fun setContentView() = R.layout.dialog_getmycourse - - override fun setGravity() = Gravity.BOTTOM - - - private val data by lazy { arguments?.getSerializable("data") as ArrayList<MyCourseList> } - - val classHour by lazy { - arguments?.getInt("classHour") - } - - val adapter by lazy { - MyCoursListAdapter(data) - } - - @SuppressLint("SetTextI18n") - override fun initView() { - mtvNeedClassHour.text = "所需课时数:$classHour" - rv_list.layoutManager = LinearLayoutManager(context) - rv_list.adapter = adapter - - tv_cancel.setOnClickListener { dismissAllowingStateLoss() } - - tv_action.setOnClickListener { - if(adapter.mData.size==0){ - toast("没有可用数据") - return@setOnClickListener - } - call.onResult(adapter.mData[adapter.checked].id.toString()) - dismissAllowingStateLoss() - } - } - -} \ No newline at end of file diff --git a/app/src/main/java/com/dollearn/student/dialog/GoodsExchangeFilterPop.kt b/app/src/main/java/com/dollearn/student/dialog/GoodsExchangeFilterPop.kt deleted file mode 100644 index 5c891c3..0000000 --- a/app/src/main/java/com/dollearn/student/dialog/GoodsExchangeFilterPop.kt +++ /dev/null @@ -1,51 +0,0 @@ -package com.dollearn.student.dialog - -import android.content.Context -import android.view.LayoutInflater -import android.view.ViewGroup -import android.widget.PopupWindow -import com.dollearn.student.R -import com.dollearn.student.utils.interfaces.StringCallback -import kotlinx.android.synthetic.main.layout_filter_exchange_record.view.* -import org.jetbrains.anko.dip - -class GoodsExchangeFilterPop(context: Context) : PopupWindow(context) { - private var callback: StringCallback? = null - - init { - val inflate = LayoutInflater.from(context).inflate(R.layout.layout_filter_exchange_record, null) - contentView = inflate - inflate?.apply { - tv_all.setOnClickListener { - callback?.onResult("商品类型") - dismiss() - } - tv_goods.setOnClickListener { - callback?.onResult("实物") - dismiss() - } - tv_course.setOnClickListener { - callback?.onResult("运动营") - dismiss() - } - tv_ticke.setOnClickListener { - callback?.onResult("门票") - dismiss() - } - tv_coupon.setOnClickListener { - callback?.onResult("优惠券") - dismiss() - } - } - width = context.dip(100) - height = ViewGroup.LayoutParams.WRAP_CONTENT - setBackgroundDrawable(context.resources.getDrawable(R.color.transparent)) - isOutsideTouchable = true - isFocusable = true - } - - fun setCallback(callback: StringCallback) { - this.callback = callback - } - -} \ No newline at end of file diff --git a/app/src/main/java/com/dollearn/student/dialog/MapTypeDialog.kt b/app/src/main/java/com/dollearn/student/dialog/MapTypeDialog.kt deleted file mode 100644 index a75643a..0000000 --- a/app/src/main/java/com/dollearn/student/dialog/MapTypeDialog.kt +++ /dev/null @@ -1,29 +0,0 @@ -package com.dollearn.student.dialog - -import android.view.Gravity -import com.dollearn.student.R -import com.dollearn.student.utils.interfaces.StringCallback -import kotlinx.android.synthetic.main.dialog_map_type.* - -class MapTypeDialog:BaseDialogFragment() { - override fun setContentView() = R.layout.dialog_map_type - var callback:StringCallback? = null - - override fun setGravity() = Gravity.BOTTOM - - override fun initView() { - tv_gaode.setOnClickListener { - callback?.onResult("a") - dismissAllowingStateLoss() - } - tv_baidu.setOnClickListener { - callback?.onResult("b") - dismissAllowingStateLoss() - } - tv_tencent.setOnClickListener { - callback?.onResult("t") - dismissAllowingStateLoss() - } - } - -} \ No newline at end of file diff --git a/app/src/main/java/com/dollearn/student/dialog/MsgDialog.kt b/app/src/main/java/com/dollearn/student/dialog/MsgDialog.kt deleted file mode 100644 index 309e51e..0000000 --- a/app/src/main/java/com/dollearn/student/dialog/MsgDialog.kt +++ /dev/null @@ -1,67 +0,0 @@ -package com.dollearn.student.dialog - -import android.content.DialogInterface -import android.os.Bundle -import android.os.CountDownTimer -import android.view.Gravity -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.DialogFragment -import cn.sinata.xldutils.gone -import cn.sinata.xldutils.utils.screenWidth -import cn.sinata.xldutils.visible -import com.dollearn.student.R -import kotlinx.android.synthetic.main.dialog_tip.* -import org.jetbrains.anko.wrapContent - -class MsgDialog: DialogFragment() { - override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? = - inflater.inflate(R.layout.dialog_msg,container,false) - - private val countDownTimer by lazy { - object :CountDownTimer(3000,1000){ - override fun onFinish() { - dismiss() - } - - override fun onTick(millisUntilFinished: Long) { - } - } - } - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setStyle(STYLE_NO_FRAME,R.style.FadeDialog) - } - - override fun onActivityCreated(savedInstanceState: Bundle?) { - super.onActivityCreated(savedInstanceState) - dialog?.window?.setLayout((screenWidth()*0.85).toInt(), wrapContent) - dialog?.window?.setGravity(Gravity.CENTER) - dialog?.setCanceledOnTouchOutside(false) - } - - private val msg by lazy { //提示信息 - arguments?.getString("msg")?:"是否确定取消订单?" - } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - tv_msg.text = msg - countDownTimer.start() - } - - override fun onDismiss(dialog: DialogInterface) { - super.onDismiss(dialog) - dismissCallbak?.onDismiss() - } - - interface OnDismiss{ - fun onDismiss() - } - private var dismissCallbak: OnDismiss? = null - fun setDismissCallback(callback: OnDismiss){ - this.dismissCallbak = callback - } -} \ No newline at end of file diff --git a/app/src/main/java/com/dollearn/student/dialog/PayDialog.kt b/app/src/main/java/com/dollearn/student/dialog/PayDialog.kt deleted file mode 100644 index cc0126a..0000000 --- a/app/src/main/java/com/dollearn/student/dialog/PayDialog.kt +++ /dev/null @@ -1,112 +0,0 @@ -package com.dollearn.student.dialog - -import android.view.Gravity -import androidx.core.os.bundleOf -import androidx.fragment.app.FragmentManager -import cn.sinata.xldutils.gone -import cn.sinata.xldutils.utils.SpanBuilder -import cn.sinata.xldutils.utils.showAllowingStateLoss -import com.dollearn.student.R -import com.dollearn.student.utils.extention.clickDelay -import com.dollearn.student.utils.interfaces.StringCallback -import kotlinx.android.synthetic.main.dialog_pay.* -import org.jetbrains.anko.support.v4.toast - -class PayDialog: BaseDialogFragment() { - override fun setContentView() = R.layout.dialog_pay - - private val isVip by lazy { - arguments?.getBoolean("isVip",false)?:false - } - private val coin by lazy {//玩湃币 - arguments?.getInt("coin",0)?:0 - } - private val course by lazy {//课时 - arguments?.getInt("course",0)?:0 - } - private val integral by lazy { //积分 - arguments?.getInt("integral",0)?:0 - } - private val price by lazy {//钱 - arguments?.getDouble("price",0.0)?:0.0 - } - private val courseEnable by lazy { //课时支付是否可用,不可用需将按钮置灰 - arguments?.getBoolean("courseEnable",true)?:true - } - var callback:StringCallback? = null - - override fun setGravity() = Gravity.BOTTOM - - override fun initView() { - if (isVip){ - tv_coin.gone() - line.gone() - tv_course.gone() - line3.gone() - tv_integral.gone() - line4.gone() - tv_wx.text = SpanBuilder("微信支付 ¥199").color(requireContext(),0,4,R.color.textColor66).build() - tv_ali.text = SpanBuilder("支付宝支付 ¥199").color(requireContext(),0,5,R.color.textColor66).build() - }else{ - if (price == 0.0){ - line1.gone() - line2.gone() - tv_wx.gone() - tv_ali.gone() - tv_coin.isChecked = true - }else{ - tv_wx.text = SpanBuilder("微信支付 ¥%.2f".format(price)).color(requireContext(),0,4,R.color.textColor66).build() - tv_ali.text = SpanBuilder("支付宝支付 ¥%.2f".format(price)).color(requireContext(),0,5,R.color.textColor66).build() - } - if (coin == 0){ - tv_coin.gone() - line.gone() - }else - tv_coin.text = SpanBuilder("玩湃币支付 ${coin}币").color(requireContext(),0,5,R.color.textColor66).build() - if (course == 0){ - tv_course.gone() - line3.gone() - }else{ - tv_course.text = SpanBuilder("课时支付 ${course}课时").color(requireContext(),0,4,R.color.textColor66).build() - if (!courseEnable){ - tv_course.isEnabled = false - tv_course.alpha = 0.5f - } - } - - if (integral == 0){ - tv_integral.gone() - line4.gone() - }else - tv_integral.text = SpanBuilder("积分支付 ${integral}积分").color(requireContext(),0,4,R.color.textColor66).build() - } - tv_cancel.setOnClickListener { - dismissAllowingStateLoss() - } - tv_pay.clickDelay { -// val type = if (tv_ali.isChecked) 2 else if (tv_wx.isChecked) 1 else 3 - val type = when(rg_pay.checkedRadioButtonId){ - R.id.tv_ali->2 - R.id.tv_wx->1 - R.id.tv_integral->5 - R.id.tv_coin->3 - else->4 - } - callback?.onResult(type.toString()) - dismissAllowingStateLoss() - } - } - - companion object{ - /** - * @param courseEnable 赛事可以用课时支付,但当参赛学员有非学员身份时,课时支付需要置灰 - */ - fun show(fm:FragmentManager,isVip:Boolean,callback:StringCallback,price:Double? = null,coin:Int? = null,course:Int? = null,integral:Int? = null,courseEnable:Boolean? = null){ - val payDialog = PayDialog() - payDialog.arguments = bundleOf("isVip" to isVip,"price" to price,"coin" to coin,"course" to course,"integral" to integral,"courseEnable" to courseEnable) - payDialog.callback = callback - payDialog.showAllowingStateLoss(fm,"pay") - } - } - -} \ No newline at end of file diff --git a/app/src/main/java/com/dollearn/student/dialog/TimeFilterPop.kt b/app/src/main/java/com/dollearn/student/dialog/TimeFilterPop.kt deleted file mode 100644 index 2c19f3e..0000000 --- a/app/src/main/java/com/dollearn/student/dialog/TimeFilterPop.kt +++ /dev/null @@ -1,47 +0,0 @@ -package com.dollearn.student.dialog - -import android.content.Context -import android.view.LayoutInflater -import android.view.ViewGroup -import android.widget.PopupWindow -import com.dollearn.student.R -import com.dollearn.student.utils.interfaces.StringCallback -import kotlinx.android.synthetic.main.layout_filter_time.view.* -import org.jetbrains.anko.dip - -class TimeFilterPop(context: Context) : PopupWindow(context) { - private var callback: StringCallback? = null - - init { - val inflate = LayoutInflater.from(context).inflate(R.layout.layout_filter_time, null) - contentView = inflate - inflate?.apply { - tv_all.setOnClickListener { - callback?.onResult("上课时间") - dismiss() - } - tv_week.setOnClickListener { - callback?.onResult("最近一周") - dismiss() - } - tv_month.setOnClickListener { - callback?.onResult("最近一月") - dismiss() - } - tv_year.setOnClickListener { - callback?.onResult("最近一年") - dismiss() - } - } - width = context.dip(100) - height = ViewGroup.LayoutParams.WRAP_CONTENT - setBackgroundDrawable(context.resources.getDrawable(R.color.transparent)) - isOutsideTouchable = true - isFocusable = true - } - - fun setCallback(callback: StringCallback) { - this.callback = callback - } - -} \ No newline at end of file diff --git a/app/src/main/java/com/dollearn/student/dialog/UndistributedClassHourialog.kt b/app/src/main/java/com/dollearn/student/dialog/UndistributedClassHourialog.kt deleted file mode 100644 index a45078e..0000000 --- a/app/src/main/java/com/dollearn/student/dialog/UndistributedClassHourialog.kt +++ /dev/null @@ -1,74 +0,0 @@ -package com.dollearn.student.dialog - -import android.annotation.SuppressLint -import android.view.Gravity -import androidx.core.os.bundleOf -import androidx.fragment.app.FragmentManager -import androidx.recyclerview.widget.LinearLayoutManager -import cn.sinata.xldutils.utils.showAllowingStateLoss -import com.dollearn.student.R -import com.dollearn.student.network.entity.MyCourse -import com.dollearn.student.ui.course.adapter.ClassHourChooseAdapter -import com.dollearn.student.utils.interfaces.StringCallback -import kotlinx.android.synthetic.main.dialog_exchange_count.tv_action -import kotlinx.android.synthetic.main.dialog_exchange_count.tv_cancel -import kotlinx.android.synthetic.main.dialog_wfp_classhour.* - -class UndistributedClassHourialog : BaseDialogFragment() { - override fun setContentView() = R.layout.dialog_wfp_classhour - - var callback: StringCallback? = null - - val count by lazy { - arguments?.getInt("count") ?: 0 - } - - val list by lazy { - arguments?.getSerializable("list") as ArrayList<MyCourse> - } - - val adapter by lazy { - ClassHourChooseAdapter(list) - } - - override fun setGravity() = Gravity.CENTER - - @SuppressLint("SetTextI18n", "NotifyDataSetChanged") - override fun initView() { - mtvinfo.text = "未分配课时数:$count" - tv_action.setOnClickListener { - callback?.onResult(list[adapter.checked].id) - dismissAllowingStateLoss() - } - tv_cancel.setOnClickListener { dismissAllowingStateLoss() } - - mrl.layoutManager = LinearLayoutManager(context) - mrl.adapter = adapter - adapter.setOnItemClickListener { _, position -> - run { - adapter.checked = position - adapter.notifyDataSetChanged() - } - - } - } - - companion object { - fun show( - fm: FragmentManager, - count: Int, - list: ArrayList<MyCourse>, - callback: StringCallback - ) :UndistributedClassHourialog{ - val exchangeCountDialog = UndistributedClassHourialog() - exchangeCountDialog.callback = callback - exchangeCountDialog.arguments = bundleOf( - "count" to count, - "list" to list - ) - exchangeCountDialog.showAllowingStateLoss(fm, "") - - return exchangeCountDialog - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/dollearn/student/ui/course/EvaluationActivity.kt b/app/src/main/java/com/dollearn/student/ui/course/EvaluationActivity.kt deleted file mode 100644 index 6db4a0c..0000000 --- a/app/src/main/java/com/dollearn/student/ui/course/EvaluationActivity.kt +++ /dev/null @@ -1,43 +0,0 @@ -package com.dollearn.student.ui.course - -import android.view.View -import androidx.recyclerview.widget.LinearLayoutManager -import com.dollearn.student.R -import com.dollearn.student.network.HttpManager -import com.dollearn.student.network.entity.Evaluation -import com.dollearn.student.network.request -import com.dollearn.student.ui.TransparentStatusBarActivity -import com.dollearn.student.ui.course.adapter.EvaluationAdapter -import kotlinx.android.synthetic.main.layout_common_list.* - -class EvaluationActivity : TransparentStatusBarActivity() { - override fun setContentView() = R.layout.layout_common_list - - private val stuId by lazy { intent.getStringExtra("stuId")?:"" } - private val list = arrayListOf<Evaluation>() - private val adapter = EvaluationAdapter(list) - override fun initClick() { - } - - override fun initView() { - rv_list.layoutManager = LinearLayoutManager(this) - rv_list.adapter = adapter - refreshLayout.setEnableLoadMore(false) - refreshLayout.setOnRefreshListener { - getEvaluations() - } - getEvaluations() - } - - private fun getEvaluations(){ - HttpManager.stuComment(stuId).request(this,success = { _, data-> - refreshLayout.finishRefresh(true) - list.clear() - list.addAll(data?: arrayListOf()) - adapter.notifyDataSetChanged() - tv_empty.visibility = if (list.isEmpty()) View.VISIBLE else View.GONE - }){_,_-> - refreshLayout.finishRefresh(false) - } - } -} diff --git a/app/src/main/java/com/dollearn/student/ui/course/JoinedCourseDetailActivity.kt b/app/src/main/java/com/dollearn/student/ui/course/JoinedCourseDetailActivity.kt deleted file mode 100644 index 3adcfa6..0000000 --- a/app/src/main/java/com/dollearn/student/ui/course/JoinedCourseDetailActivity.kt +++ /dev/null @@ -1,102 +0,0 @@ -package com.dollearn.student.ui.course - -import android.view.View -import cn.sinata.xldutils.gone -import cn.sinata.xldutils.utils.* -import cn.sinata.xldutils.visible -import com.dollearn.student.R -import com.dollearn.student.DollearnApplication -import com.dollearn.student.network.HttpManager -import com.dollearn.student.network.entity.Banner -import com.dollearn.student.network.entity.JoinedCourse -import com.dollearn.student.network.request -import com.dollearn.student.ui.TransparentStatusBarActivity -import com.dollearn.student.ui.home.adapter.HomeBannerAdapter -import com.dollearn.student.utils.extention.clickDelay -import com.dollearn.student.utils.extention.loadLongImage -import kotlinx.android.synthetic.main.activity_joined_course_deatil.* -import kotlinx.android.synthetic.main.dialog_pay.* -import org.jetbrains.anko.startActivity - -class JoinedCourseDetailActivity :TransparentStatusBarActivity(){ - override fun setContentView() = R.layout.activity_joined_course_deatil - - private val id by lazy { intent.getStringExtra("id")!! } - private val orderId by lazy { intent.getStringExtra("orderId")!! } - - private var course:JoinedCourse? = null - - private val bannerImg = arrayListOf<Banner>() - private val bannerAdapter by lazy { - HomeBannerAdapter(bannerImg, this) - } - - override fun initClick() { - tv_action.clickDelay { - - } - } - - override fun initView() { - banner.adapter = bannerAdapter - getDetail() - } - - private fun getDetail(){ - HttpManager.registeredData(id,orderId).request(this){_,data-> - course = data - data?.apply { - val tag = type?.let { - when (it) { - 1 -> { - mll_class_yxq.gone() - "常规班" - } - 2 -> { //安雪晖:假期课没有续课按钮,显示运动营有效期 - ll_bottom.gone() - mll_class_yxq.visible() - mtv_class_yxq.text = time - "假期班" - } - 3 -> { - class_time.gone()//安雪晖:体验课没有上课时间 - ll_bottom.gone() - mll_class_yxq.visible() - mtv_class_yxq.text = "购买当天有效" - "体验班" - } - else -> "" - } - } - tv_address.text = "${storeName}(${storeAddress})" - tv_distance.text = "距离我${distance}km" - mtvtag.visibility = if (tag.isNullOrEmpty()) View.GONE else View.VISIBLE - mtvtag.text = tag - bannerImg.addAll((detailDrawing?:"").split(",").map { Banner(url = it) }) - bannerAdapter.notifyDataSetChanged() - tv_name.text = coursePackageName - tv_week.text = weeks?.replace(";","、") - tv_time.text = courseTimeFrame - if (!introduceDrawing.isNullOrEmpty()){ - introduceDrawing.loadLongImage(this@JoinedCourseDetailActivity,iv_introduction) - } - if (amount == 0.0) - tv_price.gone() - else - tv_price.text = "¥%s".format(amount.toString()) - if (vipAmount == 0.0) - tv_vip_price.gone() - else - tv_vip_price.text = SpanBuilder("会员价:¥%s".format(vipAmount.toString())).color(this@JoinedCourseDetailActivity,0,4,R.color.textColor).build() - if (wpGold == 0) - tv_coin_price.gone() - else - tv_coin_price.text = SpanBuilder("玩湃币:%d币".format(wpGold)).color(this@JoinedCourseDetailActivity,0,4,R.color.textColor).build() - - tv_action.text = if (payStatus == 1) "立即支付" else "续课" - } - - } - } - -} diff --git a/app/src/main/java/com/dollearn/student/ui/course/MyCourseDetailActivity.kt b/app/src/main/java/com/dollearn/student/ui/course/MyCourseDetailActivity.kt deleted file mode 100644 index 746c361..0000000 --- a/app/src/main/java/com/dollearn/student/ui/course/MyCourseDetailActivity.kt +++ /dev/null @@ -1,140 +0,0 @@ -package com.dollearn.student.ui.course - -import android.content.Intent -import android.view.View -import androidx.recyclerview.widget.LinearLayoutManager -import cn.sinata.xldutils.utils.showAllowingStateLoss -import cn.sinata.xldutils.utils.toTime -import com.dollearn.student.R -import com.dollearn.student.DollearnApplication -import com.dollearn.student.dialog.ChooseMonthDialog -import com.dollearn.student.dialog.FilterPop -import com.dollearn.student.network.HttpManager -import com.dollearn.student.network.entity.CourseRecord -import com.dollearn.student.network.entity.Session -import com.dollearn.student.network.request -import com.dollearn.student.ui.TransparentStatusBarActivity -import com.dollearn.student.ui.course.adapter.CourseNameAdapter -import com.dollearn.student.ui.course.adapter.CourseRecordAdapter -import com.dollearn.student.utils.interfaces.StringCallback -import kotlinx.android.synthetic.main.activity_my_course_detail.* -import org.jetbrains.anko.startActivityForResult - -class MyCourseDetailActivity : TransparentStatusBarActivity() { - override fun setContentView() = R.layout.activity_my_course_detail - - private val stuId by lazy { intent.getStringExtra("stuId")?:"" } - private var courseId = "" - private val names = arrayListOf<Session>() - private val nameAdapter = CourseNameAdapter(names) - private val records = arrayListOf<CourseRecord>() - private val recordAdapter = CourseRecordAdapter(records) - - private var date = "" - private var type: Int? = null - - override fun initClick() { - nameAdapter.setOnItemClickListener { view, position -> - nameAdapter.checked = position - tv_deadline.text = "有效期:${names[position].periodOfValidity}" - nameAdapter.notifyDataSetChanged() - refreshCourseInfo() - } - - tv_month.setOnClickListener { - val chooseMonthDialog = ChooseMonthDialog() - chooseMonthDialog.setCallback(object : StringCallback { - override fun onResult(rst: String) { - tv_month.text = rst - date = rst.replace("年", "-").replace("月", "") - getRecord() - } - }) - chooseMonthDialog.showAllowingStateLoss(supportFragmentManager, "date") - } - - tv_filter.setOnClickListener { - val menuPop = FilterPop(this) - menuPop.setCallback(object : StringCallback { - override fun onResult(rst: String) { - tv_filter.text = rst - type = when (rst) { - "增加" -> 1 - "扣除" -> 2 - else -> null - } - getRecord() - } - }) - menuPop.contentView - .measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED) - menuPop.showAsDropDown(tv_filter, 0, 0, 0) - } - - tv_buy.setOnClickListener { - - } - } - - override fun initView() { - courseId = intent.getStringExtra("courseId")?:"" - tv_month.text = System.currentTimeMillis().toTime("yyyy年MM月") - date = System.currentTimeMillis().toTime("yyyy-MM") - rv_name.layoutManager = LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false) - rv_name.adapter = nameAdapter - rv_record.layoutManager = LinearLayoutManager(this) - rv_record.adapter = recordAdapter - getData() - getRecord() - } - - - private fun getData() { - HttpManager.lessonDetails(courseId, stuId).request(this) { _, data -> - data?.apply { - iv_avatar.setImageURI(stuImage) - tv_name.text = stuName - tv_deadline.text = "有效期:${sessionNames.firstOrNull()?.periodOfValidity}" - tv_total_count.text = totalNums - tv_used_count.text = deductedNums - tv_last_count.text = remainingNums - - // tv_used.text = "已扣课时数:${deductionClassHours}" - names.clear() - names.addAll(sessionNames) - nameAdapter.notifyDataSetChanged() - refreshCourseInfo() -// records.clear() -// records.addAll(details) -// recordAdapter.notifyDataSetChanged() - } - } - } - - /** - * 显示课时信息 - */ - private fun refreshCourseInfo() { - val current = names[nameAdapter.checked] - tv_total_count2.text = current.totalNums - tv_used_count2.text = current.deductedNums - tv_last_count2.text = current.remainingNums - courseId = current.sessionid - getRecord() - } - - private fun getRecord() { - HttpManager.recordDetails(stuId, courseId, date, type).request(this) { _, data -> - records.clear() - records.addAll(data ?: arrayListOf()) - recordAdapter.notifyDataSetChanged() - } - } - - override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { - super.onActivityResult(requestCode, resultCode, data) - if (requestCode == 1) { - getData() - } - } -} diff --git a/app/src/main/java/com/dollearn/student/ui/course/ReportActivity.kt b/app/src/main/java/com/dollearn/student/ui/course/ReportActivity.kt deleted file mode 100644 index 974de02..0000000 --- a/app/src/main/java/com/dollearn/student/ui/course/ReportActivity.kt +++ /dev/null @@ -1,103 +0,0 @@ -package com.dollearn.student.ui.course - -import android.graphics.Bitmap -import android.os.Environment -import android.provider.MediaStore -import android.widget.ImageView -import androidx.constraintlayout.widget.ConstraintLayout -import androidx.core.view.drawToBitmap -import cn.sinata.xldutils.activity.ImagePagerActivity -import cn.sinata.xldutils.gone -import cn.sinata.xldutils.utils.SpanBuilder -import cn.sinata.xldutils.utils.myToast -import cn.sinata.xldutils.visible -import com.bumptech.glide.Glide -import com.bumptech.glide.request.target.SimpleTarget -import com.bumptech.glide.request.transition.Transition -import com.dollearn.student.R -import com.dollearn.student.network.HttpManager -import com.dollearn.student.network.request -import com.dollearn.student.ui.TransparentStatusBarActivity -import com.dollearn.student.utils.extention.loadLongImage -import kotlinx.android.synthetic.main.activity_report.* -import org.jetbrains.anko.startActivity -import java.io.File -import java.io.FileOutputStream -import java.lang.Exception - -class ReportActivity : TransparentStatusBarActivity() { - override fun setContentView() = R.layout.activity_report - - private val id by lazy { intent.getStringExtra("id")?:"" } - private var urls = arrayListOf<String>() - - override fun initClick() { - iv_report_1.setOnClickListener { - startActivity<ImagePagerActivity>("url" to urls,"position" to 0) - } - iv_report_2.setOnClickListener { - startActivity<ImagePagerActivity>("url" to urls,"position" to 1) - } - iv_report_3.setOnClickListener { - startActivity<ImagePagerActivity>("url" to urls,"position" to 2) - } - iv_report_1.setOnLongClickListener { - saveImg(iv_report_1) - return@setOnLongClickListener true - } - iv_report_2.setOnLongClickListener { - saveImg(iv_report_2) - return@setOnLongClickListener true - } - iv_report_3.setOnLongClickListener { - saveImg(iv_report_3) - return@setOnLongClickListener true - } - } - - override fun initView() { - getData() - } - - private fun saveImg(v: ImageView){ - try { - val copyPath = - getExternalFilesDir(Environment.DIRECTORY_DCIM)!!.absolutePath + "/" + System.currentTimeMillis() + ".png" - val file = File(copyPath) - if (!file.exists()) { - file.createNewFile() - } - val fors = FileOutputStream(file) - v.drawToBitmap()?.compress(Bitmap.CompressFormat.PNG, 0, fors) - fors.flush() - fors.close() - MediaStore.Images.Media.insertImage(this.contentResolver, file.absolutePath, copyPath, null); - myToast("图片已保存") - } catch (e: Exception) { - } - } - - private fun getData(){ - HttpManager.queryPhysical(id).request(this){_,data-> - data?.apply { - try { - val heightS = "${height}cm" - tv_height.text = SpanBuilder(heightS).size(heightS.length-2,heightS.length,14).build() - val weightS = "${weight}kg" - tv_wight.text = SpanBuilder(weightS).size(weightS.length-2,weightS.length,14).build() - val bmiS = "${bmi}${bodyStatus}" - tv_bmi.text = SpanBuilder(bmiS).size(bmiS.indexOf(bodyStatus),bmiS.length,14).build() - this@ReportActivity.urls.addAll(urls) - if (!urls.isNullOrEmpty()){ - urls.firstOrNull()?.loadLongImage(this@ReportActivity,iv_report_1) - urls[1].loadLongImage(this@ReportActivity,iv_report_2) - urls[2].loadLongImage(this@ReportActivity,iv_report_3) - }else{ - tv_empty.visible() - } - }catch (e:Exception){ - } - } - } - } -} diff --git a/app/src/main/java/com/dollearn/student/ui/course/adapter/ClassHourChooseAdapter.kt b/app/src/main/java/com/dollearn/student/ui/course/adapter/ClassHourChooseAdapter.kt deleted file mode 100644 index b12d8f9..0000000 --- a/app/src/main/java/com/dollearn/student/ui/course/adapter/ClassHourChooseAdapter.kt +++ /dev/null @@ -1,22 +0,0 @@ -package com.dollearn.student.ui.course.adapter - -import android.widget.TextView -import cn.sinata.xldutils.adapter.HFRecyclerAdapter -import cn.sinata.xldutils.adapter.util.ViewHolder -import com.dollearn.student.R -import com.dollearn.student.network.entity.MyCourse -import com.dollearn.student.network.entity.Session -import org.jetbrains.anko.backgroundResource -import org.jetbrains.anko.textColorResource -import java.util.ArrayList - -class ClassHourChooseAdapter(names: ArrayList<MyCourse>) : - HFRecyclerAdapter<MyCourse>(names, R.layout.item_class_hour) { - var checked = 0 - override fun onBind(holder: ViewHolder, position: Int, data: MyCourse) { - holder.setText(R.id.mtvName, data.courseName) - holder.bind<TextView>(R.id.vchoose).backgroundResource = - if (position == checked) R.mipmap.coupon_checked else R.mipmap.coupon_uncheck - } - -} diff --git a/app/src/main/java/com/dollearn/student/ui/course/adapter/CourseNameAdapter.kt b/app/src/main/java/com/dollearn/student/ui/course/adapter/CourseNameAdapter.kt deleted file mode 100644 index 4addf5c..0000000 --- a/app/src/main/java/com/dollearn/student/ui/course/adapter/CourseNameAdapter.kt +++ /dev/null @@ -1,18 +0,0 @@ -package com.dollearn.student.ui.course.adapter - -import android.widget.TextView -import cn.sinata.xldutils.adapter.HFRecyclerAdapter -import cn.sinata.xldutils.adapter.util.ViewHolder -import com.dollearn.student.R -import com.dollearn.student.network.entity.Session -import org.jetbrains.anko.textColorResource -import java.util.ArrayList - -class CourseNameAdapter(names: ArrayList<Session>) :HFRecyclerAdapter<Session>(names, R.layout.item_course_name){ - var checked = 0 - override fun onBind(holder: ViewHolder, position: Int, data: Session) { - holder.setText(R.id.tv_name,data.sessionName) - holder.bind<TextView>(R.id.tv_name).textColorResource = if (position == checked) R.color.textColorGreen else R.color.textColor99 - } - -} diff --git a/app/src/main/java/com/dollearn/student/ui/course/adapter/CourseRecordAdapter.kt b/app/src/main/java/com/dollearn/student/ui/course/adapter/CourseRecordAdapter.kt deleted file mode 100644 index eabdb72..0000000 --- a/app/src/main/java/com/dollearn/student/ui/course/adapter/CourseRecordAdapter.kt +++ /dev/null @@ -1,19 +0,0 @@ -package com.dollearn.student.ui.course.adapter - -import android.widget.TextView -import cn.sinata.xldutils.adapter.HFRecyclerAdapter -import cn.sinata.xldutils.adapter.util.ViewHolder -import com.dollearn.student.R -import com.dollearn.student.network.entity.CourseRecord -import org.jetbrains.anko.textColorResource -import java.util.ArrayList - -class CourseRecordAdapter(records: ArrayList<CourseRecord>) :HFRecyclerAdapter<CourseRecord>(records, R.layout.item_course_record){ - override fun onBind(holder: ViewHolder, position: Int, data: CourseRecord) { - holder.setText(R.id.tv_name,data.purchaseType) - holder.setText(R.id.tv_time,data.purchaseTime) - holder.setText(R.id.tv_record,data.purchaseAmount) - holder.bind<TextView>(R.id.tv_record).textColorResource = if (data.purchaseAmount.startsWith("-")) R.color.color_text_price else R.color.textColorGreen - } - -} diff --git a/app/src/main/java/com/dollearn/student/ui/course/adapter/EvaluationAdapter.kt b/app/src/main/java/com/dollearn/student/ui/course/adapter/EvaluationAdapter.kt deleted file mode 100644 index a716662..0000000 --- a/app/src/main/java/com/dollearn/student/ui/course/adapter/EvaluationAdapter.kt +++ /dev/null @@ -1,26 +0,0 @@ -package com.dollearn.student.ui.course.adapter - -import androidx.recyclerview.widget.GridLayoutManager -import androidx.recyclerview.widget.RecyclerView -import cn.sinata.xldutils.adapter.HFRecyclerAdapter -import cn.sinata.xldutils.adapter.util.ViewHolder -import com.facebook.drawee.view.SimpleDraweeView -import com.dollearn.student.R -import com.dollearn.student.network.entity.Evaluation -import java.util.ArrayList - -class EvaluationAdapter(list: ArrayList<Evaluation>) :HFRecyclerAdapter<Evaluation>(list, R.layout.item_evaluation){ - override fun onBind(holder: ViewHolder, position: Int, data: Evaluation) { - holder.bind<SimpleDraweeView>(R.id.iv_avatar).setImageURI(data.headImg) - holder.setText(R.id.tv_name,data.stuName) - holder.setText(R.id.tv_time,data.comTime) - holder.setText(R.id.tv_content,data.contents) - holder.bind<RecyclerView>(R.id.rv_photo).apply { - layoutManager = GridLayoutManager(context,3) - val img = arrayListOf<String>() - img.addAll(data.imgs) - adapter = PhotoAdapter(img) - } - } - -} diff --git a/app/src/main/java/com/dollearn/student/ui/course/adapter/ExerciseGridAdapter.kt b/app/src/main/java/com/dollearn/student/ui/course/adapter/ExerciseGridAdapter.kt deleted file mode 100644 index 42941f2..0000000 --- a/app/src/main/java/com/dollearn/student/ui/course/adapter/ExerciseGridAdapter.kt +++ /dev/null @@ -1,15 +0,0 @@ -package com.dollearn.student.ui.course.adapter - -import cn.sinata.xldutils.adapter.HFRecyclerAdapter -import cn.sinata.xldutils.adapter.util.ViewHolder -import com.facebook.drawee.view.SimpleDraweeView -import com.dollearn.student.R -import com.dollearn.student.network.entity.Exercise -import java.util.ArrayList - -class ExerciseGridAdapter(exerciseList: ArrayList<Exercise>) :HFRecyclerAdapter<Exercise>(exerciseList, R.layout.item_exercise){ - override fun onBind(holder: ViewHolder, position: Int, data: Exercise) { - holder.bind<SimpleDraweeView>(R.id.iv_img).setImageURI(data.videoCoverImgUrl) - holder.setText(R.id.tv_name,data.videoName) - } -} diff --git a/app/src/main/java/com/dollearn/student/ui/course/adapter/JoinedCourseAdapter.kt b/app/src/main/java/com/dollearn/student/ui/course/adapter/JoinedCourseAdapter.kt deleted file mode 100644 index 9d6541a..0000000 --- a/app/src/main/java/com/dollearn/student/ui/course/adapter/JoinedCourseAdapter.kt +++ /dev/null @@ -1,40 +0,0 @@ -package com.dollearn.student.ui.course.adapter - -import android.view.View -import android.widget.TextView -import cn.sinata.xldutils.adapter.HFRecyclerAdapter -import cn.sinata.xldutils.adapter.util.ViewHolder -import cn.sinata.xldutils.gone -import cn.sinata.xldutils.utils.SpanBuilder -import cn.sinata.xldutils.visible -import com.facebook.drawee.view.SimpleDraweeView -import com.dollearn.student.R -import com.dollearn.student.network.entity.JoinedCourse -import java.util.ArrayList - -class JoinedCourseAdapter(datas: ArrayList<JoinedCourse>) : - HFRecyclerAdapter<JoinedCourse>(datas, R.layout.item_joined_course) { - override fun onBind(holder: ViewHolder, position: Int, data: JoinedCourse) { - holder.bind<SimpleDraweeView>(R.id.iv_img).setImageURI(data.packageImg) - holder.setText(R.id.tv_name, data.courseNameStore) - holder.setText(R.id.tv_time, "报名时间:${data.courseTime}") - // holder.setText(R.id.tv_teacher,"授课老师${data.courseTeacher}") - val tv_used = holder.bind<TextView>(R.id.tv_used) - when (data.type) { - 1 -> { - tv_used.visible() - tv_used.text = SpanBuilder("已上课时数:${data.courseNums}课时").color( - context, - 0, - 6, - R.color.textColor66 - ).build() - } - else -> tv_used.gone() - } - - holder.bind<View>(R.id.tv_un_pay).visibility = - if (data.payStatus == 2) View.GONE else View.VISIBLE - } - -} diff --git a/app/src/main/java/com/dollearn/student/ui/course/adapter/MedalGridAdapter.kt b/app/src/main/java/com/dollearn/student/ui/course/adapter/MedalGridAdapter.kt deleted file mode 100644 index ecbef4c..0000000 --- a/app/src/main/java/com/dollearn/student/ui/course/adapter/MedalGridAdapter.kt +++ /dev/null @@ -1,19 +0,0 @@ -package com.dollearn.student.ui.course.adapter - -import android.widget.TextView -import cn.sinata.xldutils.adapter.HFRecyclerAdapter -import cn.sinata.xldutils.adapter.util.ViewHolder -import com.dollearn.student.R -import com.dollearn.student.network.entity.Medal -import java.util.ArrayList - -class MedalGridAdapter(medalList: ArrayList<Medal>) :HFRecyclerAdapter<Medal>(medalList, R.layout.item_medal_grid){ - override fun onBind(holder: ViewHolder, position: Int, data: Medal) { - holder.bind<TextView>(R.id.tv_english).apply { - text = data.getEnglish() - setCompoundDrawablesRelativeWithIntrinsicBounds(0,data.getIcon(),0,0) - } - holder.setText(R.id.tv_name,data.medalName) - } - -} diff --git a/app/src/main/java/com/dollearn/student/ui/course/adapter/MyCoursListAdapter.kt b/app/src/main/java/com/dollearn/student/ui/course/adapter/MyCoursListAdapter.kt deleted file mode 100644 index 2702ff3..0000000 --- a/app/src/main/java/com/dollearn/student/ui/course/adapter/MyCoursListAdapter.kt +++ /dev/null @@ -1,28 +0,0 @@ -package com.dollearn.student.ui.course.adapter - -import android.annotation.SuppressLint -import android.widget.TextView -import cn.sinata.xldutils.adapter.HFRecyclerAdapter -import cn.sinata.xldutils.adapter.util.ViewHolder -import com.dollearn.student.R -import com.dollearn.student.network.entity.MyCourseList -import org.jetbrains.anko.backgroundResource -import java.util.ArrayList - -class MyCoursListAdapter(names: ArrayList<MyCourseList>) : - HFRecyclerAdapter<MyCourseList>(names, R.layout.item_my_course_list) { - var checked = 0 - - @SuppressLint("NotifyDataSetChanged") - override fun onBind(holder: ViewHolder, position: Int, data: MyCourseList) { - holder.setText(R.id.mtvName, data.name) - holder.setText(R.id.mtvClassHour, "(剩余:${data.courseNum} 课时)") - holder.bind<TextView>(R.id.vchoose).backgroundResource = - if (position == checked) R.mipmap.coupon_checked else R.mipmap.coupon_uncheck - holder.itemView.setOnClickListener { - checked = position - notifyDataSetChanged() - } - } - -} diff --git a/app/src/main/java/com/dollearn/student/ui/course/adapter/MyCourseAdapter.kt b/app/src/main/java/com/dollearn/student/ui/course/adapter/MyCourseAdapter.kt deleted file mode 100644 index a319da1..0000000 --- a/app/src/main/java/com/dollearn/student/ui/course/adapter/MyCourseAdapter.kt +++ /dev/null @@ -1,18 +0,0 @@ -package com.dollearn.student.ui.course.adapter - -import android.widget.TextView -import cn.sinata.xldutils.adapter.HFRecyclerAdapter -import cn.sinata.xldutils.adapter.util.ViewHolder -import com.dollearn.student.R -import com.dollearn.student.network.entity.MyCourse -import java.util.ArrayList - -class MyCourseAdapter(courseList: ArrayList<MyCourse>) :HFRecyclerAdapter<MyCourse>(courseList, R.layout.item_my_course_check){ - var checked = 0 - override fun onBind(holder: ViewHolder, position: Int, data: MyCourse) { - holder.bind<TextView>(R.id.tv_name).apply { - text = data.courseName - isSelected = position == checked - } - } -} diff --git a/app/src/main/java/com/dollearn/student/ui/course/adapter/PhotoAdapter.kt b/app/src/main/java/com/dollearn/student/ui/course/adapter/PhotoAdapter.kt deleted file mode 100644 index 9cd7366..0000000 --- a/app/src/main/java/com/dollearn/student/ui/course/adapter/PhotoAdapter.kt +++ /dev/null @@ -1,14 +0,0 @@ -package com.dollearn.student.ui.course.adapter - -import cn.sinata.xldutils.adapter.HFRecyclerAdapter -import cn.sinata.xldutils.adapter.util.ViewHolder -import com.facebook.drawee.view.SimpleDraweeView -import com.dollearn.student.R -import java.util.ArrayList - -class PhotoAdapter(img: ArrayList<String>) : HFRecyclerAdapter<String>(img, R.layout.item_photo) { - override fun onBind(holder: ViewHolder, position: Int, data: String) { - holder.bind<SimpleDraweeView>(R.id.iv_img).setImageURI(data) - } - -} diff --git a/app/src/main/java/com/dollearn/student/ui/course/adapter/PracticeAdapter.kt b/app/src/main/java/com/dollearn/student/ui/course/adapter/PracticeAdapter.kt deleted file mode 100644 index 3a1c5cc..0000000 --- a/app/src/main/java/com/dollearn/student/ui/course/adapter/PracticeAdapter.kt +++ /dev/null @@ -1,40 +0,0 @@ -package com.dollearn.student.ui.course.adapter - -import android.widget.TextView -import cn.sinata.xldutils.adapter.HFRecyclerAdapter -import cn.sinata.xldutils.adapter.util.ViewHolder -import cn.sinata.xldutils.gone -import cn.sinata.xldutils.utils.SpanBuilder -import cn.sinata.xldutils.visible -import com.facebook.drawee.view.SimpleDraweeView -import com.dollearn.student.R -import com.dollearn.student.network.entity.Practice -import org.jetbrains.anko.backgroundResource -import org.jetbrains.anko.textColorResource -import java.util.ArrayList - -class PracticeAdapter(list: ArrayList<Practice>) :HFRecyclerAdapter<Practice>(list, R.layout.item_practice_list){ - override fun onBind(holder: ViewHolder, position: Int, data: Practice) { - holder.setText(R.id.tv_name,data.videoName) - holder.setText(R.id.tv_type,"布置运动营:${data.packageName}") - holder.setText(R.id.tv_introduce,data.synopsis) - holder.bind<SimpleDraweeView>(R.id.iv_img).setImageURI(data.coverImage) - val tvIncome = holder.bind<TextView>(R.id.tv_income) - holder.bind<TextView>(R.id.tv_state).apply { - text = if (data.studyStatus == 2){ - backgroundResource = R.drawable.bg_grey_1dp - textColorResource = R.color.white - tvIncome.gone() - "已学习" - } else { - backgroundResource = R.drawable.bg_orange_1dp - textColorResource = R.color.colorPrimary - tvIncome.visible() - val s = "可获积分:${data.integral}积分" - tvIncome.text = SpanBuilder(s).size(5,s.length,14).color(context,5,s.length,R.color.color_text_price).bold(5,s.length).build() - "未学习" - } - } - } - -} diff --git a/app/src/main/java/com/dollearn/student/ui/course/adapter/SwitchStudentAdapter.kt b/app/src/main/java/com/dollearn/student/ui/course/adapter/SwitchStudentAdapter.kt deleted file mode 100644 index 9f83799..0000000 --- a/app/src/main/java/com/dollearn/student/ui/course/adapter/SwitchStudentAdapter.kt +++ /dev/null @@ -1,66 +0,0 @@ -package com.dollearn.student.ui.course.adapter - -import android.view.View -import android.widget.ImageView -import android.widget.TextView -import cn.sinata.xldutils.activity.BaseActivity -import cn.sinata.xldutils.adapter.HFRecyclerAdapter -import cn.sinata.xldutils.adapter.util.ViewHolder -import cn.sinata.xldutils.gone -import cn.sinata.xldutils.utils.SpanBuilder -import cn.sinata.xldutils.utils.myToast -import cn.sinata.xldutils.visible -import com.dollearn.student.R -import com.dollearn.student.network.HttpManager -import com.dollearn.student.network.entity.Student -import com.dollearn.student.network.request -import com.dollearn.student.ui.home.AddStudentActivity -import com.dollearn.student.utils.interfaces.StringCallback -import org.jetbrains.anko.backgroundResource -import org.jetbrains.anko.startActivityForResult -import java.util.ArrayList - -class SwitchStudentAdapter(students: ArrayList<Student>):HFRecyclerAdapter<Student>(students, R.layout.item_student_switch) { - var checked = "" //选中的运动营成员id - var delCallback:StringCallback? = null - override fun onBind(holder: ViewHolder, position: Int, data: Student) { - val ivEdit = holder.bind<ImageView>(R.id.iv_edit) - val tvDefault = holder.bind<TextView>(R.id.tv_default) - val tvSetDefault = holder.bind<TextView>(R.id.tv_set_default) - val bg = holder.bind<View>(R.id.bg) - - val name = "姓名:${data.stuName}" - holder.setText(R.id.tv_name, SpanBuilder(name).color(context, 0, 3, R.color.textColor66).bold(3, name.length).build()) - val age = "年龄:${data.stuAge}" - holder.setText(R.id.tv_age, SpanBuilder(age).color(context, 0, 3, R.color.textColor66).bold(3, age.length).build()) - val birth = "生日:${data.birthday}" - holder.setText(R.id.tv_birth, SpanBuilder(birth).color(context, 0, 3, R.color.textColor66).bold(3, birth.length).build()) - val height = "身高:${data.stuHeight}" - holder.setText(R.id.tv_height, SpanBuilder(height).color(context, 0, 3, R.color.textColor66).bold(3, height.length).build()) - val weight = "体重:${data.stuWeight}" - holder.setText(R.id.tv_wight, SpanBuilder(weight).color(context, 0, 3, R.color.textColor66).bold(3, weight.length).build()) - bg.backgroundResource = if (data.stuId == checked) R.drawable.bg_orange_line_4dp else R.drawable.bg_grey_line_4dp - if (data.isNot == 1){ - tvDefault.visible() - tvSetDefault.gone() - }else{ - tvDefault.gone() - tvSetDefault.visible() - tvSetDefault.setOnClickListener { - HttpManager.editDefault(data.stuId?:"").request(context as BaseActivity){_,_-> - context.myToast("设置成功") - mData[0].isNot = 0 - data.isNot = 1 - mData.remove(data) - mData.add(0,data) - notifyDataSetChanged() - } - } - } - - ivEdit.setOnClickListener { - (context as BaseActivity).startActivityForResult<AddStudentActivity>(1,"user" to data,"type" to AddStudentActivity.TYPE_EDIT_STUDENT) - } - - } -} diff --git a/app/src/main/java/com/dollearn/student/ui/discovery/NoticeDetailActivity.kt b/app/src/main/java/com/dollearn/student/ui/discovery/NoticeDetailActivity.kt deleted file mode 100644 index 7a93499..0000000 --- a/app/src/main/java/com/dollearn/student/ui/discovery/NoticeDetailActivity.kt +++ /dev/null @@ -1,57 +0,0 @@ -package com.dollearn.student.ui.discovery - -import android.webkit.WebChromeClient -import android.webkit.WebViewClient -import com.dollearn.student.R -import com.dollearn.student.network.HttpManager -import com.dollearn.student.network.request -import com.dollearn.student.ui.TransparentStatusBarActivity -import kotlinx.android.synthetic.main.activity_notice_detail.* - -class NoticeDetailActivity:TransparentStatusBarActivity() { - override fun setContentView() = R.layout.activity_notice_detail - - private val id by lazy { intent.getStringExtra("id")?:"" } - private val type by lazy { intent.getIntExtra("type", TYPE_NOTICE) } - - override fun initClick() { - } - - override fun initView() { - if(type == TYPE_QUESTION){ - title = "常见问题" - } - val settings = webView.settings - settings.javaScriptEnabled = true - settings.javaScriptCanOpenWindowsAutomatically = true - settings.defaultTextEncodingName = "utf-8" - settings.domStorageEnabled = true - webView.webChromeClient = object : WebChromeClient() {} - webView.webViewClient = object : WebViewClient() {} - getData() - } - - private fun getData(){ - HttpManager.noticeDetail(id,type).request(this){_,data-> - data?.apply { - val content = if (type == TYPE_NOTICE){ - tv_title.text = noticeTitle - tv_time.text = noticeTime - noticeContents - }else{ - tv_title.text = quesTitle - tv_time.text = quesTime - quesContents - } - val sHead = - "<html><head><meta name=\"viewport\" content=\"width=device-width, " + "initial-scale=1.0, minimum-scale=0.5, maximum-scale=2.0, user-scalable=yes\" />" + "<style>img{max-width:100% !important;height:auto !important;}</style>" + "<style>body{max-width:100% !important;}</style>" + "</head><body>" - webView!!.loadDataWithBaseURL(null, sHead + content, "text/html", "utf-8", null) - } - } - } - - companion object{ - const val TYPE_NOTICE = 1//系统消息 - const val TYPE_QUESTION = 2//常见问题 - } -} diff --git a/app/src/main/java/com/dollearn/student/ui/discovery/NoticeFragment.kt b/app/src/main/java/com/dollearn/student/ui/discovery/NoticeFragment.kt deleted file mode 100644 index a212595..0000000 --- a/app/src/main/java/com/dollearn/student/ui/discovery/NoticeFragment.kt +++ /dev/null @@ -1,44 +0,0 @@ -package com.dollearn.student.ui.discovery - -import android.view.View -import androidx.recyclerview.widget.LinearLayoutManager -import cn.sinata.xldutils.fragment.BaseFragment -import com.dollearn.student.R -import com.dollearn.student.network.HttpManager -import com.dollearn.student.network.entity.Notice -import com.dollearn.student.network.requestByF -import com.dollearn.student.ui.discovery.adapter.NoticeAdapter -import kotlinx.android.synthetic.main.layout_common_list.* -import org.jetbrains.anko.support.v4.startActivity - -class NoticeFragment:BaseFragment() { - override fun contentViewId() = R.layout.layout_common_list - - private val list = arrayListOf<Notice>() - private val adapter = NoticeAdapter(list) - - override fun onFirstVisibleToUser() { - refreshLayout.setEnableLoadMore(false) - rv_list.layoutManager = LinearLayoutManager(requireContext()) - rv_list.adapter = adapter - adapter.setOnItemClickListener { view, position -> - startActivity<NoticeDetailActivity>("id" to list[position].noticeId) - } - refreshLayout.setOnRefreshListener { - getData() - } - getData() - } - - private fun getData(){ - HttpManager.noticeList().requestByF(this,success = { _, data-> - refreshLayout.finishRefresh() - list.clear() - list.addAll(data?: arrayListOf()) - adapter.notifyDataSetChanged() - tv_empty.visibility = if (list.isEmpty()) View.VISIBLE else View.GONE - }){_,_-> - refreshLayout.finishRefresh(false) - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/dollearn/student/ui/discovery/ShopViewPagerFragment.kt b/app/src/main/java/com/dollearn/student/ui/discovery/ShopViewPagerFragment.kt deleted file mode 100644 index 8d86198..0000000 --- a/app/src/main/java/com/dollearn/student/ui/discovery/ShopViewPagerFragment.kt +++ /dev/null @@ -1,27 +0,0 @@ -package com.dollearn.student.ui.discovery - -import androidx.core.os.bundleOf -import cn.sinata.xldutils.fragment.BaseFragment -import com.dollearn.student.R -import com.dollearn.student.network.entity.Shop -import kotlinx.android.synthetic.main.fragment_shop.* -import org.jetbrains.anko.support.v4.startActivity - -class ShopViewPagerFragment:BaseFragment() { - override fun contentViewId() = R.layout.fragment_shop - - private val shop by lazy { arguments?.getParcelable<Shop>("data") } - private val isNear by lazy { arguments?.getBoolean("isNear") } - - override fun onFirstVisibleToUser() { - - } - - companion object{ - fun newInstance(shop:Shop,isNear:Boolean):ShopViewPagerFragment{ - val shopViewPagerFragment = ShopViewPagerFragment() - shopViewPagerFragment.arguments = bundleOf("data" to shop,"isNear" to isNear) - return shopViewPagerFragment - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/dollearn/student/ui/discovery/adapter/MineMenuAdapter.kt b/app/src/main/java/com/dollearn/student/ui/discovery/adapter/MineMenuAdapter.kt deleted file mode 100644 index f2b95f8..0000000 --- a/app/src/main/java/com/dollearn/student/ui/discovery/adapter/MineMenuAdapter.kt +++ /dev/null @@ -1,17 +0,0 @@ -package com.dollearn.student.ui.discovery.adapter - -import android.widget.TextView -import cn.sinata.xldutils.adapter.HFRecyclerAdapter -import cn.sinata.xldutils.adapter.util.ViewHolder -import com.dollearn.student.R -import com.dollearn.student.network.entity.Banner -import java.util.ArrayList - -class MineMenuAdapter(menus: ArrayList<Banner>):HFRecyclerAdapter<Banner>(menus, R.layout.item_mine_menu) { - override fun onBind(holder: ViewHolder, position: Int, data: Banner) { - val tvName = holder.bind<TextView>(R.id.tv_name) - tvName.text = data.name - tvName.setCompoundDrawablesRelativeWithIntrinsicBounds(0,data.id,0,0) - } - -} diff --git a/app/src/main/java/com/dollearn/student/ui/discovery/adapter/NoticeAdapter.kt b/app/src/main/java/com/dollearn/student/ui/discovery/adapter/NoticeAdapter.kt deleted file mode 100644 index f7894b6..0000000 --- a/app/src/main/java/com/dollearn/student/ui/discovery/adapter/NoticeAdapter.kt +++ /dev/null @@ -1,15 +0,0 @@ -package com.dollearn.student.ui.discovery.adapter - -import cn.sinata.xldutils.adapter.HFRecyclerAdapter -import cn.sinata.xldutils.adapter.util.ViewHolder -import com.dollearn.student.R -import com.dollearn.student.network.entity.Notice -import java.util.ArrayList - -class NoticeAdapter(list: ArrayList<Notice>) :HFRecyclerAdapter<Notice>(list, R.layout.item_msg){ - override fun onBind(holder: ViewHolder, position: Int, data: Notice) { - holder.setText(R.id.tv_title,data.noticeTitle) - holder.setText(R.id.tv_content,data.noticeContents) - holder.setText(R.id.tv_time,data.noticeTime) - } -} diff --git a/app/src/main/java/com/dollearn/student/ui/discovery/adapter/QuestionAdapter.kt b/app/src/main/java/com/dollearn/student/ui/discovery/adapter/QuestionAdapter.kt deleted file mode 100644 index 57156f1..0000000 --- a/app/src/main/java/com/dollearn/student/ui/discovery/adapter/QuestionAdapter.kt +++ /dev/null @@ -1,14 +0,0 @@ -package com.dollearn.student.ui.discovery.adapter - -import cn.sinata.xldutils.adapter.HFRecyclerAdapter -import cn.sinata.xldutils.adapter.util.ViewHolder -import com.dollearn.student.R -import com.dollearn.student.network.entity.Notice -import java.util.ArrayList - -class QuestionAdapter(list: ArrayList<Notice>):HFRecyclerAdapter<Notice>(list, R.layout.item_question) { - override fun onBind(holder: ViewHolder, position: Int, data: Notice) { - holder.setText(R.id.tv_name,data.quesTitle) - } - -} diff --git a/app/src/main/java/com/dollearn/student/ui/discovery/adapter/ShopAdapter.kt b/app/src/main/java/com/dollearn/student/ui/discovery/adapter/ShopAdapter.kt deleted file mode 100644 index 382a1dd..0000000 --- a/app/src/main/java/com/dollearn/student/ui/discovery/adapter/ShopAdapter.kt +++ /dev/null @@ -1,21 +0,0 @@ -package com.dollearn.student.ui.discovery.adapter - -import cn.sinata.xldutils.adapter.HFRecyclerAdapter -import cn.sinata.xldutils.adapter.util.ViewHolder -import com.facebook.drawee.view.SimpleDraweeView -import com.dollearn.student.R -import com.dollearn.student.network.entity.ShopListBean -import java.util.ArrayList - -class ShopAdapter(list: ArrayList<ShopListBean>):HFRecyclerAdapter<ShopListBean>(list, R.layout.item_shop) { - override fun onBind(holder: ViewHolder, position: Int, data: ShopListBean) { - holder.bind<SimpleDraweeView>(R.id.iv_cover).setImageURI(data.storeImg) - holder.setText(R.id.tv_name,data.storeName) - holder.setText(R.id.tv_distance,"距离我${data.storeDistance}km") - holder.setText(R.id.tv_address,"${data.storeName}(${data.storeAddress})") - holder.setText(R.id.tv_phone,data.storePhone) - holder.setText(R.id.tv_duration,data.storeTime) - holder.setText(R.id.tv_introduce,data.storeInfo) - } - -} diff --git a/app/src/main/java/com/dollearn/student/ui/discovery/adapter/ShopCourseAdapter.kt b/app/src/main/java/com/dollearn/student/ui/discovery/adapter/ShopCourseAdapter.kt deleted file mode 100644 index 36e0ec9..0000000 --- a/app/src/main/java/com/dollearn/student/ui/discovery/adapter/ShopCourseAdapter.kt +++ /dev/null @@ -1,34 +0,0 @@ -package com.dollearn.student.ui.discovery.adapter - -import android.view.View -import android.widget.TextView -import cn.sinata.xldutils.adapter.HFRecyclerAdapter -import cn.sinata.xldutils.adapter.util.ViewHolder -import cn.sinata.xldutils.utils.SpanBuilder -import com.facebook.drawee.view.SimpleDraweeView -import com.dollearn.student.R -import com.dollearn.student.network.entity.CourseVo - -class ShopCourseAdapter(list: ArrayList<CourseVo>) :HFRecyclerAdapter<CourseVo>(list, R.layout.item_shop_course){ - override fun onBind(holder: ViewHolder, position: Int, data: CourseVo) { - holder.bind<SimpleDraweeView>(R.id.iv_img).setImageURI(data.coverDrawing) - holder.setText(R.id.tv_name,data.name) - holder.bind<TextView>(R.id.tv_time).apply { - visibility = if (data.classStartTime.isNullOrEmpty()) View.GONE else{ - text = "上课时间:${data.classStartTime}" - View.VISIBLE - } - } - holder.bind<TextView>(R.id.tv_count).apply { - val classCount = data.classHours.filter { it != 0 } - visibility = if (classCount.isEmpty()) View.GONE else{ - text = SpanBuilder("包含课时数:${classCount.joinToString(",") { it.toString() }}课时").color(context,0,6,R.color.textColor66).build() - View.VISIBLE - } - } - holder.setText(R.id.tv_join_count,"已报名${data.applicantsNumber}人") - holder.setText(R.id.tv_price,"¥${data.originalPrice}|详情") - - } - -} diff --git a/app/src/main/java/com/dollearn/student/ui/home/PayResultActivity.kt b/app/src/main/java/com/dollearn/student/ui/home/PayResultActivity.kt index 5d94a16..8a6ce67 100644 --- a/app/src/main/java/com/dollearn/student/ui/home/PayResultActivity.kt +++ b/app/src/main/java/com/dollearn/student/ui/home/PayResultActivity.kt @@ -4,7 +4,7 @@ import com.dollearn.student.MainActivity import com.dollearn.student.R import com.dollearn.student.ui.TransparentStatusBarActivity -import com.dollearn.student.ui.welfare.ExchangeRecordActivity +import com.dollearn.student.ui.mine.ExchangeRecordActivity import kotlinx.android.synthetic.main.activity_pay_rlt.* import org.jetbrains.anko.startActivity diff --git a/app/src/main/java/com/dollearn/student/ui/home/adapter/ChooseCoursTimesAdapter.kt b/app/src/main/java/com/dollearn/student/ui/home/adapter/ChooseCoursTimesAdapter.kt deleted file mode 100644 index 0322fed..0000000 --- a/app/src/main/java/com/dollearn/student/ui/home/adapter/ChooseCoursTimesAdapter.kt +++ /dev/null @@ -1,22 +0,0 @@ -package com.dollearn.student.ui.home.adapter - -import android.annotation.SuppressLint -import android.view.View -import cn.sinata.xldutils.adapter.HFRecyclerAdapter -import cn.sinata.xldutils.adapter.util.ViewHolder -import com.dollearn.student.R - -class ChooseCoursTimesAdapter(list: ArrayList<String>):HFRecyclerAdapter<String>(list, R.layout.item_lesson) { - var checkeds = ArrayList<Int>() - override fun onBind(holder: ViewHolder, position: Int, data: String) { - if(data.length==10){ - holder.setText(R.id.tv_name,data.substring(5,data.length)) - }else{ - holder.setText(R.id.tv_name,data) - } - - holder.bind<View>(R.id.tv_name).isSelected = checkeds.contains(position) - - } - -} \ No newline at end of file diff --git a/app/src/main/java/com/dollearn/student/ui/home/adapter/CourseAdapter.kt b/app/src/main/java/com/dollearn/student/ui/home/adapter/CourseAdapter.kt deleted file mode 100644 index 86ed78b..0000000 --- a/app/src/main/java/com/dollearn/student/ui/home/adapter/CourseAdapter.kt +++ /dev/null @@ -1,46 +0,0 @@ -package com.dollearn.student.ui.home.adapter - -import android.graphics.Paint -import android.view.View -import android.widget.TextView -import cn.sinata.xldutils.adapter.HFRecyclerAdapter -import cn.sinata.xldutils.adapter.util.ViewHolder -import cn.sinata.xldutils.gone -import cn.sinata.xldutils.visible -import com.facebook.drawee.view.SimpleDraweeView -import com.dollearn.student.R -import com.dollearn.student.network.entity.Course - -class CourseAdapter(datas: ArrayList<Course>) : - HFRecyclerAdapter<Course>(datas, R.layout.item_course) { - override fun onBind(holder: ViewHolder, position: Int, data: Course) { - holder.bind<SimpleDraweeView>(R.id.iv_img).setImageURI(data.coverDrawing) - holder.setText(R.id.tv_name, data.name) - data.classStartTime?.let { - val courseTime = holder.bind<TextView>(R.id.tv_time) - if (it.isNullOrEmpty()) - courseTime.gone() - else{ - courseTime.visible() - holder.setText(R.id.tv_time, "上课时间:${data.classStartTime.joinToString(" | ")}") - } - } - - holder.setText(R.id.tv_join_count, "已报名:${data.applicantsNumber}人") -// holder.bind<TextView>(R.id.tv_vip_price).apply { //安雪晖:列表一律隐藏会员价 -// visibility = if (data.vipPrice == null) View.GONE else { -// text = "会员价:¥${data.vipPrice}" -// View.VISIBLE -// } -// } - holder.setText(R.id.tv_price, if (data.paymentPrice!=0.0) "¥${data.paymentPrice}" else "${data.playPaiCoin}币") - holder.bind<TextView>(R.id.tv_origin_price).apply { - text = if (data.originalPrice == null||data.originalPrice == 0.0||data.originalPrice == data.paymentPrice) "" else "¥${data.originalPrice}" - paintFlags = paintFlags or Paint.STRIKE_THRU_TEXT_FLAG - } - holder.setText( - R.id.tv_distance, - if (data.distance == null) "" else "%.1fkm".format(data.distance) - ) - } -} \ No newline at end of file diff --git a/app/src/main/java/com/dollearn/student/ui/home/adapter/CoursePayAdapter.kt b/app/src/main/java/com/dollearn/student/ui/home/adapter/CoursePayAdapter.kt deleted file mode 100644 index 0bc205c..0000000 --- a/app/src/main/java/com/dollearn/student/ui/home/adapter/CoursePayAdapter.kt +++ /dev/null @@ -1,27 +0,0 @@ -package com.dollearn.student.ui.home.adapter - -import android.widget.TextView -import cn.sinata.xldutils.adapter.HFRecyclerAdapter -import cn.sinata.xldutils.adapter.util.ViewHolder -import cn.sinata.xldutils.utils.SpanBuilder -import com.dollearn.student.R -import com.dollearn.student.network.entity.PayCourse - -class CoursePayAdapter(list:ArrayList<PayCourse>,val count:Int):HFRecyclerAdapter<PayCourse>(list, R.layout.item_pay_course) { - var checked = -1 - override fun onBind(holder: ViewHolder, position: Int, data: PayCourse) { - val tv_course = holder.bind<TextView>(R.id.tv_course) - tv_course.text = SpanBuilder("${data.name} (剩余:${data.courseNum}课时)").color(context,0,data.name.length,R.color.textColor66).build() - if (data.courseNum>=count){ - tv_course.alpha = 1f - }else - tv_course.alpha = 0.5f - tv_course.isSelected = position == checked - tv_course.setOnClickListener { - if (data.courseNum>=count){ - checked = position - notifyDataSetChanged() - } - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/dollearn/student/ui/home/adapter/FieldAdapter.kt b/app/src/main/java/com/dollearn/student/ui/home/adapter/FieldAdapter.kt deleted file mode 100644 index ef8ee57..0000000 --- a/app/src/main/java/com/dollearn/student/ui/home/adapter/FieldAdapter.kt +++ /dev/null @@ -1,19 +0,0 @@ -package com.dollearn.student.ui.home.adapter - -import cn.sinata.xldutils.adapter.HFRecyclerAdapter -import cn.sinata.xldutils.adapter.util.ViewHolder -import cn.sinata.xldutils.utils.SpanBuilder -import com.dollearn.student.R -import com.dollearn.student.network.entity.Place - -class FieldAdapter (datas:ArrayList<Place>):HFRecyclerAdapter<Place>(datas, R.layout.item_field) { - override fun onBind(holder: ViewHolder, position: Int, data: Place) { - holder.setText(R.id.tv_name,data.name) - holder.setText(R.id.tv_type,data.siteTypeName) - holder.setText(R.id.tv_distance,if (data.distance == null ) "" else "距离我%.1fkm".format(data.distance)) - holder.setText(R.id.tv_address, "${data.storeName}(${data.storeAddress})") - holder.setText(R.id.tv_time, "可预约时间段:${data.times}") - val text = "¥${data.price}起" - holder.setText(R.id.tv_price, SpanBuilder(text).size(text.length-1,text.length,12).build()) - } -} \ No newline at end of file diff --git a/app/src/main/java/com/dollearn/student/ui/home/adapter/LessonCountAdapter.kt b/app/src/main/java/com/dollearn/student/ui/home/adapter/LessonCountAdapter.kt deleted file mode 100644 index c2672de..0000000 --- a/app/src/main/java/com/dollearn/student/ui/home/adapter/LessonCountAdapter.kt +++ /dev/null @@ -1,14 +0,0 @@ -package com.dollearn.student.ui.home.adapter - -import android.view.View -import cn.sinata.xldutils.adapter.HFRecyclerAdapter -import cn.sinata.xldutils.adapter.util.ViewHolder -import com.dollearn.student.R - -class LessonCountAdapter(list: ArrayList<String>):HFRecyclerAdapter<String>(list, R.layout.item_lesson) { - var checked = 0 - override fun onBind(holder: ViewHolder, position: Int, data: String) { - holder.setText(R.id.tv_name,data) - holder.bind<View>(R.id.tv_name).isSelected = position == checked - } -} \ No newline at end of file diff --git a/app/src/main/java/com/dollearn/student/ui/home/adapter/MatchAdapter.kt b/app/src/main/java/com/dollearn/student/ui/home/adapter/MatchAdapter.kt deleted file mode 100644 index d2ef8cc..0000000 --- a/app/src/main/java/com/dollearn/student/ui/home/adapter/MatchAdapter.kt +++ /dev/null @@ -1,30 +0,0 @@ -package com.dollearn.student.ui.home.adapter - -import android.widget.TextView -import cn.sinata.xldutils.adapter.HFRecyclerAdapter -import cn.sinata.xldutils.adapter.util.ViewHolder -import cn.sinata.xldutils.visible -import com.facebook.drawee.view.SimpleDraweeView -import com.dollearn.student.R -import com.dollearn.student.network.entity.Match - -/** - * @param isMine true:我报名的活动 - */ -class MatchAdapter (datas:ArrayList<Match>,private val isMine: Boolean = false):HFRecyclerAdapter<Match>(datas, R.layout.item_match) { - override fun onBind(holder: ViewHolder, position: Int, data: Match) { - holder.bind<SimpleDraweeView>(R.id.iv_img).setImageURI(data.coverDrawing) - holder.setText(R.id.tv_name,data.name) - holder.setText(R.id.tv_info,data.introduction) - holder.setText(R.id.tv_age,data.age) - holder.setText(R.id.tv_heat,data.heat) - holder.setText(R.id.tv_time,"截止报名:${data.registerEndTime}") - holder.setText(R.id.tv_tag,"${data.cityName}|${data.getCondition()}") - if (isMine) - holder.bind<TextView>(R.id.tv_state).apply { - visible() - text = data.getStatusStr() - isEnabled = data.status == 1||data.status == 2 - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/dollearn/student/ui/home/adapter/MyPlaceAdapter.kt b/app/src/main/java/com/dollearn/student/ui/home/adapter/MyPlaceAdapter.kt deleted file mode 100644 index 483d4bb..0000000 --- a/app/src/main/java/com/dollearn/student/ui/home/adapter/MyPlaceAdapter.kt +++ /dev/null @@ -1,40 +0,0 @@ -package com.dollearn.student.ui.home.adapter - -import android.view.View -import android.widget.TextView -import cn.sinata.xldutils.adapter.HFRecyclerAdapter -import cn.sinata.xldutils.adapter.util.ViewHolder -import com.dollearn.student.R -import com.dollearn.student.network.entity.Place -import org.jetbrains.anko.backgroundResource - -class MyPlaceAdapter (datas:ArrayList<Place>,val callback:Callback):HFRecyclerAdapter<Place>(datas, R.layout.item_my_place) { - override fun onBind(holder: ViewHolder, position: Int, data: Place) { - holder.setText(R.id.tv_name,data.name) - holder.setText(R.id.tv_state,data.getStateStr()) - holder.setText(R.id.tv_type,data.siteTypeName) - holder.setText(R.id.tv_address, "${data.storeName}(${data.storeAddress})") - holder.setText(R.id.tv_time, "预约时间:${data.appointment}") - holder.setText(R.id.tv_price, if (data.payType == 3) "%d币".format(data.payMoney!!.toInt()) else "¥${data.payMoney}") - holder.bind<TextView>(R.id.tv_action).apply { - visibility = if (data.status ==0 ){ - val l = (((data.insertTime ?: 0L) + 30L * 60 * 1000) - System.currentTimeMillis())/1000 - if (l<0){ - holder.setText(R.id.tv_state,"已取消") - View.GONE - }else{ - text = "支付(%02d:%02d)".format(l/60,l%60) - setOnClickListener { - callback.onPay(position) - } - View.VISIBLE - } - } else View.GONE - } - } - - interface Callback{ -// fun onCancel(position: Int) //产品:取消按钮放进详情 - fun onPay(position: Int) - } -} \ No newline at end of file diff --git a/app/src/main/java/com/dollearn/student/ui/home/adapter/OpenCityAdapter.kt b/app/src/main/java/com/dollearn/student/ui/home/adapter/OpenCityAdapter.kt deleted file mode 100644 index 8042beb..0000000 --- a/app/src/main/java/com/dollearn/student/ui/home/adapter/OpenCityAdapter.kt +++ /dev/null @@ -1,24 +0,0 @@ -package com.dollearn.student.ui.home.adapter - -import android.view.View -import cn.sinata.xldutils.adapter.HFRecyclerAdapter -import cn.sinata.xldutils.adapter.util.ViewHolder -import cn.sinata.xldutils.gone -import cn.sinata.xldutils.visible -import com.github.promeg.pinyinhelper.Pinyin -import com.dollearn.student.R -import com.dollearn.student.network.entity.CommonData -import java.util.ArrayList - -class OpenCityAdapter(datas: ArrayList<CommonData>) :HFRecyclerAdapter<CommonData>(datas, R.layout.item_open_city){ - override fun onBind(holder: ViewHolder, position: Int, data: CommonData) { - holder.setText(R.id.tv_index,getInitial(data.name)) - if (position != 0&&getInitial(data.name) == getInitial(mData[position-1].name)) - holder.bind<View>(R.id.tv_index).gone() - else - holder.bind<View>(R.id.tv_index).visible() - holder.setText(R.id.tv_name,data.name) - } - - fun getInitial(name:String):String = if (name.startsWith("重庆")) "C" else Pinyin.toPinyin(name[0])[0].toString() -} diff --git a/app/src/main/java/com/dollearn/student/ui/home/adapter/ShopMenuAdapter.kt b/app/src/main/java/com/dollearn/student/ui/home/adapter/ShopMenuAdapter.kt deleted file mode 100644 index d87854d..0000000 --- a/app/src/main/java/com/dollearn/student/ui/home/adapter/ShopMenuAdapter.kt +++ /dev/null @@ -1,36 +0,0 @@ -package com.dollearn.student.ui.home.adapter - -import androidx.constraintlayout.widget.ConstraintLayout -import cn.sinata.xldutils.adapter.HFRecyclerAdapter -import cn.sinata.xldutils.adapter.util.ViewHolder -import cn.sinata.xldutils.utils.screenWidth -import com.facebook.drawee.view.SimpleDraweeView -import com.dollearn.student.R -import com.dollearn.student.network.entity.Banner -import org.jetbrains.anko.dip -import java.util.* - -class ShopMenuAdapter(menus: ArrayList<Banner>) : - HFRecyclerAdapter<Banner>(menus, R.layout.item_shop_menu) { - override fun onBind(holder: ViewHolder, position: Int, data: Banner) { - val iv = holder.bind<SimpleDraweeView>(R.id.iv_big) - val layoutParams = iv.layoutParams as ConstraintLayout.LayoutParams - layoutParams.width = context.screenWidth() / 2 - context.dip(30) - if(data.width==0||data.height==0){ - layoutParams.dimensionRatio = "1:1" - }else{ - layoutParams.dimensionRatio = "${data.width}:${data.height}" - } - - iv.layoutParams = layoutParams - if (data.backgroundImage.isNullOrEmpty()) { - iv.setImageURI("") - } else { - iv.setImageURI(data.backgroundImage) - } - } - - override fun getItemViewType(position: Int): Int { - return position - } -} \ No newline at end of file diff --git a/app/src/main/java/com/dollearn/student/ui/home/adapter/VideoGridAdapter.kt b/app/src/main/java/com/dollearn/student/ui/home/adapter/VideoGridAdapter.kt deleted file mode 100644 index b2116d0..0000000 --- a/app/src/main/java/com/dollearn/student/ui/home/adapter/VideoGridAdapter.kt +++ /dev/null @@ -1,15 +0,0 @@ -package com.dollearn.student.ui.home.adapter - -import cn.sinata.xldutils.adapter.HFRecyclerAdapter -import cn.sinata.xldutils.adapter.util.ViewHolder -import com.facebook.drawee.view.SimpleDraweeView -import com.dollearn.student.R -import com.dollearn.student.network.entity.VideoBean - -class VideoGridAdapter(list:ArrayList<VideoBean>):HFRecyclerAdapter<VideoBean>(list, R.layout.item_video_grid) { - override fun onBind(holder: ViewHolder, position: Int, data: VideoBean) { - holder.setText(R.id.tv_name,data.name) - holder.setText(R.id.tv_introduce,data.introduce) - holder.bind<SimpleDraweeView>(R.id.iv_img).setImageURI(data.cover) - } -} \ No newline at end of file diff --git a/app/src/main/java/com/dollearn/student/ui/home/adapter/VideoTypeAdapter.kt b/app/src/main/java/com/dollearn/student/ui/home/adapter/VideoTypeAdapter.kt deleted file mode 100644 index 146801c..0000000 --- a/app/src/main/java/com/dollearn/student/ui/home/adapter/VideoTypeAdapter.kt +++ /dev/null @@ -1,32 +0,0 @@ -package com.dollearn.student.ui.home.adapter - -import android.view.View -import androidx.recyclerview.widget.GridLayoutManager -import androidx.recyclerview.widget.RecyclerView -import cn.sinata.xldutils.adapter.HFRecyclerAdapter -import cn.sinata.xldutils.adapter.util.ViewHolder -import com.dollearn.student.R -import com.dollearn.student.network.entity.VideoTypeBean -import com.dollearn.student.utils.extention.clickDelay -import java.util.ArrayList - -class VideoTypeAdapter(list: ArrayList<VideoTypeBean>,val callback:Callback) :HFRecyclerAdapter<VideoTypeBean>(list, R.layout.item_video_type){ - override fun onBind(holder: ViewHolder, position: Int, data: VideoTypeBean) { - holder.setText(R.id.tv_name,data.name) - holder.bind<View>(R.id.tv_more).clickDelay { - callback.onMore(position) - } - val rv = holder.bind<RecyclerView>(R.id.rv_video) - rv.layoutManager = GridLayoutManager(context,2) - val videoGridAdapter = VideoGridAdapter(data.list) - videoGridAdapter.setOnItemClickListener { view, position -> - callback.onVideoDetail(data.list[position].id) - } - rv.adapter = videoGridAdapter - } - - interface Callback{ - fun onMore(position: Int) - fun onVideoDetail(id:String) - } -} diff --git a/app/src/main/java/com/dollearn/student/ui/mine/ExchangeRecordActivity.kt b/app/src/main/java/com/dollearn/student/ui/mine/ExchangeRecordActivity.kt new file mode 100644 index 0000000..c9ac816 --- /dev/null +++ b/app/src/main/java/com/dollearn/student/ui/mine/ExchangeRecordActivity.kt @@ -0,0 +1,67 @@ +package com.dollearn.student.ui.mine + +import android.content.Intent +import androidx.recyclerview.widget.LinearLayoutManager +import com.dollearn.student.R +import com.dollearn.student.network.HttpManager +import com.dollearn.student.network.entity.ExchangeRecord +import com.dollearn.student.network.request +import com.dollearn.student.ui.TransparentStatusBarActivity +import com.dollearn.student.ui.mine.adapter.ExchangeRecordAdapter +import kotlinx.android.synthetic.main.activity_exchange_record.* + +class ExchangeRecordActivity : TransparentStatusBarActivity() { + override fun setContentView() = R.layout.activity_exchange_record + + private val list = arrayListOf<ExchangeRecord>() + private val adapter = ExchangeRecordAdapter(list) + private var page = 1 + + override fun initClick() { + + } + + override fun initView() { + rv_record.layoutManager = LinearLayoutManager(this) + rv_record.adapter = adapter + refreshLayout.setOnRefreshListener { + page = 1 + getData() + } + refreshLayout.setOnLoadMoreListener { + page++ + getData() + } + getData() + } + + private fun getData() { + HttpManager.exchangeRecord(page).request(this,success = {_,data-> + if (page == 1) + list.clear() + list.addAll(data?.records?: arrayListOf()) + adapter.notifyDataSetChanged() + if (list.isEmpty()) + refreshLayout.finishRefreshWithNoMoreData() + else if (data?.records.isNullOrEmpty()) + refreshLayout.finishLoadMoreWithNoMoreData() + else if (page == 1) + refreshLayout.finishRefresh() + else + refreshLayout.finishLoadMore() + }){_,_-> + if (page == 1) + refreshLayout.finishRefresh(false) + else + refreshLayout.finishLoadMore(false) + page-- + } + } + + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { + super.onActivityResult(requestCode, resultCode, data) + if (resultCode == RESULT_OK){ + getData() + } + } +} diff --git a/app/src/main/java/com/dollearn/student/ui/mine/MineFragment.kt b/app/src/main/java/com/dollearn/student/ui/mine/MineFragment.kt index be55cc2..1386fe4 100644 --- a/app/src/main/java/com/dollearn/student/ui/mine/MineFragment.kt +++ b/app/src/main/java/com/dollearn/student/ui/mine/MineFragment.kt @@ -13,7 +13,6 @@ import com.dollearn.student.network.entity.UserBean import com.dollearn.student.network.requestByF import com.dollearn.student.ui.login.LoginActivity -import com.dollearn.student.ui.welfare.* import com.dollearn.student.utils.Const import com.dollearn.student.utils.event.EmptyEvent import com.dollearn.student.utils.extention.formatToChinese diff --git a/app/src/main/java/com/dollearn/student/ui/mine/adapter/ExchangeRecordAdapter.kt b/app/src/main/java/com/dollearn/student/ui/mine/adapter/ExchangeRecordAdapter.kt new file mode 100644 index 0000000..e537d96 --- /dev/null +++ b/app/src/main/java/com/dollearn/student/ui/mine/adapter/ExchangeRecordAdapter.kt @@ -0,0 +1,76 @@ +package com.dollearn.student.ui.mine.adapter + +import android.widget.TextView +import androidx.core.os.bundleOf +import cn.sinata.xldutils.activity.BaseActivity +import cn.sinata.xldutils.adapter.HFRecyclerAdapter +import cn.sinata.xldutils.adapter.util.ViewHolder +import cn.sinata.xldutils.gone +import cn.sinata.xldutils.visible +import com.dollearn.student.R +import com.dollearn.student.dialog.TipDialog +import com.dollearn.student.network.HttpManager +import com.dollearn.student.network.entity.ExchangeRecord +import com.dollearn.student.network.request +import com.dollearn.student.ui.mine.ChangeAddressActivity +import com.facebook.drawee.view.SimpleDraweeView +import org.jetbrains.anko.startActivityForResult +import java.util.ArrayList + +class ExchangeRecordAdapter(list: ArrayList<ExchangeRecord>) : + HFRecyclerAdapter<ExchangeRecord>(list, R.layout.item_exchange_record) { + override fun onBind(holder: ViewHolder, position: Int, data: ExchangeRecord) { + holder.bind<SimpleDraweeView>(R.id.iv_good).setImageURI(data.coverImg) + holder.setText(R.id.tv_name, data.goodsName) + holder.setText(R.id.tv_price, "${data.integral}积分") + holder.setText(R.id.tv_category, data.goodsType.joinToString(" | ") { it }) + holder.setText(R.id.tv_count, "商品数量:${data.count}") + holder.setText(R.id.tv_receiver, "收货信息:${data.consigneeName}|${data.consigneePhone}|${data.consigneeAddress}") + val tvPost = holder.bind<TextView>(R.id.tv_post) + val tvAction = holder.bind<TextView>(R.id.tv_action) + val act = context as BaseActivity + + val state = when(data.state){//订单状态1待发货2已发货3已完成 + 1->{ + tvAction.visible() + tvAction.text = "修改地址" + tvPost.gone() + tvAction.setOnClickListener { + act.startActivityForResult<ChangeAddressActivity>(1,"id" to data.orderId) + } + "待发货" + } + 2->{ + tvAction.visible() + tvAction.text = "已收货" + tvPost.visible() + tvPost.text = "发货信息:${data.express}|${data.expressNumber}" + tvAction.setOnClickListener { + val tipDialog = TipDialog() + tipDialog.arguments = bundleOf("msg" to "确认已收到货吗?") + tipDialog.setCallback(object :TipDialog.OnClickCallback{ + override fun onOk() { + HttpManager.confirmStudy(data.orderId).request(act){_,_-> + data.state = 3 + notifyItemChanged(position) + } + } + + override fun onCancel() { + } + }) + tipDialog.show(act.supportFragmentManager,"sure") + } + "平台已发货,请耐心等待" + } + else->{ + tvAction.gone() + tvPost.gone() + "已完成" + } + } + holder.setText(R.id.tv_state, state) + + } + +} diff --git a/app/src/main/java/com/dollearn/student/ui/mine/adapter/RechargeAdapter.kt b/app/src/main/java/com/dollearn/student/ui/mine/adapter/RechargeAdapter.kt deleted file mode 100644 index 08e363d..0000000 --- a/app/src/main/java/com/dollearn/student/ui/mine/adapter/RechargeAdapter.kt +++ /dev/null @@ -1,32 +0,0 @@ -package com.dollearn.student.ui.mine.adapter - -import android.view.View -import android.widget.TextView -import cn.sinata.xldutils.adapter.HFRecyclerAdapter -import cn.sinata.xldutils.adapter.util.ViewHolder -import com.dollearn.student.R -import com.dollearn.student.network.entity.RechargeItem -import org.jetbrains.anko.backgroundResource -import org.jetbrains.anko.textColorResource -import java.util.ArrayList - -class RechargeAdapter(datas: ArrayList<RechargeItem>):HFRecyclerAdapter<RechargeItem>(datas, R.layout.item_recharge){ - var checked = 0 - override fun onBind(holder: ViewHolder, position: Int, data: RechargeItem) { - holder.setText(R.id.tv_coin,"${data.wpGold.toInt()}币") - holder.setText(R.id.tv_price,"¥${data.amount}") - val bg = holder.bind<View>(R.id.ll_bg) - val tv_coin = holder.bind<TextView>(R.id.tv_coin) - val tv_price = holder.bind<TextView>(R.id.tv_price) - if (position == checked){ - bg.backgroundResource = R.drawable.bg_recharge_checked - tv_coin.textColorResource = R.color.colorPrimary - tv_price.textColorResource = R.color.colorPrimary - }else{ - bg.backgroundResource = R.drawable.bg_recharge_uncheck - tv_coin.textColorResource = R.color.textColor66 - tv_price.textColorResource = R.color.textColor66 - } - } - -} diff --git a/app/src/main/java/com/dollearn/student/ui/shop/GoodsDetailActivity.kt b/app/src/main/java/com/dollearn/student/ui/shop/GoodsDetailActivity.kt new file mode 100644 index 0000000..323522b --- /dev/null +++ b/app/src/main/java/com/dollearn/student/ui/shop/GoodsDetailActivity.kt @@ -0,0 +1,132 @@ +package com.dollearn.student.ui.shop + +import android.app.Activity +import android.content.Intent +import android.graphics.Paint +import android.webkit.WebChromeClient +import android.webkit.WebViewClient +import androidx.core.os.bundleOf +import com.dollearn.student.R +import com.dollearn.student.dialog.TipDialog +import com.dollearn.student.network.HttpManager +import com.dollearn.student.network.entity.Banner +import com.dollearn.student.network.entity.GoodsDetail +import com.dollearn.student.network.request +import com.dollearn.student.ui.TransparentStatusBarActivity +import com.dollearn.student.ui.home.PayResultActivity +import com.dollearn.student.ui.shop.adapter.ShopBannerAdapter +import com.dollearn.student.utils.pay.PayListener +import com.dollearn.student.utils.pay.PayUtil +import com.youth.banner.indicator.CircleIndicator +import kotlinx.android.synthetic.main.activity_goods_detail.* +import kotlinx.android.synthetic.main.activity_goods_detail.tv_score +import org.jetbrains.anko.startActivity +import org.jetbrains.anko.startActivityForResult + +class GoodsDetailActivity : TransparentStatusBarActivity(), PayListener { + override fun setContentView() = R.layout.activity_goods_detail + + private val id by lazy { intent.getStringExtra("id")?:"" } + private var goods: GoodsDetail? = null + + private var score = 0 + + private val bannerImg = arrayListOf<Banner>() + private val bannerAdapter by lazy { + ShopBannerAdapter(bannerImg, this) + } + + override fun initClick() { + tv_action.setOnClickListener { + if (score<goods?.good?.integral?:0){ + val tipDialog = TipDialog() + tipDialog.arguments = bundleOf("isAlert" to true,"msg" to "兑换失败,当前剩余积分不足!","ok" to "关闭") + tipDialog.show(supportFragmentManager,"tip") + return@setOnClickListener + } + tv_action.isEnabled = false + showDialog() + HttpManager.redeemNow(id).request(this,false, {_,data-> + tv_action.isEnabled = true + startActivity<ExchangeActivity>("order" to data) + }){_,msg-> + val tipDialog = TipDialog() + tipDialog.arguments = bundleOf("isAlert" to true,"msg" to msg,"ok" to "关闭") + tipDialog.show(supportFragmentManager,"tip") + tv_action.isEnabled = true + } + } + } + + override fun initView() { + banner.adapter = bannerAdapter + banner.indicator = CircleIndicator(this) + val settings = webView.settings + settings.javaScriptEnabled = true + settings.javaScriptCanOpenWindowsAutomatically = true + settings.defaultTextEncodingName = "utf-8" + settings.domStorageEnabled = true + webView.webChromeClient = object : WebChromeClient() {} + webView.webViewClient = object : WebViewClient() {} + PayUtil.addPayListener(this) + getData() + getScore() + } + + private fun getScore() { + HttpManager.getIntegralStudy().request(this){_,data-> + score = data?:0 + tv_balance.text = "剩余积分:$score" + } + } + + private fun getData() { + HttpManager.goodDetail(id).request(this) { _, data -> + goods = data + goods?.apply { + tv_score.text = good.integral.toString() + bannerImg.addAll((good.detailImg.split(",")).map { Banner(url = it) }) + bannerAdapter.notifyDataSetChanged() + banner.currentItem = 1 + tv_price.text = good.integral.toString() + tv_value.text = if (good.price!=null&&good.price!=0.0) "¥%.2f".format(good.price) else "" + tv_value.paintFlags = tv_value.paintFlags or Paint.STRIKE_THRU_TEXT_FLAG + tv_name.text = good.name + tv_category.text = goodTypes?.joinToString ("|"){ it.name } + tv_sold.text = "%s%s%d人已换".format(if (residueNumber == null) "" else "剩余数量:${residueNumber}|",if (good.userCount == null) "" else "可换数量:${good.userCount}|", exchangeNumber) + val sHead = + "<html><head><meta name=\"viewport\" content=\"width=device-width, " + "initial-scale=1.0, minimum-scale=0.5, maximum-scale=2.0, user-scalable=yes\" />" + "<style>img{max-width:100% !important;height:auto !important;}</style>" + "<style>body{max-width:100% !important;}</style>" + "</head><body>" + webView!!.loadDataWithBaseURL(null, sHead + good.detail, "text/html", "utf-8", null) + } + } + } + + override fun onPaySuccess() { + startActivityForResult<PayResultActivity>(1, "type" to PayResultActivity.TYPE_EXCHANGE_SUC) + } + + override fun onPayCancel() { + } + + override fun onPayError(msg: String) { + startActivityForResult<PayResultActivity>( + 1, + "type" to PayResultActivity.TYPE_EXCHANGE_FAILED, + "msg" to msg + ) + } + + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { + super.onActivityResult(requestCode, resultCode, data) + if (resultCode == Activity.RESULT_OK) { + tv_action.postDelayed({ + }, 500) + } + } + + override fun onDestroy() { + super.onDestroy() + PayUtil.removePayListener(this) + PayUtil.unregisterApp() + } +} diff --git a/app/src/main/java/com/dollearn/student/ui/shop/ShopFragment.kt b/app/src/main/java/com/dollearn/student/ui/shop/ShopFragment.kt index be18eb6..5adf555 100644 --- a/app/src/main/java/com/dollearn/student/ui/shop/ShopFragment.kt +++ b/app/src/main/java/com/dollearn/student/ui/shop/ShopFragment.kt @@ -2,7 +2,6 @@ import android.content.Context import android.view.inputmethod.InputMethodManager -import androidx.core.content.ContextCompat.getSystemService import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.LinearLayoutManager import cn.sinata.xldutils.fragment.BaseFragment @@ -14,7 +13,6 @@ import com.dollearn.student.network.requestByF import com.dollearn.student.ui.shop.adapter.GoodsAdapter import com.dollearn.student.ui.shop.adapter.GoodsTypeAdapter -import com.dollearn.student.ui.welfare.GoodsDetailActivity import com.dollearn.student.utils.Const import com.dollearn.student.utils.event.EmptyEvent import kotlinx.android.synthetic.main.fragment_shop.* diff --git a/app/src/main/java/com/dollearn/student/ui/welfare/ExchangeDetailActivity.kt b/app/src/main/java/com/dollearn/student/ui/welfare/ExchangeDetailActivity.kt deleted file mode 100644 index 12e04ab..0000000 --- a/app/src/main/java/com/dollearn/student/ui/welfare/ExchangeDetailActivity.kt +++ /dev/null @@ -1,105 +0,0 @@ -package com.dollearn.student.ui.welfare - -import android.annotation.SuppressLint -import android.webkit.WebChromeClient -import android.webkit.WebViewClient -import cn.sinata.xldutils.gone -import cn.sinata.xldutils.visible -import com.dollearn.student.R -import com.dollearn.student.dialog.LoginRuleDialog -import com.dollearn.student.network.HttpManager -import com.dollearn.student.network.entity.Banner -import com.dollearn.student.network.entity.ExchangeDetail -import com.dollearn.student.network.request -import com.dollearn.student.ui.TransparentStatusBarActivity -import com.dollearn.student.ui.home.adapter.HomeBannerAdapter -import com.dollearn.student.utils.extention.clickDelay -import com.youth.banner.indicator.CircleIndicator -import kotlinx.android.synthetic.main.activity_exchange_detail.* - -@SuppressLint("SetTextI18n") -class ExchangeDetailActivity : TransparentStatusBarActivity() { - override fun setContentView() = R.layout.activity_exchange_detail - - private val id by lazy { intent.getStringExtra("id")?:"" } - private val bannerImg = arrayListOf<Banner>() - private val bannerAdapter by lazy { - HomeBannerAdapter(bannerImg, this) - } - private var exchangeDetail: ExchangeDetail? = null - - override fun initClick() { - tv_shop.clickDelay { - LoginRuleDialog.show( - supportFragmentManager, - exchangeDetail?.belongs ?: "", - LoginRuleDialog.TYPE_COUPON_USAGE - ) - } - } - - override fun initView() { - banner.adapter = bannerAdapter - banner.indicator = CircleIndicator(this) - val settings = webView.settings - settings.javaScriptEnabled = true - settings.javaScriptCanOpenWindowsAutomatically = true - settings.defaultTextEncodingName = "utf-8" - settings.domStorageEnabled = true - webView.webChromeClient = object : WebChromeClient() {} - webView.webViewClient = object : WebViewClient() {} - getData() - } - - - private fun getData() { - HttpManager.redemptionDetails(id).request(this) { _, data -> - exchangeDetail = data - data?.apply { - bannerImg.addAll((pics ?: arrayListOf()).map { Banner(url = it) }) - bannerAdapter.notifyDataSetChanged() - banner.currentItem = 1 - tv_name.text = goodName - tv_price.text = - if (exchangeType == 2) "${integral}积分+¥${cash}" else if (exchangeType == 3) "¥${cash}" else "${integral}积分" - tv_deadline.text = "${startTime}至${endTime}" - tv_order_time.text = orderTime - val sHead = - "<html><head><meta name=\"viewport\" content=\"width=device-width, " + "initial-scale=1.0, minimum-scale=0.5, maximum-scale=2.0, user-scalable=yes\" />" + "<style>img{max-width:100% !important;height:auto !important;}</style>" + "<style>body{max-width:100% !important;}</style>" + "</head><body>" - webView!!.loadDataWithBaseURL(null, sHead + contents, "text/html", "utf-8", null) - if (useType == 1) { //1已使用 2未使用 - iv_used.visible() - ll_used.visible() - tv_use_time.text = writeOffTime - tv_use_shop.text = writeOffName - } else { - iv_used.gone() - ll_target_shop.visible() - } - - when (goodType) { - 2 -> { - rl_classhour.visible() - mtvClassHour.text = "${classHours}课时" - tv_deadline.gone() - tv_1.gone() - } - 3 -> { - rl_type.visible() - mtvFeeType.text = cardType?.let { - when (it) { - // 1日卡 2月卡 3季卡 4年卡 - 1 -> "日卡" - 2 -> "月卡" - 3 -> "季卡" - 4 -> "年卡" - else -> "" - } - } ?: "" - } - } - } - } - } - -} diff --git a/app/src/main/java/com/dollearn/student/ui/welfare/ExchangeRecordActivity.kt b/app/src/main/java/com/dollearn/student/ui/welfare/ExchangeRecordActivity.kt deleted file mode 100644 index 07212db..0000000 --- a/app/src/main/java/com/dollearn/student/ui/welfare/ExchangeRecordActivity.kt +++ /dev/null @@ -1,67 +0,0 @@ -package com.dollearn.student.ui.welfare - -import android.content.Intent -import androidx.recyclerview.widget.LinearLayoutManager -import com.dollearn.student.R -import com.dollearn.student.network.HttpManager -import com.dollearn.student.network.entity.ExchangeRecord -import com.dollearn.student.network.request -import com.dollearn.student.ui.TransparentStatusBarActivity -import com.dollearn.student.ui.welfare.adapter.ExchangeRecordAdapter -import kotlinx.android.synthetic.main.activity_exchange_record.* - -class ExchangeRecordActivity : TransparentStatusBarActivity() { - override fun setContentView() = R.layout.activity_exchange_record - - private val list = arrayListOf<ExchangeRecord>() - private val adapter = ExchangeRecordAdapter(list) - private var page = 1 - - override fun initClick() { - - } - - override fun initView() { - rv_record.layoutManager = LinearLayoutManager(this) - rv_record.adapter = adapter - refreshLayout.setOnRefreshListener { - page = 1 - getData() - } - refreshLayout.setOnLoadMoreListener { - page++ - getData() - } - getData() - } - - private fun getData() { - HttpManager.exchangeRecord(page).request(this,success = {_,data-> - if (page == 1) - list.clear() - list.addAll(data?.records?: arrayListOf()) - adapter.notifyDataSetChanged() - if (list.isEmpty()) - refreshLayout.finishRefreshWithNoMoreData() - else if (data?.records.isNullOrEmpty()) - refreshLayout.finishLoadMoreWithNoMoreData() - else if (page == 1) - refreshLayout.finishRefresh() - else - refreshLayout.finishLoadMore() - }){_,_-> - if (page == 1) - refreshLayout.finishRefresh(false) - else - refreshLayout.finishLoadMore(false) - page-- - } - } - - override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { - super.onActivityResult(requestCode, resultCode, data) - if (resultCode == RESULT_OK){ - getData() - } - } -} diff --git a/app/src/main/java/com/dollearn/student/ui/welfare/GoodsDetailActivity.kt b/app/src/main/java/com/dollearn/student/ui/welfare/GoodsDetailActivity.kt deleted file mode 100644 index d2b340c..0000000 --- a/app/src/main/java/com/dollearn/student/ui/welfare/GoodsDetailActivity.kt +++ /dev/null @@ -1,133 +0,0 @@ -package com.dollearn.student.ui.welfare - -import android.app.Activity -import android.content.Intent -import android.graphics.Paint -import android.webkit.WebChromeClient -import android.webkit.WebViewClient -import androidx.core.os.bundleOf -import com.dollearn.student.R -import com.dollearn.student.dialog.TipDialog -import com.dollearn.student.network.HttpManager -import com.dollearn.student.network.entity.Banner -import com.dollearn.student.network.entity.GoodsDetail -import com.dollearn.student.network.request -import com.dollearn.student.ui.TransparentStatusBarActivity -import com.dollearn.student.ui.home.PayResultActivity -import com.dollearn.student.ui.shop.ExchangeActivity -import com.dollearn.student.ui.shop.adapter.ShopBannerAdapter -import com.dollearn.student.utils.pay.PayListener -import com.dollearn.student.utils.pay.PayUtil -import com.youth.banner.indicator.CircleIndicator -import kotlinx.android.synthetic.main.activity_goods_detail.* -import kotlinx.android.synthetic.main.activity_goods_detail.tv_score -import org.jetbrains.anko.startActivity -import org.jetbrains.anko.startActivityForResult - -class GoodsDetailActivity : TransparentStatusBarActivity(), PayListener { - override fun setContentView() = R.layout.activity_goods_detail - - private val id by lazy { intent.getStringExtra("id")?:"" } - private var goods: GoodsDetail? = null - - private var score = 0 - - private val bannerImg = arrayListOf<Banner>() - private val bannerAdapter by lazy { - ShopBannerAdapter(bannerImg, this) - } - - override fun initClick() { - tv_action.setOnClickListener { - if (score<goods?.good?.integral?:0){ - val tipDialog = TipDialog() - tipDialog.arguments = bundleOf("isAlert" to true,"msg" to "兑换失败,当前剩余积分不足!","ok" to "关闭") - tipDialog.show(supportFragmentManager,"tip") - return@setOnClickListener - } - tv_action.isEnabled = false - showDialog() - HttpManager.redeemNow(id).request(this,false, {_,data-> - tv_action.isEnabled = true - startActivity<ExchangeActivity>("order" to data) - }){_,msg-> - val tipDialog = TipDialog() - tipDialog.arguments = bundleOf("isAlert" to true,"msg" to msg,"ok" to "关闭") - tipDialog.show(supportFragmentManager,"tip") - tv_action.isEnabled = true - } - } - } - - override fun initView() { - banner.adapter = bannerAdapter - banner.indicator = CircleIndicator(this) - val settings = webView.settings - settings.javaScriptEnabled = true - settings.javaScriptCanOpenWindowsAutomatically = true - settings.defaultTextEncodingName = "utf-8" - settings.domStorageEnabled = true - webView.webChromeClient = object : WebChromeClient() {} - webView.webViewClient = object : WebViewClient() {} - PayUtil.addPayListener(this) - getData() - getScore() - } - - private fun getScore() { - HttpManager.getIntegralStudy().request(this){_,data-> - score = data?:0 - tv_balance.text = "剩余积分:$score" - } - } - - private fun getData() { - HttpManager.goodDetail(id).request(this) { _, data -> - goods = data - goods?.apply { - tv_score.text = good.integral.toString() - bannerImg.addAll((good.detailImg.split(",")).map { Banner(url = it) }) - bannerAdapter.notifyDataSetChanged() - banner.currentItem = 1 - tv_price.text = good.integral.toString() - tv_value.text = if (good.price!=null&&good.price!=0.0) "¥%.2f".format(good.price) else "" - tv_value.paintFlags = tv_value.paintFlags or Paint.STRIKE_THRU_TEXT_FLAG - tv_name.text = good.name - tv_category.text = goodTypes?.joinToString ("|"){ it.name } - tv_sold.text = "%s%s%d人已换".format(if (residueNumber == null) "" else "剩余数量:${residueNumber}|",if (good.userCount == null) "" else "可换数量:${good.userCount}|", exchangeNumber) - val sHead = - "<html><head><meta name=\"viewport\" content=\"width=device-width, " + "initial-scale=1.0, minimum-scale=0.5, maximum-scale=2.0, user-scalable=yes\" />" + "<style>img{max-width:100% !important;height:auto !important;}</style>" + "<style>body{max-width:100% !important;}</style>" + "</head><body>" - webView!!.loadDataWithBaseURL(null, sHead + good.detail, "text/html", "utf-8", null) - } - } - } - - override fun onPaySuccess() { - startActivityForResult<PayResultActivity>(1, "type" to PayResultActivity.TYPE_EXCHANGE_SUC) - } - - override fun onPayCancel() { - } - - override fun onPayError(msg: String) { - startActivityForResult<PayResultActivity>( - 1, - "type" to PayResultActivity.TYPE_EXCHANGE_FAILED, - "msg" to msg - ) - } - - override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { - super.onActivityResult(requestCode, resultCode, data) - if (resultCode == Activity.RESULT_OK) { - tv_action.postDelayed({ - }, 500) - } - } - - override fun onDestroy() { - super.onDestroy() - PayUtil.removePayListener(this) - PayUtil.unregisterApp() - } -} diff --git a/app/src/main/java/com/dollearn/student/ui/welfare/OnlineShopActivity.kt b/app/src/main/java/com/dollearn/student/ui/welfare/OnlineShopActivity.kt deleted file mode 100644 index fd1408e..0000000 --- a/app/src/main/java/com/dollearn/student/ui/welfare/OnlineShopActivity.kt +++ /dev/null @@ -1,19 +0,0 @@ -package com.dollearn.student.ui.welfare - -import cn.sinata.xldutils.gone -import com.dollearn.student.R -import com.dollearn.student.ui.TransparentStatusBarActivity -import kotlinx.android.synthetic.main.activity_online_shop.* - -class OnlineShopActivity : TransparentStatusBarActivity() { - override fun setContentView() = R.layout.activity_online_shop - - override fun initClick() { - iv_back.setOnClickListener { finish() } - } - - override fun initView() { - titleBar.gone() - } - -} \ No newline at end of file diff --git a/app/src/main/java/com/dollearn/student/ui/welfare/adapter/CoinAdapter.kt b/app/src/main/java/com/dollearn/student/ui/welfare/adapter/CoinAdapter.kt deleted file mode 100644 index ae1dbf4..0000000 --- a/app/src/main/java/com/dollearn/student/ui/welfare/adapter/CoinAdapter.kt +++ /dev/null @@ -1,17 +0,0 @@ -package com.dollearn.student.ui.welfare.adapter - -import android.widget.TextView -import cn.sinata.xldutils.adapter.HFRecyclerAdapter -import cn.sinata.xldutils.adapter.util.ViewHolder -import com.dollearn.student.R -import com.dollearn.student.network.entity.CoinRecord -import org.jetbrains.anko.textColorResource - -class CoinAdapter(datas:ArrayList<CoinRecord>):HFRecyclerAdapter<CoinRecord>(datas, R.layout.item_coin) { - override fun onBind(holder: ViewHolder, position: Int, data: CoinRecord) { - holder.setText(R.id.tv_reason,data.consumeName) - holder.setText(R.id.tv_time,data.consumeTime) - holder.setText(R.id.tv_money,data.consumeAmount) - holder.bind<TextView>(R.id.tv_money).textColorResource = if (data.consumeAmount.startsWith("-")) R.color.color_text_price else R.color.textColorGreen - } -} \ No newline at end of file diff --git a/app/src/main/java/com/dollearn/student/ui/welfare/adapter/ExchangeRecordAdapter.kt b/app/src/main/java/com/dollearn/student/ui/welfare/adapter/ExchangeRecordAdapter.kt deleted file mode 100644 index 0e0e78e..0000000 --- a/app/src/main/java/com/dollearn/student/ui/welfare/adapter/ExchangeRecordAdapter.kt +++ /dev/null @@ -1,76 +0,0 @@ -package com.dollearn.student.ui.welfare.adapter - -import android.widget.TextView -import androidx.core.os.bundleOf -import cn.sinata.xldutils.activity.BaseActivity -import cn.sinata.xldutils.adapter.HFRecyclerAdapter -import cn.sinata.xldutils.adapter.util.ViewHolder -import cn.sinata.xldutils.gone -import cn.sinata.xldutils.visible -import com.dollearn.student.R -import com.dollearn.student.dialog.TipDialog -import com.dollearn.student.network.HttpManager -import com.dollearn.student.network.entity.ExchangeRecord -import com.dollearn.student.network.request -import com.dollearn.student.ui.mine.ChangeAddressActivity -import com.facebook.drawee.view.SimpleDraweeView -import org.jetbrains.anko.startActivityForResult -import java.util.ArrayList - -class ExchangeRecordAdapter(list: ArrayList<ExchangeRecord>) : - HFRecyclerAdapter<ExchangeRecord>(list, R.layout.item_exchange_record) { - override fun onBind(holder: ViewHolder, position: Int, data: ExchangeRecord) { - holder.bind<SimpleDraweeView>(R.id.iv_good).setImageURI(data.coverImg) - holder.setText(R.id.tv_name, data.goodsName) - holder.setText(R.id.tv_price, "${data.integral}积分") - holder.setText(R.id.tv_category, data.goodsType.joinToString(" | ") { it }) - holder.setText(R.id.tv_count, "商品数量:${data.count}") - holder.setText(R.id.tv_receiver, "收货信息:${data.consigneeName}|${data.consigneePhone}|${data.consigneeAddress}") - val tvPost = holder.bind<TextView>(R.id.tv_post) - val tvAction = holder.bind<TextView>(R.id.tv_action) - val act = context as BaseActivity - - val state = when(data.state){//订单状态1待发货2已发货3已完成 - 1->{ - tvAction.visible() - tvAction.text = "修改地址" - tvPost.gone() - tvAction.setOnClickListener { - act.startActivityForResult<ChangeAddressActivity>(1,"id" to data.orderId) - } - "待发货" - } - 2->{ - tvAction.visible() - tvAction.text = "已收货" - tvPost.visible() - tvPost.text = "发货信息:${data.express}|${data.expressNumber}" - tvAction.setOnClickListener { - val tipDialog = TipDialog() - tipDialog.arguments = bundleOf("msg" to "确认已收到货吗?") - tipDialog.setCallback(object :TipDialog.OnClickCallback{ - override fun onOk() { - HttpManager.confirmStudy(data.orderId).request(act){_,_-> - data.state = 3 - notifyItemChanged(position) - } - } - - override fun onCancel() { - } - }) - tipDialog.show(act.supportFragmentManager,"sure") - } - "平台已发货,请耐心等待" - } - else->{ - tvAction.gone() - tvPost.gone() - "已完成" - } - } - holder.setText(R.id.tv_state, state) - - } - -} diff --git a/app/src/main/java/com/dollearn/student/ui/welfare/adapter/ShopCheckAdapter.kt b/app/src/main/java/com/dollearn/student/ui/welfare/adapter/ShopCheckAdapter.kt deleted file mode 100644 index b36d336..0000000 --- a/app/src/main/java/com/dollearn/student/ui/welfare/adapter/ShopCheckAdapter.kt +++ /dev/null @@ -1,25 +0,0 @@ -package com.dollearn.student.ui.welfare.adapter - -import android.widget.TextView -import cn.sinata.xldutils.adapter.HFRecyclerAdapter -import cn.sinata.xldutils.adapter.util.ViewHolder -import com.dollearn.student.R -import org.jetbrains.anko.backgroundResource -import java.util.ArrayList - -class ShopCheckAdapter(list: ArrayList<String>):HFRecyclerAdapter<String>(list, R.layout.item_shop_check) { - var checked = 0 - override fun onBind(holder: ViewHolder, position: Int, data: String) { - holder.bind<TextView>(R.id.tv_name).apply { - text = data - if (position == checked){ - backgroundResource = R.drawable.bg_orange_line_4dp - setCompoundDrawablesRelativeWithIntrinsicBounds(0,0,R.mipmap.icon_selected,0) - }else{ - backgroundResource = R.drawable.bg_grey_line_4dp - setCompoundDrawablesRelativeWithIntrinsicBounds(0,0,R.mipmap.icon_radiobutton,0) - } - } - } - -} diff --git a/app/src/main/java/com/dollearn/student/ui/welfare/adapter/WelfareGoodsAdapter.kt b/app/src/main/java/com/dollearn/student/ui/welfare/adapter/WelfareGoodsAdapter.kt deleted file mode 100644 index df6fae1..0000000 --- a/app/src/main/java/com/dollearn/student/ui/welfare/adapter/WelfareGoodsAdapter.kt +++ /dev/null @@ -1,16 +0,0 @@ -package com.dollearn.student.ui.welfare.adapter - -import cn.sinata.xldutils.adapter.HFRecyclerAdapter -import cn.sinata.xldutils.adapter.util.ViewHolder -import com.facebook.drawee.view.SimpleDraweeView -import com.dollearn.student.R -import com.dollearn.student.network.entity.Commodity -import java.util.ArrayList - -class WelfareGoodsAdapter(goods: ArrayList<Commodity>):HFRecyclerAdapter<Commodity>(goods, R.layout.item_welfare_goods) { - override fun onBind(holder: ViewHolder, position: Int, data: Commodity) { - holder.bind<SimpleDraweeView>(R.id.iv_good).setImageURI(data.commodityImg) - holder.setText(R.id.tv_name,data.commodityName) - holder.setText(R.id.tv_price,data.getPriceStr()) - } -} diff --git a/app/src/main/java/com/dollearn/student/utils/AppUtils.kt b/app/src/main/java/com/dollearn/student/utils/AppUtils.kt deleted file mode 100644 index 1ee8477..0000000 --- a/app/src/main/java/com/dollearn/student/utils/AppUtils.kt +++ /dev/null @@ -1,31 +0,0 @@ -package com.dollearn.student.utils - -import android.content.Context -import android.graphics.Bitmap -import com.zxing.scanner.encode.QREncode -import java.math.BigDecimal - -/** - * 生成二维码图片 - * - * @param content 设置内容 - */ -fun getQRcodeImg( - context: Context?, - content: String? -): Bitmap? { - return QREncode.Builder(context) - .setMargin(0) //二维码边框 - //二维码内容 - .setContents(content) - .setSize(400) //二维码等比大小 - //.setLogoBitmap(logoBitmap) - .build().encodeAsBitmap() -} - -fun formatDistance(p: String?): String { - if (p == null || p.isEmpty()) { - return "0.00" - } - return BigDecimal(p).setScale(2, BigDecimal.ROUND_HALF_UP).toString() -} \ No newline at end of file diff --git a/app/src/main/java/com/dollearn/student/views/CalendarView.java b/app/src/main/java/com/dollearn/student/views/CalendarView.java deleted file mode 100644 index 0abc9d7..0000000 --- a/app/src/main/java/com/dollearn/student/views/CalendarView.java +++ /dev/null @@ -1,399 +0,0 @@ -package com.dollearn.student.views; - -import android.content.Context; -import android.graphics.Canvas; -import android.graphics.Color; -import android.graphics.Paint; -import android.util.AttributeSet; -import android.util.DisplayMetrics; -import android.view.MotionEvent; -import android.view.View; - - -import com.dollearn.student.utils.DateUtils; - -import java.util.ArrayList; -import java.util.Calendar; -import java.util.List; - -/** - * Created by zhouyou on 2016/7/25. - * Class desc: - * <p> - * 自定义日历View,可多选 - */ -public class CalendarView extends View { - - // 列的数量 - private static final int NUM_COLUMNS = 7; - // 行的数量 - private static final int NUM_ROWS = 6; - - /** - * 可选日期数据 - */ - private List<String> mOptionalDates = new ArrayList<>(); - - private int nowDay = 0; - - /** - * 以选日期数据 - */ - private List<String> mSelectedDates = new ArrayList<>(); - - /** - * 异常日期数据 - */ - private List<String> mErrorDates = new ArrayList<>(); - - // 分割线颜色 - private int mDividerColor = Color.parseColor("#DEDEDE"); - // 默认背景颜色和不可选背景色 - private int mBgColor = Color.parseColor("#ffffff"); - // 选中背景颜色 - private int mSelectedColor = Color.parseColor("#EE6639"); - // 可选背景颜色 - private int mAbleColor = Color.parseColor("#FFFFFF"); - // 天数默认颜色 - private int mDayNormalColor = Color.parseColor("#27282D"); - //异常日期 - private int mErrorColor = Color.parseColor("#FF5C5C"); - // 天数不可选颜色 - private int mDayNotOptColor = Color.parseColor("#BEBEC0"); - // 天数选择后颜色 - private int mDayPressedColor = Color.WHITE; - // 天数字体大小 - private int mDayTextSize = 14; - // 是否可以被点击状态 - private boolean mClickable = true; - //是否单选 - private boolean mSingle = true; - - private DisplayMetrics mMetrics; - private Paint mPaint; - private int mCurYear; - private int mCurMonth; - private int mCurDate; - - private int mSelYear; - private int mSelMonth; - private int mSelDate; - private int mColumnSize; - private int mRowSize; - private int[][] mDays = new int[6][7]; - - // 当月一共有多少天 - private int mMonthDays; - // 当月第一天位于周几 - private int mWeekNumber; - - public CalendarView(Context context) { - super(context); - init(); - } - - public CalendarView(Context context, AttributeSet attrs) { - super(context, attrs); - init(); - } - - public CalendarView(Context context, AttributeSet attrs, int defStyleAttr) { - super(context, attrs, defStyleAttr); - init(); - } - - private void init() { - // 获取手机屏幕参数 - mMetrics = getResources().getDisplayMetrics(); - // 创建画笔 - mPaint = new Paint(); - mPaint.setAntiAlias(true); - // 获取当前日期 - Calendar calendar = Calendar.getInstance(); - mCurYear = calendar.get(Calendar.YEAR); - mCurMonth = calendar.get(Calendar.MONTH); - mCurDate = calendar.get(Calendar.DATE); - setSelYTD(mCurYear, mCurMonth, mCurDate); - nowDay = Integer.parseInt(getSelData(mCurYear, mCurMonth, mCurDate)); - mSelectedDates.add(getSelData(mCurYear, mCurMonth, mCurDate)); - } - - @Override - protected void onDraw(Canvas canvas) { - initSize(); - // 设置绘制字体大小 - mPaint.setTextSize(mDayTextSize * mMetrics.scaledDensity); - String dayStr; - // 获取当月一共有多少天 - mMonthDays = DateUtils.getMonthDays(mSelYear, mSelMonth); - // 获取当月第一天位于周几 - mWeekNumber = DateUtils.getFirstDayWeek(mSelYear, mSelMonth); - - for (int day = 0; day < mMonthDays; day++) { - dayStr = String.valueOf(day + 1); - int column = (day + mWeekNumber - 1) % 7; - int row = (day + mWeekNumber - 1) / 7; - mDays[row][column] = day + 1; - int startX = (int) (mColumnSize * column + (mColumnSize - mPaint.measureText(dayStr)) / 2); - int startY = (int) (mRowSize * row + mRowSize / 2 - (mPaint.ascent() + mPaint.descent()) / 2); - if (!mSelectedDates.contains(getSelData(mSelYear, mSelMonth, mDays[row][column]))) { - // 没有点击过,绘制默认背景 -// canvas.drawBitmap(mBgNotOptBitmap, startX - (mBgNotOptBitmap.getWidth() / 3), startY - (mBgNotOptBitmap.getHeight() / 2), mPaint); - mPaint.setColor(mAbleColor); - canvas.drawRect(column * mColumnSize, row * mRowSize, column * mColumnSize + mColumnSize, row * mRowSize + mRowSize, mPaint); - mPaint.setColor(mDayNormalColor); - } else { - // 点击过,绘制点击过的背景 -// canvas.drawBitmap(mBgOptBitmap, startX - (mBgOptBitmap.getWidth() / 3), startY - (mBgOptBitmap.getHeight() / 2), mPaint); - mPaint.setColor(mSelectedColor); -// canvas.drawRect(column*mColumnSize,row*mRowSize,column*mColumnSize+mColumnSize,row*mRowSize+mRowSize,mPaint); - canvas.drawCircle(column * mColumnSize + 0.5f * mColumnSize, row * mRowSize + 0.5f * mRowSize, 0.4f * mColumnSize, mPaint); - mPaint.setColor(mDayPressedColor); - } - //是异常天数 - if (mErrorDates.contains(getSelData(mSelYear, mSelMonth, mDays[row][column]))) { - mPaint.setColor(mErrorColor); - } - // 绘制天数 - canvas.drawText(dayStr, startX, startY, mPaint); - } - } - - private int downX = 0, downY = 0; - - @Override - public boolean onTouchEvent(MotionEvent event) { - int eventCode = event.getAction(); - switch (eventCode) { - case MotionEvent.ACTION_DOWN: - downX = (int) event.getX(); - downY = (int) event.getY(); - break; - case MotionEvent.ACTION_MOVE: - break; - case MotionEvent.ACTION_UP: - if (!mClickable) return true; - - int upX = (int) event.getX(); - int upY = (int) event.getY(); - if (Math.abs(upX - downX) < 10 && Math.abs(upY - downY) < 10) { - performClick(); - onClick((upX + downX) / 2, (upY + downY) / 2); - } - break; - } - return true; - } - - public void setErrorDays(List<String> errorDates) { - this.mErrorDates = errorDates; - invalidate(); - } - - /** - * 点击事件 - */ - private void onClick(int x, int y) { - int row = y / mRowSize; - int column = x / mColumnSize; - setSelYTD(mSelYear, mSelMonth, mDays[row][column]); - - // 判断是否点击过 - boolean isSelected = mSelectedDates.contains(getSelData(mSelYear, mSelMonth, mSelDate)); - // 判断是否可以添加 - boolean isCanAdd = true; - if (isSelected) { -// mSelectedDates.remove(getSelData(mSelYear, mSelMonth, mSelDate)); - } else if (isCanAdd) { - if (mSingle) - mSelectedDates.clear(); - mSelectedDates.add(getSelData(mSelYear, mSelMonth, mSelDate)); - } - - invalidate(); - if (mListener != null && isCanAdd) { - // 执行回调 - String dateStr = mSelYear + "-"; - if (mSelMonth + 1 < 10) - dateStr = dateStr + "0" + (mSelMonth + 1) + "-"; - else - dateStr = dateStr + (mSelMonth + 1) + "-"; - if (mSelDate < 10) - dateStr = dateStr + "0" + mSelDate; - else - dateStr = dateStr + mSelDate; - mListener.onClickDateListener(dateStr); - } - } - - public String getCurrent() { - String dateStr = mCurYear + "-"; - if (mCurMonth + 1 < 10) - dateStr = dateStr + "0" + (mCurMonth + 1) + "-"; - else - dateStr = dateStr + (mCurMonth + 1) + "-"; - if (mCurDate < 10) - dateStr = dateStr + "0" + mCurDate; - else - dateStr = dateStr + mCurDate; - return dateStr; - } - - public String getYM() { - String dateStr = mSelYear + "-"; - if (mSelMonth + 1 < 10) - dateStr = dateStr + "0" + (mSelMonth + 1); - else - dateStr = dateStr + (mSelMonth + 1); - - return dateStr; - } - - /** - * 初始化列宽和高 - */ - private void initSize() { - // 初始化每列的大小 - mColumnSize = getWidth() / NUM_COLUMNS; - // 初始化每行的大小 - mRowSize = getHeight() / NUM_ROWS; - } - - /** - * 设置可选择日期 - * - * @param dates 日期数据 - */ - public void setOptionalDate(List<String> dates) { - this.mOptionalDates = dates; - invalidate(); - } - - /** - * 设置已选日期数据 - */ - public void setSelectedDates(List<String> dates) { - this.mSelectedDates = dates; - } - - /** - * 获取已选日期数据 - */ - public List<String> getSelectedDates() { - return mSelectedDates; - } - - /** - * 设置日历是否可以点击 - */ - @Override - public void setClickable(boolean clickable) { - this.mClickable = clickable; - } - - /** - * 设置年月日 - * - * @param year 年 - * @param month 月 - * @param date 日 - */ - private void setSelYTD(int year, int month, int date) { - this.mSelYear = year; - this.mSelMonth = month; - this.mSelDate = date; - } - - /** - * 设置上一个月日历 - */ - public void setLastMonth() { - int year = mSelYear; - int month = mSelMonth; - int day = mSelDate; - // 如果是1月份,则变成12月份 - if (month == 0) { - year = mSelYear - 1; - month = 11; - } else if (DateUtils.getMonthDays(year, month) == day) { - // 如果当前日期为该月最后一点,当向前推的时候,就需要改变选中的日期 - month = month - 1; - day = DateUtils.getMonthDays(year, month); - } else { - month = month - 1; - } - setSelYTD(year, month, day); - invalidate(); - } - - /** - * 设置下一个日历 - */ - public void setNextMonth() { - int year = mSelYear; - int month = mSelMonth; - int day = mSelDate; - // 如果是12月份,则变成1月份 - if (month == 11) { - year = mSelYear + 1; - month = 0; - } else if (DateUtils.getMonthDays(year, month) == day) { - // 如果当前日期为该月最后一点,当向前推的时候,就需要改变选中的日期 - month = month + 1; - day = DateUtils.getMonthDays(year, month); - } else { - month = month + 1; - } - setSelYTD(year, month, day); - invalidate(); - } - - /** - * 获取当前展示的年和月份 - * - * @return 格式:2016年06月 - */ - public String getDate() { - return mSelYear + "年" + (mSelMonth + 1) + "月"; - } - - /** - * 获取当前展示的日期 - * - * @return 格式:20160606 - */ - private String getSelData(int year, int month, int date) { - String monty, day; - month = (month + 1); - - // 判断月份是否有非0情况 - if ((month) < 10) { - monty = "0" + month; - } else { - monty = String.valueOf(month); - } - - // 判断天数是否有非0情况 - if ((date) < 10) { - day = "0" + (date); - } else { - day = String.valueOf(date); - } - return year + monty + day; - } - - private OnClickListener mListener; - -public interface OnClickListener { - void onClickDateListener(String date); - -} - - /** - * 设置点击回调 - */ - public void setOnClickDate(OnClickListener listener) { - this.mListener = listener; - } - -} \ No newline at end of file diff --git a/app/src/main/java/com/dollearn/student/views/calendar/SimpleMonthView.java b/app/src/main/java/com/dollearn/student/views/calendar/SimpleMonthView.java deleted file mode 100644 index 0248acf..0000000 --- a/app/src/main/java/com/dollearn/student/views/calendar/SimpleMonthView.java +++ /dev/null @@ -1,100 +0,0 @@ -package com.dollearn.student.views.calendar; - -import android.content.Context; -import android.graphics.Canvas; -import android.graphics.Color; -import android.graphics.LinearGradient; -import android.graphics.Paint; -import android.graphics.Shader; - -import com.haibin.calendarview.Calendar; -import com.haibin.calendarview.MonthView; - -/** - * 高仿魅族日历布局 - * Created by huanghaibin on 2017/11/15. - */ - -public class SimpleMonthView extends MonthView { - - private int mRadius; - - private Context context; - - public SimpleMonthView(Context context) { - super(context); - this.context = context; - } - - @Override - protected void onPreviewHook() { - mRadius = Math.min(mItemWidth, mItemHeight) / 5 * 2; - mSchemePaint.setStyle(Paint.Style.STROKE); - } - - @Override - protected void onLoopStart(int x, int y) { - - } - - @Override - protected boolean onDrawSelected(Canvas canvas, Calendar calendar, int x, int y, boolean hasScheme) { - mSelectedPaint.setColor(Color.parseColor("#FD8302")); - canvas.drawRect(x+dip2Px(6),y+dip2Px(3),x+mItemWidth-dip2Px(6),y+mItemHeight-dip2Px(3),mSelectedPaint); - return true; - } - - @Override - protected void onDrawScheme(Canvas canvas, Calendar calendar, int x, int y) { - int cx = x + mItemWidth / 2; - int cy = y + mItemHeight / 2; - String scheme = calendar.getScheme(); - if (scheme.equals("true")){ - mSchemePaint.setStrokeWidth(dip2Px(3)); - mSchemePaint.setColor(Color.parseColor("#EF713B")); - mSchemePaint.setStyle(Paint.Style.FILL); - mSchemePaint.setStrokeCap(Paint.Cap.ROUND); - canvas.drawLine(cx-dip2Px(10),y+mItemHeight-dip2Px(2), - cx+dip2Px(10),y+mItemHeight-dip2Px(2),mSchemePaint); - } - } - - @Override - protected void onDrawText(Canvas canvas, Calendar calendar, int x, int y, boolean hasScheme, boolean isSelected) { - float baselineY = mTextBaseLine + y; - int cx = x + mItemWidth / 2; - - if (isSelected) { - canvas.drawText(String.valueOf(calendar.getDay()), - cx, - baselineY, - mSelectTextPaint); - } else if (hasScheme) { - canvas.drawText(String.valueOf(calendar.getDay()), - cx, - baselineY, - calendar.isCurrentDay() ? mCurDayTextPaint : - calendar.isCurrentMonth() ? mSchemeTextPaint : mOtherMonthTextPaint); - - } else if (onCalendarIntercept(calendar)){ - canvas.drawText(String.valueOf(calendar.getDay()), - cx, - baselineY, - mOtherMonthTextPaint); - }else { - canvas.drawText(String.valueOf(calendar.getDay()), cx, baselineY, - calendar.isCurrentDay() ? mCurDayTextPaint : isInRange(calendar)?mCurMonthTextPaint : mOtherMonthTextPaint); - } - } - - /** - * dp转px - * - * @param dpValue dp - * @return px - */ - int dip2Px(float dpValue) { - final float scale = context.getResources().getDisplayMetrics().density; - return (int) (dpValue * scale + 0.5f); - } -} diff --git a/app/src/main/java/com/dollearn/student/views/calendar/SimpleWeekBar.java b/app/src/main/java/com/dollearn/student/views/calendar/SimpleWeekBar.java deleted file mode 100644 index 04d2811..0000000 --- a/app/src/main/java/com/dollearn/student/views/calendar/SimpleWeekBar.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.dollearn.student.views.calendar; - -import android.content.Context; -import android.view.LayoutInflater; -import android.widget.TextView; - -import com.haibin.calendarview.WeekBar; -import com.dollearn.student.R; - -/** - * 自定义英文栏 - * Created by huanghaibin on 2017/11/30. - */ - -public class SimpleWeekBar extends WeekBar { - - public SimpleWeekBar(Context context) { - super(context); - LayoutInflater.from(context).inflate(R.layout.simple_week_bar, this, true); - setBackgroundResource(R.drawable.bg_grey_2dp); - } - - /** - * 当周起始发生变化,使用自定义布局需要重写这个方法,避免出问题 - * - * @param weekStart 周起始 - */ - @Override - protected void onWeekStartChange(int weekStart) { - for (int i = 0; i < getChildCount(); i++) { - ((TextView) getChildAt(i)).setText(getWeekString(i, weekStart)); - } - } - - /** - * 或者周文本,这个方法仅供父类使用 - * - * @param index index - * @param weekStart weekStart - * @return 或者周文本 - */ - private String getWeekString(int index, int weekStart) { - String[] weeks = getContext().getResources().getStringArray(R.array.week_string_array); - - if (weekStart == 1) { - return weeks[index]; - } - if (weekStart == 2) { - return weeks[index == 6 ? 0 : index + 1]; - } - return weeks[index == 0 ? 6 : index - 1]; - } -} diff --git a/app/src/main/res/drawable/bg_blue_14dp.xml b/app/src/main/res/drawable/bg_blue_14dp.xml deleted file mode 100644 index 9ee734e..0000000 --- a/app/src/main/res/drawable/bg_blue_14dp.xml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<shape xmlns:android="http://schemas.android.com/apk/res/android"> - <corners android:radius="14dp"/> - <solid android:color="#2D7AE4"/> -</shape> \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_foreground_avatar.xml b/app/src/main/res/drawable/bg_foreground_avatar.xml deleted file mode 100644 index 09ee076..0000000 --- a/app/src/main/res/drawable/bg_foreground_avatar.xml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<shape xmlns:android="http://schemas.android.com/apk/res/android"> - <solid android:color="@color/halfTrans"/> - <corners android:radius="90dp"/> -</shape> \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_grey_19dp.xml b/app/src/main/res/drawable/bg_grey_19dp.xml deleted file mode 100644 index 7521266..0000000 --- a/app/src/main/res/drawable/bg_grey_19dp.xml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<shape xmlns:android="http://schemas.android.com/apk/res/android"> - <corners android:radius="19dp"/> - <solid android:color="#F9F9F9"/> -</shape> \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_grey_1dp.xml b/app/src/main/res/drawable/bg_grey_1dp.xml deleted file mode 100644 index b32359d..0000000 --- a/app/src/main/res/drawable/bg_grey_1dp.xml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<shape xmlns:android="http://schemas.android.com/apk/res/android"> - <corners android:radius="1dp"/> - <solid android:color="#ACACAC"/> -</shape> \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_grey_2dp.xml b/app/src/main/res/drawable/bg_grey_2dp.xml deleted file mode 100644 index 287370a..0000000 --- a/app/src/main/res/drawable/bg_grey_2dp.xml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<shape xmlns:android="http://schemas.android.com/apk/res/android"> - <corners android:radius="2dp"/> - <solid android:color="#FAFAFA"/> -</shape> \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_grey_6dp.xml b/app/src/main/res/drawable/bg_grey_6dp.xml deleted file mode 100644 index b6819f6..0000000 --- a/app/src/main/res/drawable/bg_grey_6dp.xml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<shape xmlns:android="http://schemas.android.com/apk/res/android"> - <corners android:radius="6dp"/> - <solid android:color="#F9F9F9"/> -</shape> \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_grey_9dp.xml b/app/src/main/res/drawable/bg_grey_9dp.xml deleted file mode 100644 index e44ece1..0000000 --- a/app/src/main/res/drawable/bg_grey_9dp.xml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<shape xmlns:android="http://schemas.android.com/apk/res/android"> - <corners android:radius="9dp"/> - <solid android:color="@color/page_bg"/> -</shape> \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_grey_line.xml b/app/src/main/res/drawable/bg_grey_line.xml deleted file mode 100644 index 4d51374..0000000 --- a/app/src/main/res/drawable/bg_grey_line.xml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<shape xmlns:android="http://schemas.android.com/apk/res/android"> - <stroke android:width="1px" android:color="@color/dividing_line_color"/> - <solid android:color="@color/white"/> -</shape> \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_grey_line_11dp.xml b/app/src/main/res/drawable/bg_grey_line_11dp.xml deleted file mode 100644 index ae2270c..0000000 --- a/app/src/main/res/drawable/bg_grey_line_11dp.xml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<shape xmlns:android="http://schemas.android.com/apk/res/android"> - <corners android:radius="11dp"/> - <stroke android:width="1dp" android:color="#E7E3E3"/> -</shape> \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_grey_line_18dp.xml b/app/src/main/res/drawable/bg_grey_line_18dp.xml deleted file mode 100644 index 8c444d5..0000000 --- a/app/src/main/res/drawable/bg_grey_line_18dp.xml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<shape xmlns:android="http://schemas.android.com/apk/res/android"> - <corners android:radius="18dp"/> - <stroke android:color="@color/textColor99" android:width="1dp"/> -</shape> \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_grey_line_2dp.xml b/app/src/main/res/drawable/bg_grey_line_2dp.xml deleted file mode 100644 index 2f2bd21..0000000 --- a/app/src/main/res/drawable/bg_grey_line_2dp.xml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<shape xmlns:android="http://schemas.android.com/apk/res/android"> - <corners android:radius="2dp"/> - <stroke android:color="@color/dividing_line_color" android:width="1dp"/> -</shape> \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_grey_line_5dp.xml b/app/src/main/res/drawable/bg_grey_line_5dp.xml deleted file mode 100644 index 05ab552..0000000 --- a/app/src/main/res/drawable/bg_grey_line_5dp.xml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<shape xmlns:android="http://schemas.android.com/apk/res/android"> - <corners android:radius="5dp"/> - <stroke android:color="#D9D9D9" android:width="1dp"/> -</shape> \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_orange_12dp.xml b/app/src/main/res/drawable/bg_orange_12dp.xml deleted file mode 100644 index 8204a4a..0000000 --- a/app/src/main/res/drawable/bg_orange_12dp.xml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<shape xmlns:android="http://schemas.android.com/apk/res/android"> - <corners android:radius="12dp"/> - <solid android:color="#EF6843"/> -</shape> \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_orange_1dp.xml b/app/src/main/res/drawable/bg_orange_1dp.xml deleted file mode 100644 index 861ec60..0000000 --- a/app/src/main/res/drawable/bg_orange_1dp.xml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<shape xmlns:android="http://schemas.android.com/apk/res/android"> - <corners android:radius="1dp"/> - <solid android:color="#FEE0C4"/> -</shape> \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_orange_2dp.xml b/app/src/main/res/drawable/bg_orange_2dp.xml deleted file mode 100644 index 8e93673..0000000 --- a/app/src/main/res/drawable/bg_orange_2dp.xml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<shape xmlns:android="http://schemas.android.com/apk/res/android"> - <solid android:color="@color/colorPrimary"/> - <corners android:radius="2dp"/> -</shape> \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_orange_30dp.xml b/app/src/main/res/drawable/bg_orange_30dp.xml deleted file mode 100644 index fddc7c3..0000000 --- a/app/src/main/res/drawable/bg_orange_30dp.xml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<shape xmlns:android="http://schemas.android.com/apk/res/android"> - <corners android:radius="30dp"/> - <solid android:color="#FC743A"/> -</shape> \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_orange_4dp.xml b/app/src/main/res/drawable/bg_orange_4dp.xml deleted file mode 100644 index dc453ee..0000000 --- a/app/src/main/res/drawable/bg_orange_4dp.xml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<shape xmlns:android="http://schemas.android.com/apk/res/android"> - <corners android:radius="4dp"/> - <solid android:color="@color/colorPrimary"/> -</shape> \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_orange_line_25dp.xml b/app/src/main/res/drawable/bg_orange_line_25dp.xml deleted file mode 100644 index d1c3f32..0000000 --- a/app/src/main/res/drawable/bg_orange_line_25dp.xml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<shape xmlns:android="http://schemas.android.com/apk/res/android"> - <stroke android:color="@color/colorPrimary" android:width="1dp"/> - <corners android:radius="25dp"/> -</shape> \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_orange_line_2dp.xml b/app/src/main/res/drawable/bg_orange_line_2dp.xml deleted file mode 100644 index c15cf75..0000000 --- a/app/src/main/res/drawable/bg_orange_line_2dp.xml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<shape xmlns:android="http://schemas.android.com/apk/res/android"> - <corners android:radius="2dp"/> - <stroke android:color="@color/colorPrimary" android:width="1dp"/> -</shape> \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_orange_line_4.xml b/app/src/main/res/drawable/bg_orange_line_4.xml deleted file mode 100644 index bf91e29..0000000 --- a/app/src/main/res/drawable/bg_orange_line_4.xml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<shape xmlns:android="http://schemas.android.com/apk/res/android"> - <corners android:radius="4dp"/> - <stroke android:color="#FD7902" android:width="1dp"/> -</shape> \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_orange_line_4dp.xml b/app/src/main/res/drawable/bg_orange_line_4dp.xml deleted file mode 100644 index a07f209..0000000 --- a/app/src/main/res/drawable/bg_orange_line_4dp.xml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<shape xmlns:android="http://schemas.android.com/apk/res/android"> - <corners android:radius="4dp"/> - <stroke android:color="#44FD7902" android:width="1dp"/> -</shape> \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_orange_line_4dp_manage.xml b/app/src/main/res/drawable/bg_orange_line_4dp_manage.xml deleted file mode 100644 index 12c688e..0000000 --- a/app/src/main/res/drawable/bg_orange_line_4dp_manage.xml +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<shape xmlns:android="http://schemas.android.com/apk/res/android"> - <solid android:color="#1AFFE7CC"/> - <corners android:radius="4dp"/> - <stroke android:color="#44FD7902" android:width="1dp"/> -</shape> \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_pink_16dp.xml b/app/src/main/res/drawable/bg_pink_16dp.xml deleted file mode 100644 index 318ae4e..0000000 --- a/app/src/main/res/drawable/bg_pink_16dp.xml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<shape xmlns:android="http://schemas.android.com/apk/res/android"> - <corners android:radius="16dp"/> - <solid android:color="@color/colorPink"/> -</shape> \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_pink_2dp.xml b/app/src/main/res/drawable/bg_pink_2dp.xml deleted file mode 100644 index c511562..0000000 --- a/app/src/main/res/drawable/bg_pink_2dp.xml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<shape xmlns:android="http://schemas.android.com/apk/res/android"> - <corners android:radius="2dp"/> - <solid android:color="@color/colorPink"/> -</shape> \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_pink_left_12dp.xml b/app/src/main/res/drawable/bg_pink_left_12dp.xml deleted file mode 100644 index 2f02cea..0000000 --- a/app/src/main/res/drawable/bg_pink_left_12dp.xml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<shape xmlns:android="http://schemas.android.com/apk/res/android"> - <corners android:topLeftRadius="12dp" android:bottomLeftRadius="12dp"/> - <solid android:color="@color/colorPink"/> -</shape> \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_recharge_checked.xml b/app/src/main/res/drawable/bg_recharge_checked.xml deleted file mode 100644 index d3f8803..0000000 --- a/app/src/main/res/drawable/bg_recharge_checked.xml +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<shape xmlns:android="http://schemas.android.com/apk/res/android"> - <solid android:color="#1AFD7502"/> - <corners android:radius="4dp"/> - <stroke android:color="@color/colorPrimary" android:width="1dp"/> -</shape> \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_recharge_uncheck.xml b/app/src/main/res/drawable/bg_recharge_uncheck.xml deleted file mode 100644 index 0f06e33..0000000 --- a/app/src/main/res/drawable/bg_recharge_uncheck.xml +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<shape xmlns:android="http://schemas.android.com/apk/res/android"> - <solid android:color="#1AA6A6A6"/> - <corners android:radius="4dp"/> - <stroke android:color="#B0B0B0" android:width="1dp"/> -</shape> \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_red_12dp.xml b/app/src/main/res/drawable/bg_red_12dp.xml deleted file mode 100644 index e1008bf..0000000 --- a/app/src/main/res/drawable/bg_red_12dp.xml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<shape xmlns:android="http://schemas.android.com/apk/res/android"> - <corners android:radius="12dp"/> - <solid android:color="@color/colorRed"/> -</shape> \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_red_15dp.xml b/app/src/main/res/drawable/bg_red_15dp.xml deleted file mode 100644 index a3e60cb..0000000 --- a/app/src/main/res/drawable/bg_red_15dp.xml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<shape xmlns:android="http://schemas.android.com/apk/res/android"> - <solid android:color="@color/colorAccent"/> - <corners android:radius="15dp"/> -</shape> \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_red_2dp.xml b/app/src/main/res/drawable/bg_red_2dp.xml deleted file mode 100644 index dbed89e..0000000 --- a/app/src/main/res/drawable/bg_red_2dp.xml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<shape xmlns:android="http://schemas.android.com/apk/res/android"> - <solid android:color="@color/colorAccent"/> - <corners android:radius="2dp"/> -</shape> \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_red_4dp.xml b/app/src/main/res/drawable/bg_red_4dp.xml deleted file mode 100644 index 504b8d9..0000000 --- a/app/src/main/res/drawable/bg_red_4dp.xml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<shape xmlns:android="http://schemas.android.com/apk/res/android"> - <corners android:radius="4dp"/> - <solid android:color="#F4420A"/> -</shape> \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_red_line_15dp.xml b/app/src/main/res/drawable/bg_red_line_15dp.xml deleted file mode 100644 index d851c1e..0000000 --- a/app/src/main/res/drawable/bg_red_line_15dp.xml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<shape xmlns:android="http://schemas.android.com/apk/res/android"> - <corners android:radius="15dp"/> - <stroke android:color="@color/colorAccent" android:width="1dp"/> -</shape> \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_red_line_2dp.xml b/app/src/main/res/drawable/bg_red_line_2dp.xml deleted file mode 100644 index 02fc061..0000000 --- a/app/src/main/res/drawable/bg_red_line_2dp.xml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<shape xmlns:android="http://schemas.android.com/apk/res/android"> - <corners android:radius="2dp"/> - <stroke android:color="@color/colorRed" android:width="1dp"/> -</shape> \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_red_line_4dp.xml b/app/src/main/res/drawable/bg_red_line_4dp.xml deleted file mode 100644 index 475e39f..0000000 --- a/app/src/main/res/drawable/bg_red_line_4dp.xml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<shape xmlns:android="http://schemas.android.com/apk/res/android"> - <corners android:radius="4dp"/> - <stroke android:color="@color/colorAccent" android:width="1dp"/> -</shape> \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_red_line_6dp.xml b/app/src/main/res/drawable/bg_red_line_6dp.xml deleted file mode 100644 index 41c38a3..0000000 --- a/app/src/main/res/drawable/bg_red_line_6dp.xml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<shape xmlns:android="http://schemas.android.com/apk/res/android"> - <corners android:radius="6dp"/> - <stroke android:color="@color/colorAccent" android:width="1dp"/> -</shape> \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_schedule_16dp.xml b/app/src/main/res/drawable/bg_schedule_16dp.xml deleted file mode 100644 index 7d0569e..0000000 --- a/app/src/main/res/drawable/bg_schedule_16dp.xml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<shape xmlns:android="http://schemas.android.com/apk/res/android"> - <corners android:radius="16dp"/> - <solid android:color="#F2F6F9"/> -</shape> \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_shop_4dp.xml b/app/src/main/res/drawable/bg_shop_4dp.xml deleted file mode 100644 index 5de179f..0000000 --- a/app/src/main/res/drawable/bg_shop_4dp.xml +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<shape xmlns:android="http://schemas.android.com/apk/res/android"> - <stroke android:color="@color/colorPrimary" android:width="1dp"/> - <corners android:radius="4dp"/> - <solid android:color="#FEEEE0"/> -</shape> \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_shop_evaluate.xml b/app/src/main/res/drawable/bg_shop_evaluate.xml deleted file mode 100644 index 390b60c..0000000 --- a/app/src/main/res/drawable/bg_shop_evaluate.xml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<shape xmlns:android="http://schemas.android.com/apk/res/android"> - <corners android:radius="4dp"/> - <stroke android:color="@color/colorPrimary" android:width="1dp"/> -</shape> \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_tag.xml b/app/src/main/res/drawable/bg_tag.xml deleted file mode 100644 index 454d659..0000000 --- a/app/src/main/res/drawable/bg_tag.xml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<shape xmlns:android="http://schemas.android.com/apk/res/android"> - <solid android:color="#FEE0C4"/> - <corners android:radius="1dp"/> -</shape> \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_tag_10dp.xml b/app/src/main/res/drawable/bg_tag_10dp.xml deleted file mode 100644 index 7a2c863..0000000 --- a/app/src/main/res/drawable/bg_tag_10dp.xml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<shape xmlns:android="http://schemas.android.com/apk/res/android"> - <solid android:color="#FEE0C4"/> - <corners android:radius="10dp"/> -</shape> \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_tag_grey.xml b/app/src/main/res/drawable/bg_tag_grey.xml deleted file mode 100644 index a7a3f94..0000000 --- a/app/src/main/res/drawable/bg_tag_grey.xml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<shape xmlns:android="http://schemas.android.com/apk/res/android"> - <corners android:radius="10dp"/> - <solid android:color="#A1B4C2"/> -</shape> \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_un_pay.xml b/app/src/main/res/drawable/bg_un_pay.xml deleted file mode 100644 index 94705db..0000000 --- a/app/src/main/res/drawable/bg_un_pay.xml +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<shape xmlns:android="http://schemas.android.com/apk/res/android"> - - <solid android:color="@color/color_text_price"/> - <corners android:topLeftRadius="9dp" android:bottomRightRadius="9dp"/> -</shape> \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_white_top_40dp.xml b/app/src/main/res/drawable/bg_white_top_40dp.xml deleted file mode 100644 index fd6f73c..0000000 --- a/app/src/main/res/drawable/bg_white_top_40dp.xml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<shape xmlns:android="http://schemas.android.com/apk/res/android"> - <corners android:topRightRadius="40dp" android:topLeftRadius="40dp"/> - <solid android:color="@color/white"/> -</shape> \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_yellow_12dp.xml b/app/src/main/res/drawable/bg_yellow_12dp.xml deleted file mode 100644 index c053e38..0000000 --- a/app/src/main/res/drawable/bg_yellow_12dp.xml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<shape xmlns:android="http://schemas.android.com/apk/res/android"> - <corners android:radius="12dp"/> - <solid android:color="#FA923C"/> -</shape> \ No newline at end of file diff --git a/app/src/main/res/drawable/black_dot.xml b/app/src/main/res/drawable/black_dot.xml deleted file mode 100644 index cdbd251..0000000 --- a/app/src/main/res/drawable/black_dot.xml +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<shape xmlns:android="http://schemas.android.com/apk/res/android"> - <solid android:color="@color/black"/> - <corners android:radius="5dp"/> - <size android:width="7dp" android:height="7dp"/> -</shape> \ No newline at end of file diff --git a/app/src/main/res/drawable/com_form_bg.xml b/app/src/main/res/drawable/com_form_bg.xml deleted file mode 100644 index 6adaa8c..0000000 --- a/app/src/main/res/drawable/com_form_bg.xml +++ /dev/null @@ -1,9 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<item xmlns:tools="http://schemas.android.com/tools" - xmlns:android="http://schemas.android.com/apk/res/android"> - <shape android:shape="rectangle"> - <solid android:color="#ffffffff" /> - <item android:name="android:shadowColor" - tools:ignore="ExtraText">>#80d4d4d4</item> - </shape> -</item> \ No newline at end of file diff --git a/app/src/main/res/drawable/coupon_checked.png b/app/src/main/res/drawable/coupon_checked.png deleted file mode 100644 index 06d2ed4..0000000 --- a/app/src/main/res/drawable/coupon_checked.png +++ /dev/null Binary files differ diff --git a/app/src/main/res/drawable/coupon_checked_d.xml b/app/src/main/res/drawable/coupon_checked_d.xml deleted file mode 100644 index 649d57d..0000000 --- a/app/src/main/res/drawable/coupon_checked_d.xml +++ /dev/null @@ -1,8 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<layer-list xmlns:tools="http://schemas.android.com/tools" - xmlns:android="http://schemas.android.com/apk/res/android"> - <item android:drawable="@drawable/coupon_checked" - android:width="20dp" - android:height="20dp" - tools:ignore="UnusedAttribute" /> -</layer-list> \ No newline at end of file diff --git a/app/src/main/res/drawable/coupon_uncheck.png b/app/src/main/res/drawable/coupon_uncheck.png deleted file mode 100644 index 249fcda..0000000 --- a/app/src/main/res/drawable/coupon_uncheck.png +++ /dev/null Binary files differ diff --git a/app/src/main/res/drawable/coupon_unchecked_d.xml b/app/src/main/res/drawable/coupon_unchecked_d.xml deleted file mode 100644 index e366602..0000000 --- a/app/src/main/res/drawable/coupon_unchecked_d.xml +++ /dev/null @@ -1,8 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<layer-list xmlns:tools="http://schemas.android.com/tools" - xmlns:android="http://schemas.android.com/apk/res/android"> - <item android:drawable="@drawable/coupon_uncheck" - android:width="20dp" - android:height="20dp" - tools:ignore="UnusedAttribute" /> -</layer-list> \ No newline at end of file diff --git a/app/src/main/res/drawable/dark_dot.xml b/app/src/main/res/drawable/dark_dot.xml deleted file mode 100644 index 19220ea..0000000 --- a/app/src/main/res/drawable/dark_dot.xml +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<shape xmlns:android="http://schemas.android.com/apk/res/android"> - <solid android:color="@color/colorTextDark"/> - <corners android:radius="5dp"/> - <size android:width="6dp" android:height="6dp"/> -</shape> \ No newline at end of file diff --git a/app/src/main/res/drawable/gradient_dot.xml b/app/src/main/res/drawable/gradient_dot.xml deleted file mode 100644 index c34dd59..0000000 --- a/app/src/main/res/drawable/gradient_dot.xml +++ /dev/null @@ -1,7 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<shape xmlns:android="http://schemas.android.com/apk/res/android"> - <corners android:radius="9dp"/> - <size android:height="18dp" android:width="18dp"/> - <gradient android:startColor="#EF753C" android:endColor="@color/colorAccent" - android:angle="180"/> -</shape> \ No newline at end of file diff --git a/app/src/main/res/drawable/grey_line_dot.xml b/app/src/main/res/drawable/grey_line_dot.xml deleted file mode 100644 index a54cf7f..0000000 --- a/app/src/main/res/drawable/grey_line_dot.xml +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<shape xmlns:android="http://schemas.android.com/apk/res/android"> - <corners android:radius="9dp"/> - <size android:height="18dp" android:width="18dp"/> - <stroke android:color="@color/dividing_line_color" android:width="1dp"/> -</shape> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_green.xml b/app/src/main/res/drawable/ic_green.xml deleted file mode 100644 index b5343ad..0000000 --- a/app/src/main/res/drawable/ic_green.xml +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<shape xmlns:android="http://schemas.android.com/apk/res/android"> - <corners android:radius="2dp"/> - <solid android:color="#CBDCC5"/> - <size android:width="20dp" android:height="20dp"/> -</shape> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_keyboard.xml b/app/src/main/res/drawable/ic_keyboard.xml deleted file mode 100644 index bdc865f..0000000 --- a/app/src/main/res/drawable/ic_keyboard.xml +++ /dev/null @@ -1,9 +0,0 @@ -<vector xmlns:android="http://schemas.android.com/apk/res/android" - android:width="24dp" - android:height="24dp" - android:viewportHeight="24.0" - android:viewportWidth="24.0"> - <path - android:fillColor="#FF000000" - android:pathData="M20,5L4,5c-1.1,0 -1.99,0.9 -1.99,2L2,17c0,1.1 0.9,2 2,2h16c1.1,0 2,-0.9 2,-2L22,7c0,-1.1 -0.9,-2 -2,-2zM11,8h2v2h-2L11,8zM11,11h2v2h-2v-2zM8,8h2v2L8,10L8,8zM8,11h2v2L8,13v-2zM7,13L5,13v-2h2v2zM7,10L5,10L5,8h2v2zM16,17L8,17v-2h8v2zM16,13h-2v-2h2v2zM16,10h-2L14,8h2v2zM19,13h-2v-2h2v2zM19,10h-2L17,8h2v2z" /> -</vector> diff --git a/app/src/main/res/drawable/ic_launcher_background.xml b/app/src/main/res/drawable/ic_launcher_background.xml deleted file mode 100644 index 07d5da9..0000000 --- a/app/src/main/res/drawable/ic_launcher_background.xml +++ /dev/null @@ -1,170 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<vector xmlns:android="http://schemas.android.com/apk/res/android" - android:width="108dp" - android:height="108dp" - android:viewportWidth="108" - android:viewportHeight="108"> - <path - android:fillColor="#3DDC84" - android:pathData="M0,0h108v108h-108z" /> - <path - android:fillColor="#00000000" - android:pathData="M9,0L9,108" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M19,0L19,108" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M29,0L29,108" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M39,0L39,108" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M49,0L49,108" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M59,0L59,108" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M69,0L69,108" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M79,0L79,108" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M89,0L89,108" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M99,0L99,108" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M0,9L108,9" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M0,19L108,19" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M0,29L108,29" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M0,39L108,39" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M0,49L108,49" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M0,59L108,59" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M0,69L108,69" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M0,79L108,79" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M0,89L108,89" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M0,99L108,99" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M19,29L89,29" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M19,39L89,39" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M19,49L89,49" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M19,59L89,59" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M19,69L89,69" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M19,79L89,79" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M29,19L29,89" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M39,19L39,89" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M49,19L49,89" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M59,19L59,89" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M69,19L69,89" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M79,19L79,89" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> -</vector> diff --git a/app/src/main/res/drawable/ic_pink.xml b/app/src/main/res/drawable/ic_pink.xml deleted file mode 100644 index 46a49f6..0000000 --- a/app/src/main/res/drawable/ic_pink.xml +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<shape xmlns:android="http://schemas.android.com/apk/res/android"> - <corners android:radius="2dp"/> - <solid android:color="#FCD8D8"/> - <size android:width="20dp" android:height="20dp"/> -</shape> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_white.xml b/app/src/main/res/drawable/ic_white.xml deleted file mode 100644 index 3fea678..0000000 --- a/app/src/main/res/drawable/ic_white.xml +++ /dev/null @@ -1,7 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<shape xmlns:android="http://schemas.android.com/apk/res/android"> - <corners android:radius="2dp"/> - <solid android:color="@color/white"/> - <size android:width="20dp" android:height="20dp"/> - <stroke android:width="1dp" android:color="@color/dividing_line_color"/> -</shape> \ No newline at end of file diff --git a/app/src/main/res/drawable/orange_dot.xml b/app/src/main/res/drawable/orange_dot.xml deleted file mode 100644 index 930006e..0000000 --- a/app/src/main/res/drawable/orange_dot.xml +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<shape xmlns:android="http://schemas.android.com/apk/res/android"> - <corners android:radius="5dp"/> - <solid android:color="@color/colorPrimary"/> - <size android:height="4dp" android:width="4dp"/> -</shape> \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_bg_btn_0dp.xml b/app/src/main/res/drawable/selector_bg_btn_0dp.xml deleted file mode 100644 index 18c68bb..0000000 --- a/app/src/main/res/drawable/selector_bg_btn_0dp.xml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<selector xmlns:android="http://schemas.android.com/apk/res/android"> - <item android:state_enabled="true" android:drawable="@drawable/bg_gradient"/> - <item android:state_enabled="false" android:drawable="@drawable/bg_btn_disable_0dp"/> -</selector> \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_bg_cb_analysis.xml b/app/src/main/res/drawable/selector_bg_cb_analysis.xml deleted file mode 100644 index 029ac08..0000000 --- a/app/src/main/res/drawable/selector_bg_cb_analysis.xml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<selector xmlns:android="http://schemas.android.com/apk/res/android"> - <item android:state_checked="true" android:drawable="@drawable/bg_red_15dp"/> - <item android:state_checked="false" android:drawable="@drawable/bg_grey_line_15dp"/> -</selector> \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_bg_et_focus.xml b/app/src/main/res/drawable/selector_bg_et_focus.xml deleted file mode 100644 index 8069314..0000000 --- a/app/src/main/res/drawable/selector_bg_et_focus.xml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<selector xmlns:android="http://schemas.android.com/apk/res/android"> - <item android:drawable="@drawable/bg_grey_line_4dp" android:state_focused="false"/> - <item android:drawable="@drawable/bg_red_line_4dp" android:state_focused="true"/> -</selector> \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_bg_filter.xml b/app/src/main/res/drawable/selector_bg_filter.xml deleted file mode 100644 index 3fae314..0000000 --- a/app/src/main/res/drawable/selector_bg_filter.xml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<selector xmlns:android="http://schemas.android.com/apk/res/android"> - <item android:state_checked="true" android:drawable="@drawable/bg_pink_16dp"/> - <item android:state_checked="false" android:drawable="@drawable/bg_grey_16dp"/> -</selector> \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_bg_match_state.xml b/app/src/main/res/drawable/selector_bg_match_state.xml deleted file mode 100644 index 2ffc4b6..0000000 --- a/app/src/main/res/drawable/selector_bg_match_state.xml +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<selector xmlns:android="http://schemas.android.com/apk/res/android"> - <item android:state_enabled="true"> - <shape> - <solid android:color="@color/colorPrimary"/> - <corners android:topLeftRadius="20dp" android:bottomRightRadius="20dp"/> - </shape> - </item> - <item android:state_enabled="false"> - <shape> - <solid android:color="@color/colorBGDisable"/> - <corners android:topLeftRadius="20dp" android:bottomRightRadius="20dp"/> - </shape> - </item> -</selector> \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_bg_option.xml b/app/src/main/res/drawable/selector_bg_option.xml deleted file mode 100644 index ef4cb4b..0000000 --- a/app/src/main/res/drawable/selector_bg_option.xml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<selector xmlns:android="http://schemas.android.com/apk/res/android"> - <item android:state_checked="true" android:drawable="@drawable/bg_gradient_18dp"/> - <item android:state_checked="false" android:drawable="@drawable/bg_red_line_15dp"/> -</selector> \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_bg_red_grey_line_6dp.xml b/app/src/main/res/drawable/selector_bg_red_grey_line_6dp.xml deleted file mode 100644 index 66c6b3a..0000000 --- a/app/src/main/res/drawable/selector_bg_red_grey_line_6dp.xml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<selector xmlns:android="http://schemas.android.com/apk/res/android"> - <item android:drawable="@drawable/bg_red_line_6dp" android:state_checked="true"/> - <item android:drawable="@drawable/bg_grey_line_6dp" android:state_checked="false"/> -</selector> \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_bg_state.xml b/app/src/main/res/drawable/selector_bg_state.xml deleted file mode 100644 index 7900feb..0000000 --- a/app/src/main/res/drawable/selector_bg_state.xml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<selector xmlns:android="http://schemas.android.com/apk/res/android"> - <item android:state_checked="false" android:drawable="@drawable/bg_grey_line_15dp"/> - <item android:state_checked="true" android:drawable="@drawable/bg_red_line_15dp"/> -</selector> \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_bg_week.xml b/app/src/main/res/drawable/selector_bg_week.xml deleted file mode 100644 index 8026655..0000000 --- a/app/src/main/res/drawable/selector_bg_week.xml +++ /dev/null @@ -1,11 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<selector xmlns:android="http://schemas.android.com/apk/res/android"> - <item android:state_selected="true" android:drawable="@drawable/bg_orange_20dp"/> - <item android:state_selected="false"> - <shape> - <corners android:radius="20dp"/> - <solid android:color="#DCDDDE"/> - </shape> - </item> - -</selector> \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_check_pay.xml b/app/src/main/res/drawable/selector_check_pay.xml deleted file mode 100644 index 8d0fa13..0000000 --- a/app/src/main/res/drawable/selector_check_pay.xml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<selector xmlns:android="http://schemas.android.com/apk/res/android"> - <item android:state_checked="true" android:drawable="@mipmap/icon_selected"/> - <item android:state_checked="false" android:drawable="@mipmap/icon_radiobutton"/> -</selector> \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_choose_btn.xml b/app/src/main/res/drawable/selector_choose_btn.xml deleted file mode 100644 index b3920c6..0000000 --- a/app/src/main/res/drawable/selector_choose_btn.xml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<selector xmlns:android="http://schemas.android.com/apk/res/android"> - <item android:state_activated="true" android:drawable="@drawable/coupon_checked_d"/> - <item android:state_activated="false" android:drawable="@drawable/coupon_unchecked_d"/> -</selector> \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_enable_2dp.xml b/app/src/main/res/drawable/selector_enable_2dp.xml deleted file mode 100644 index 7c3839a..0000000 --- a/app/src/main/res/drawable/selector_enable_2dp.xml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<selector xmlns:android="http://schemas.android.com/apk/res/android"> - <item android:drawable="@drawable/bg_gradient_2dp" android:state_enabled="true"/> - <item android:drawable="@drawable/bg_red_line_2dp" android:state_enabled="false"/> -</selector> \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_filter_check.xml b/app/src/main/res/drawable/selector_filter_check.xml deleted file mode 100644 index 76c0ba0..0000000 --- a/app/src/main/res/drawable/selector_filter_check.xml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<selector xmlns:android="http://schemas.android.com/apk/res/android"> - <item android:state_checked="true" android:drawable="@mipmap/filter_open"/> - <item android:state_checked="false" android:drawable="@mipmap/filter_close"/> -</selector> \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_filter_icon.xml b/app/src/main/res/drawable/selector_filter_icon.xml deleted file mode 100644 index cad6921..0000000 --- a/app/src/main/res/drawable/selector_filter_icon.xml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<selector xmlns:android="http://schemas.android.com/apk/res/android"> - <item android:drawable="@mipmap/icon_nav_open" android:state_checked="false"/> - <item android:drawable="@mipmap/icon_nav_close" android:state_checked="true"/> -</selector> \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_lesson_bg.xml b/app/src/main/res/drawable/selector_lesson_bg.xml deleted file mode 100644 index a723360..0000000 --- a/app/src/main/res/drawable/selector_lesson_bg.xml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<selector xmlns:android="http://schemas.android.com/apk/res/android"> - <item android:state_selected="true" android:drawable="@drawable/bg_orange_4dp"/> - <item android:state_selected="false" android:drawable="@drawable/bg_grey_line_4dp"/> -</selector> \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_open.xml b/app/src/main/res/drawable/selector_open.xml deleted file mode 100644 index b60d962..0000000 --- a/app/src/main/res/drawable/selector_open.xml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<selector xmlns:android="http://schemas.android.com/apk/res/android"> - <item android:state_selected="true" android:drawable="@mipmap/tr_open"/> - <item android:state_selected="false" android:drawable="@mipmap/tr_close"/> -</selector> \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_pwd_visible.xml b/app/src/main/res/drawable/selector_pwd_visible.xml deleted file mode 100644 index 60a5a6b..0000000 --- a/app/src/main/res/drawable/selector_pwd_visible.xml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<selector xmlns:android="http://schemas.android.com/apk/res/android"> - <item android:drawable="@mipmap/icon_eye_close" android:state_checked="false"/> - <item android:drawable="@mipmap/icon_eye" android:state_checked="true"/> -</selector> \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_rank_region.xml b/app/src/main/res/drawable/selector_rank_region.xml deleted file mode 100644 index 444b037..0000000 --- a/app/src/main/res/drawable/selector_rank_region.xml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<selector xmlns:android="http://schemas.android.com/apk/res/android"> - <item android:state_selected="true" android:drawable="@drawable/bg_orange_20dp"/> - <item android:state_selected="false" android:drawable="@drawable/bg_white_orange_line_20dp"/> -</selector> \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_select_pay.xml b/app/src/main/res/drawable/selector_select_pay.xml deleted file mode 100644 index d5c2430..0000000 --- a/app/src/main/res/drawable/selector_select_pay.xml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<selector xmlns:android="http://schemas.android.com/apk/res/android"> - <item android:state_selected="true" android:drawable="@mipmap/icon_selected"/> - <item android:state_selected="false" android:drawable="@mipmap/icon_radiobutton_grey"/> -</selector> \ No newline at end of file diff --git a/app/src/main/res/drawable/shap_tag.xml b/app/src/main/res/drawable/shap_tag.xml deleted file mode 100644 index f3a1e21..0000000 --- a/app/src/main/res/drawable/shap_tag.xml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<shape xmlns:android="http://schemas.android.com/apk/res/android"> -<corners android:radius="4dp"/> - <solid android:color="@color/colorPrimary"/> -</shape> \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_com.xml b/app/src/main/res/drawable/shape_com.xml deleted file mode 100644 index 25d393e..0000000 --- a/app/src/main/res/drawable/shape_com.xml +++ /dev/null @@ -1,4 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<shape xmlns:android="http://schemas.android.com/apk/res/android"> -<stroke android:width="1dp" android:color="@color/colorPrimary"/> -</shape> \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_com_whit_15r.xml b/app/src/main/res/drawable/shape_com_whit_15r.xml deleted file mode 100644 index 00bcb7c..0000000 --- a/app/src/main/res/drawable/shape_com_whit_15r.xml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<shape xmlns:android="http://schemas.android.com/apk/res/android"> -<corners android:radius="15.5dp"/> - <stroke android:width="1dp" android:color="@color/white"/> -</shape> \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_or_20r.xml b/app/src/main/res/drawable/shape_or_20r.xml deleted file mode 100644 index 13e68b5..0000000 --- a/app/src/main/res/drawable/shape_or_20r.xml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<shape xmlns:android="http://schemas.android.com/apk/res/android"> - <corners android:radius="20dp"/> - <solid android:color="@color/colorPrimary"/> -</shape> \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_red_20r.xml b/app/src/main/res/drawable/shape_red_20r.xml deleted file mode 100644 index 9bfe6fd..0000000 --- a/app/src/main/res/drawable/shape_red_20r.xml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<shape xmlns:android="http://schemas.android.com/apk/res/android"> -<corners android:radius="20dp"/> - <solid android:color="#F44444"/> -</shape> \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_tag_bg.xml b/app/src/main/res/drawable/shape_tag_bg.xml deleted file mode 100644 index 82b5604..0000000 --- a/app/src/main/res/drawable/shape_tag_bg.xml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<shape xmlns:android="http://schemas.android.com/apk/res/android"> - <corners android:radius="9.5dp"/> - <solid android:color="#28FD8902"/> -</shape> \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_white_top_20r.xml b/app/src/main/res/drawable/shape_white_top_20r.xml deleted file mode 100644 index 6dae3cb..0000000 --- a/app/src/main/res/drawable/shape_white_top_20r.xml +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<shape xmlns:android="http://schemas.android.com/apk/res/android"> - <corners android:topRightRadius="20dp" - android:topLeftRadius="20dp"/> - <solid android:color="@color/white"/> -</shape> \ No newline at end of file diff --git a/app/src/main/res/drawable/white_dot.xml b/app/src/main/res/drawable/white_dot.xml deleted file mode 100644 index d242a0d..0000000 --- a/app/src/main/res/drawable/white_dot.xml +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<shape xmlns:android="http://schemas.android.com/apk/res/android"> - <solid android:color="@color/white"/> - <corners android:radius="4dp"/> - <size android:width="6dp" android:height="6dp"/> -</shape> \ No newline at end of file diff --git a/app/src/main/res/layout/activity_do_offline.xml b/app/src/main/res/layout/activity_do_offline.xml deleted file mode 100644 index b450983..0000000 --- a/app/src/main/res/layout/activity_do_offline.xml +++ /dev/null @@ -1,52 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="match_parent" - xmlns:app="http://schemas.android.com/apk/res-auto"> - <TextView - android:layout_width="match_parent" - android:layout_height="wrap_content" - app:layout_constraintBottom_toBottomOf="parent" - style="@style/style_btn_action" - android:text="提交试卷" - android:id="@+id/tv_action"/> - <View - android:layout_width="3dp" - android:layout_height="16dp" - android:layout_marginEnd="8dp" - android:background="@drawable/bg_red_2dp" - app:layout_constraintBottom_toBottomOf="@id/tv_title" - app:layout_constraintEnd_toStartOf="@id/tv_title" - app:layout_constraintTop_toTopOf="@id/tv_title" /> - - <TextView - android:id="@+id/tv_title" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginStart="26dp" - android:layout_marginTop="15dp" - android:textColor="@color/textColor" - android:textSize="17sp" - android:textStyle="bold" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent" /> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_hint" - app:layout_constraintTop_toBottomOf="@id/tv_title" - app:layout_constraintStart_toStartOf="parent" - android:text="(请您答题后将试卷拍照上传)" - android:textSize="12sp" - android:layout_marginStart="8dp" - android:layout_marginTop="3dp" - android:textColor="@color/textColor66"/> - - <androidx.recyclerview.widget.RecyclerView - android:layout_width="match_parent" - android:layout_height="0dp" - android:id="@+id/lv_answer" - app:layout_constraintTop_toBottomOf="@id/tv_hint" - android:layout_marginTop="10dp" - app:layout_constraintBottom_toTopOf="@id/tv_action" /> -</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/activity_exchange_detail.xml b/app/src/main/res/layout/activity_exchange_detail.xml deleted file mode 100644 index e21006a..0000000 --- a/app/src/main/res/layout/activity_exchange_detail.xml +++ /dev/null @@ -1,314 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="match_parent" - xmlns:app="http://schemas.android.com/apk/res-auto" - xmlns:tools="http://schemas.android.com/tools"> - <androidx.constraintlayout.widget.ConstraintLayout - android:layout_width="match_parent" - android:layout_height="wrap_content" - tools:ignore="WebViewLayout"> - <com.youth.banner.Banner - android:id="@+id/banner" - android:layout_width="match_parent" - app:layout_constraintTop_toTopOf="parent" - app:indicator_height="7dp" - android:layout_height="220dp" - app:indicator_radius="4dp" - app:indicator_normal_color="@color/disableColor" - app:indicator_gravity="center" - app:indicator_marginBottom="10dp" - app:indicator_selected_color="@color/white" - app:is_infinite_loop="true" - app:is_auto_loop="true"/> - <TextView - android:layout_width="0dp" - android:layout_height="wrap_content" - android:id="@+id/tv_name" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintEnd_toStartOf="@id/tv_price" - app:layout_constraintTop_toBottomOf="@id/banner" - android:layout_margin="14dp" - android:textSize="18sp" - android:textColor="@color/textColor" - android:textStyle="bold"/> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_price" - app:layout_constraintEnd_toEndOf="parent" - android:textStyle="bold" - android:textSize="13sp" - android:textColor="@color/color_text_price" - android:layout_marginEnd="14dp" - app:layout_constraintBaseline_toBaselineOf="@id/tv_name" - android:text="0积分"/> - - <View - android:id="@+id/line1" - android:layout_width="match_parent" - android:layout_height="1px" - app:layout_constraintTop_toBottomOf="@id/tv_name" - android:layout_marginTop="14dp" - android:background="@color/dividing_line_color" - android:layout_marginStart="14dp"/> - <LinearLayout - android:id="@+id/rl_classhour" - android:visibility="gone" - android:layout_marginTop="10dp" - tools:visibility="visible" - android:orientation="vertical" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - app:layout_constraintLeft_toLeftOf="@+id/line1" - app:layout_constraintTop_toBottomOf="@+id/line1"> - - <TextView - android:drawableStart="@drawable/orange_dot" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="包含课时数:" - android:drawablePadding="6dp" - android:textColor="@color/black" - android:alpha="0.5" - android:textSize="12sp" - android:textStyle="bold" /> - - <TextView - android:id="@+id/mtvClassHour" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - tools:text="2课时" - android:layout_marginTop="5dp" - android:layout_marginStart="14dp" - android:textColor="@color/textColor" - android:textSize="12sp" - /> - - - </LinearLayout> - - <LinearLayout - android:id="@+id/rl_type" - android:visibility="gone" - tools:visibility="visible" - android:orientation="vertical" - android:layout_marginTop="10dp" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - app:layout_constraintLeft_toLeftOf="@+id/line1" - app:layout_constraintTop_toBottomOf="@+id/rl_classhour"> - - <TextView - android:drawableStart="@drawable/orange_dot" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="门票类型:" - android:drawablePadding="6dp" - android:textColor="@color/black" - android:alpha="0.5" - android:textSize="12sp" - android:textStyle="bold" /> - - <TextView - android:id="@+id/mtvFeeType" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - tools:text="年卡" - android:layout_marginTop="5dp" - android:layout_marginStart="14dp" - android:textColor="@color/textColor" - android:textSize="12sp" - /> - - - </LinearLayout> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_1" - android:text="有效期" - app:layout_constraintStart_toStartOf="@id/tv_name" - app:layout_constraintTop_toBottomOf="@id/rl_type" - android:textStyle="bold" - android:drawablePadding="6dp" - android:drawableStart="@drawable/orange_dot" - android:textColor="@color/black" - android:alpha="0.5" - android:textSize="12sp"/> - - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_deadline" - app:layout_constraintTop_toBottomOf="@id/tv_1" - app:layout_constraintStart_toStartOf="parent" - android:layout_marginStart="24dp" - android:layout_marginTop="8dp" - tools:text="2023-03-15 09:00" - android:textColor="@color/textColor" - android:textSize="12sp" - android:textStyle="bold"/> - - - - - - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_2" - android:text="下单时间" - app:layout_constraintStart_toStartOf="@id/tv_name" - app:layout_constraintTop_toBottomOf="@id/tv_deadline" - android:layout_marginTop="14dp" - android:textStyle="bold" - android:drawablePadding="6dp" - android:drawableStart="@drawable/orange_dot" - android:textColor="@color/black" - android:alpha="0.5" - android:textSize="12sp"/> - - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_order_time" - app:layout_constraintTop_toBottomOf="@id/tv_2" - app:layout_constraintStart_toStartOf="parent" - android:layout_marginStart="24dp" - android:layout_marginTop="8dp" - tools:text="2023-03-15 09:00" - android:textColor="@color/textColor" - android:textSize="12sp" - android:textStyle="bold"/> - <ImageView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/iv_used" - android:visibility="gone" - android:src="@mipmap/iv_used" - app:layout_constraintTop_toTopOf="@id/tv_1" - app:layout_constraintEnd_toEndOf="parent" - android:layout_marginEnd="14dp"/> - <LinearLayout - android:visibility="gone" - app:layout_constraintTop_toBottomOf="@id/tv_order_time" - android:id="@+id/ll_used" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:orientation="vertical"> - - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="核销时间" - android:layout_marginTop="14dp" - android:textStyle="bold" - android:drawablePadding="6dp" - android:drawableStart="@drawable/orange_dot" - android:textColor="@color/black" - android:layout_marginStart="14dp" - android:alpha="0.5" - android:textSize="12sp"/> - - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_use_time" - android:layout_marginStart="24dp" - android:layout_marginTop="8dp" - tools:text="2023-03-15 09:00" - android:textColor="@color/textColor" - android:textSize="12sp" - android:textStyle="bold"/> - - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="核销门店" - android:layout_marginTop="14dp" - android:textStyle="bold" - android:layout_marginStart="14dp" - android:drawablePadding="6dp" - android:drawableStart="@drawable/orange_dot" - android:textColor="@color/black" - android:alpha="0.5" - android:textSize="12sp"/> - - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_use_shop" - app:layout_constraintTop_toBottomOf="@id/tv_2" - app:layout_constraintStart_toStartOf="parent" - android:layout_marginStart="24dp" - android:layout_marginTop="8dp" - tools:text="2023-03-15 09:00" - android:textColor="@color/textColor" - android:textSize="12sp" - android:textStyle="bold"/> - </LinearLayout> - <LinearLayout - app:layout_constraintTop_toBottomOf="@id/tv_order_time" - android:id="@+id/ll_target_shop" - android:visibility="gone" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:orientation="vertical"> - - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="指定门店可用" - android:layout_marginTop="14dp" - android:textStyle="bold" - android:drawablePadding="6dp" - android:drawableStart="@drawable/orange_dot" - android:textColor="@color/black" - android:layout_marginStart="14dp" - android:alpha="0.5" - android:textSize="12sp"/> - - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_shop" - android:layout_marginStart="24dp" - android:paddingTop="8dp" - android:text="查看详情" - android:textColor="@color/blue" - android:textSize="12sp" - android:textStyle="bold"/> - </LinearLayout> - <androidx.constraintlayout.widget.Barrier - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/barrier" - app:constraint_referenced_ids="ll_target_shop,ll_used" - app:barrierDirection="bottom"/> - <View - android:layout_width="match_parent" - android:layout_height="1px" - android:background="@color/dividing_line_color" - app:layout_constraintTop_toBottomOf="@id/barrier" - android:layout_margin="14dp"/> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_3" - app:layout_constraintTop_toBottomOf="@id/barrier" - app:layout_constraintStart_toStartOf="@id/tv_name" - android:text="兑换说明" - android:layout_marginTop="28dp" - android:textStyle="bold" - android:textColor="@color/textColor" - android:textSize="14sp"/> - <WebView - android:layout_width="match_parent" - android:layout_height="wrap_content" - app:layout_constraintTop_toBottomOf="@id/tv_3" - android:layout_marginTop="14dp" - android:id="@+id/webView"/> - </androidx.constraintlayout.widget.ConstraintLayout> - -</ScrollView> \ No newline at end of file diff --git a/app/src/main/res/layout/activity_join_world_cup.xml b/app/src/main/res/layout/activity_join_world_cup.xml deleted file mode 100644 index 5a291d7..0000000 --- a/app/src/main/res/layout/activity_join_world_cup.xml +++ /dev/null @@ -1,429 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="match_parent" - xmlns:app="http://schemas.android.com/apk/res-auto" - xmlns:tools="http://schemas.android.com/tools"> - <View - android:id="@+id/bg_title" - android:layout_width="match_parent" - android:layout_height="80dp" - app:layout_constraintTop_toTopOf="parent" - android:background="@mipmap/bg_wc_title"/> - <cn.sinata.xldutils.view.TitleBar - android:id="@+id/titleBar" - android:layout_width="match_parent" - android:layout_height="52dp" - app:layout_constraintBottom_toBottomOf="@id/bg_title"/> - <com.dollearn.student.views.ScrollInterceptScrollView - android:layout_width="match_parent" - android:layout_height="0dp" - app:layout_constraintTop_toBottomOf="@id/titleBar" - android:id="@+id/scrollView" - app:layout_constraintBottom_toTopOf="@id/cb_rule" - android:scrollbars="none"> - <androidx.constraintlayout.widget.ConstraintLayout - android:layout_width="match_parent" - android:layout_height="wrap_content"> - <com.youth.banner.Banner - android:id="@+id/banner" - android:layout_width="match_parent" - app:layout_constraintTop_toTopOf="parent" - app:indicator_height="0dp" - android:layout_height="220dp" - app:is_infinite_loop="true" - app:is_auto_loop="true"/> - <TextView - android:layout_width="0dp" - android:layout_height="wrap_content" - android:id="@+id/tv_name" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintEnd_toStartOf="@id/tv_hot" - app:layout_constraintTop_toBottomOf="@id/banner" - android:layout_margin="14dp" - android:textSize="18sp" - android:textColor="@color/textColor" - android:textStyle="bold"/> - <TextView - android:id="@+id/tv_hot" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginEnd="14dp" - android:textColor="@color/colorPrimary" - android:textSize="18sp" - android:textStyle="bold" - android:drawableStart="@mipmap/ic_heat" - android:drawablePadding="4dp" - android:gravity="center" - android:text="0" - app:layout_constraintBaseline_toBaselineOf="@id/tv_name" - app:layout_constraintEnd_toEndOf="parent" /> - <TextView - android:layout_width="0dp" - android:layout_height="wrap_content" - android:id="@+id/tv_address" - app:layout_constraintTop_toBottomOf="@id/tv_name" - app:layout_constraintStart_toStartOf="@id/tv_name" - android:layout_marginTop="7dp" - app:layout_constraintEnd_toEndOf="parent" - android:visibility="gone" - android:layout_marginEnd="14dp" - android:textSize="12sp" - android:textColor="@color/textColor66" - android:textStyle="bold" - android:drawablePadding="5dp" - android:drawableStart="@mipmap/ic_address"/> - - <View - android:layout_width="match_parent" - android:layout_height="1px" - app:layout_constraintTop_toBottomOf="@id/tv_address" - android:layout_marginTop="14dp" - android:background="@color/dividing_line_color" - android:layout_marginStart="14dp"/> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_1" - android:text="截止报名时间" - app:layout_constraintStart_toStartOf="@id/tv_name" - app:layout_constraintTop_toBottomOf="@id/tv_address" - android:layout_marginTop="28dp" - android:textStyle="bold" - android:drawablePadding="6dp" - android:drawableStart="@drawable/orange_dot" - android:textColor="@color/textColor66" - android:textSize="12sp"/> - - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_deadline" - app:layout_constraintTop_toBottomOf="@id/tv_1" - app:layout_constraintStart_toStartOf="parent" - android:layout_marginStart="24dp" - android:layout_marginTop="8dp" - tools:text="2023-03-15 09:00" - android:textColor="@color/textColor" - android:textSize="12sp" - android:textStyle="bold"/> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_2" - android:text="开始时间" - app:layout_constraintStart_toStartOf="@id/tv_name" - app:layout_constraintTop_toBottomOf="@id/tv_deadline" - android:layout_marginTop="14dp" - android:textStyle="bold" - android:drawablePadding="6dp" - android:drawableStart="@drawable/orange_dot" - android:textColor="@color/textColor66" - android:textSize="12sp"/> - - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_start_time" - app:layout_constraintTop_toBottomOf="@id/tv_2" - app:layout_constraintStart_toStartOf="parent" - android:layout_marginStart="24dp" - android:layout_marginTop="8dp" - tools:text="2023-03-15 09:00" - android:textColor="@color/textColor" - android:textSize="12sp" - android:textStyle="bold"/> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_3" - android:text="结束时间" - app:layout_constraintStart_toStartOf="@id/tv_name" - app:layout_constraintTop_toBottomOf="@id/tv_start_time" - android:layout_marginTop="14dp" - android:textStyle="bold" - android:drawablePadding="6dp" - android:drawableStart="@drawable/orange_dot" - android:textColor="@color/textColor66" - android:textSize="12sp"/> - - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_end_time" - app:layout_constraintTop_toBottomOf="@id/tv_3" - app:layout_constraintStart_toStartOf="parent" - android:layout_marginStart="24dp" - android:layout_marginTop="8dp" - tools:text="2023-03-15 09:00" - android:textColor="@color/textColor" - android:textSize="12sp" - android:textStyle="bold"/> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_4" - android:text="报名年龄" - app:layout_constraintStart_toStartOf="@id/tv_name" - app:layout_constraintTop_toBottomOf="@id/tv_end_time" - android:layout_marginTop="14dp" - android:textStyle="bold" - android:drawablePadding="6dp" - android:drawableStart="@drawable/orange_dot" - android:textColor="@color/textColor66" - android:textSize="12sp"/> - - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_age" - app:layout_constraintTop_toBottomOf="@id/tv_4" - app:layout_constraintStart_toStartOf="parent" - android:layout_marginStart="24dp" - android:layout_marginTop="8dp" - tools:text="7-12岁" - android:textColor="@color/textColor" - android:textSize="12sp" - android:textStyle="bold"/> - <TextView - android:id="@+id/tv_44" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginTop="14dp" - android:drawableStart="@drawable/orange_dot" - android:drawablePadding="6dp" - android:text="参赛者性别" - android:textColor="@color/textColor66" - android:textSize="12sp" - android:textStyle="bold" - app:layout_constraintStart_toStartOf="@id/tv_name" - app:layout_constraintTop_toBottomOf="@id/tv_age" /> - - <TextView - android:id="@+id/tv_sex" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginStart="24dp" - android:layout_marginTop="8dp" - android:textColor="@color/textColor" - android:textSize="12sp" - android:textStyle="bold" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@id/tv_44" - tools:text="男" /> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_5" - android:text="参赛地址" - app:layout_constraintStart_toStartOf="@id/tv_name" - app:layout_constraintTop_toBottomOf="@id/tv_sex" - android:layout_marginTop="14dp" - android:textStyle="bold" - android:drawablePadding="6dp" - android:drawableStart="@drawable/orange_dot" - android:textColor="@color/textColor66" - android:textSize="12sp"/> - - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_city" - app:layout_constraintBaseline_toBaselineOf="@id/tv_play_address" - app:layout_constraintEnd_toEndOf="parent" - android:layout_marginEnd="14dp" - tools:text="四川|成都" - android:textColor="@color/textColor" - android:textSize="12sp" - android:textStyle="bold"/> - - <TextView - android:layout_width="0dp" - android:layout_height="wrap_content" - android:id="@+id/tv_play_address" - app:layout_constraintTop_toBottomOf="@id/tv_5" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintEnd_toStartOf="@id/tv_city" - android:layout_marginEnd="10dp" - android:layout_marginStart="24dp" - android:layout_marginTop="8dp" - tools:text="天府新谷9号楼1005A" - android:textColor="@color/textColor" - android:textSize="12sp" - android:textStyle="bold"/> - - <TextView - android:id="@+id/tv_66" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginTop="14dp" - android:drawableStart="@drawable/orange_dot" - android:drawablePadding="6dp" - android:text="参与门店" - android:textColor="@color/textColor66" - android:textSize="12sp" - android:textStyle="bold" - app:layout_constraintStart_toStartOf="@id/tv_name" - app:layout_constraintTop_toBottomOf="@id/tv_play_address" - /> - <LinearLayout - android:id="@+id/mllshops" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:orientation="horizontal" - app:layout_constraintTop_toBottomOf="@+id/tv_66"> - - <TextView - android:id="@+id/tv_shops" - android:layout_width="0dp" - android:layout_height="wrap_content" - android:layout_marginStart="24dp" - android:layout_marginTop="8dp" - android:layout_marginEnd="10dp" - android:layout_weight="1" - android:maxLines="1" - android:ellipsize="end" - android:textColor="@color/textColor" - android:textSize="12sp" - android:textStyle="bold" - app:layout_constraintEnd_toStartOf="@id/tv_city" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@id/tv_5" - tools:text="玩湃-喜望店,门店1,门店2喜望店,门店1,门店2喜望店,门店1,门店2喜望店,门店1,门店2喜望店,门店1,门店2喜望店,门店1,门店2" /> - - <TextView - android:id="@+id/mtvcheckmore" - android:layout_marginEnd="14dp" - android:textColor="@color/colorPrimary" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginTop="8dp" - android:text="查看更多"/> - </LinearLayout> - - <View - android:layout_width="match_parent" - android:layout_height="1px" - app:layout_constraintTop_toBottomOf="@id/mllshops" - android:layout_marginTop="14dp" - android:background="@color/dividing_line_color" - android:layout_marginStart="14dp"/> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_6" - android:text="比赛费用" - app:layout_constraintStart_toStartOf="@id/tv_name" - app:layout_constraintTop_toBottomOf="@id/mllshops" - android:layout_marginTop="28dp" - android:textStyle="bold" - android:textColor="@color/textColor" - android:textSize="16sp"/> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_price" - style="@style/style_common_text" - android:text="支付:" - android:visibility="gone" - app:layout_constraintTop_toBottomOf="@id/tv_6" - app:layout_constraintStart_toStartOf="@id/tv_6" - android:layout_marginTop="12dp"/> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_coin" - style="@style/style_common_text" - android:layout_marginStart="65dp" - app:layout_goneMarginStart="0dp" - android:text="玩湃币:" - android:visibility="gone" - android:layout_marginTop="12dp" - app:layout_constraintStart_toEndOf="@id/tv_price" - app:layout_constraintTop_toBottomOf="@id/tv_6"/> - - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_course_time" - style="@style/style_common_text" - android:text="课时:" - android:visibility="gone" - app:layout_constraintTop_toBottomOf="@id/barrier" - app:layout_constraintStart_toStartOf="@id/tv_6" - android:layout_marginTop="12dp"/> - <androidx.constraintlayout.widget.Barrier - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/barrier" - app:constraint_referenced_ids="tv_coin,tv_price" - app:barrierDirection="bottom"/> - <View - android:layout_width="match_parent" - android:layout_height="1px" - app:layout_constraintTop_toBottomOf="@id/tv_course_time" - android:layout_marginTop="14dp" - android:background="@color/dividing_line_color" - android:layout_marginStart="14dp"/> - - - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_add_student" - app:layout_constraintTop_toBottomOf="@id/tv_course_time" - app:layout_constraintEnd_toEndOf="@id/tv_city" - android:text="选择人员" - android:textSize="14sp" - android:layout_marginTop="18dp" - android:drawablePadding="6dp" - android:paddingVertical="10dp" - android:drawableEnd="@mipmap/ic_add"/> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="赛事人员" - android:textStyle="bold" - app:layout_constraintBaseline_toBaselineOf="@id/tv_add_student" - app:layout_constraintStart_toStartOf="@id/tv_1" - android:textColor="@color/textColor" - android:textSize="14sp"/> - - <androidx.recyclerview.widget.RecyclerView - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:id="@+id/rv_student" - app:layout_constraintTop_toBottomOf="@id/tv_add_student"/> - </androidx.constraintlayout.widget.ConstraintLayout> - </com.dollearn.student.views.ScrollInterceptScrollView> - <TextView - android:layout_width="match_parent" - android:layout_height="48dp" - android:id="@+id/tv_action" - android:gravity="center" - android:background="@color/colorPrimary" - android:text="立即报名" - android:textSize="18sp" - android:textStyle="bold" - android:textColor="@color/white" - app:layout_constraintBottom_toBottomOf="parent"/> - <CheckBox - android:layout_width="wrap_content" - android:layout_height="35dp" - android:id="@+id/cb_rule" - app:layout_constraintStart_toStartOf="parent" - android:layout_marginStart="14dp" - android:textSize="12sp" - android:paddingHorizontal="4dp" - android:button="@drawable/selector_check_pay" - app:layout_constraintBottom_toTopOf="@id/tv_action" - android:text="我已阅读并同意"/> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_rule" - app:layout_constraintBaseline_toBaselineOf="@id/cb_rule" - app:layout_constraintStart_toEndOf="@id/cb_rule" - android:text="《社区世界杯报名协议》" - android:textColor="@color/colorDeepBlue"/> -</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/activity_joined_course_deatil.xml b/app/src/main/res/layout/activity_joined_course_deatil.xml deleted file mode 100644 index 2f79b3f..0000000 --- a/app/src/main/res/layout/activity_joined_course_deatil.xml +++ /dev/null @@ -1,321 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="match_parent" - xmlns:app="http://schemas.android.com/apk/res-auto" - xmlns:tools="http://schemas.android.com/tools"> - <com.dollearn.student.views.ScrollInterceptScrollView - android:layout_width="match_parent" - android:layout_height="0dp" - app:layout_constraintTop_toTopOf="parent" - android:id="@+id/scrollView" - app:layout_constraintBottom_toTopOf="@id/ll_bottom" - android:scrollbars="none"> - <androidx.constraintlayout.widget.ConstraintLayout - android:layout_width="match_parent" - android:layout_height="wrap_content"> - <com.youth.banner.Banner - android:id="@+id/banner" - android:layout_width="match_parent" - android:layout_height="220dp" - android:scaleType="centerCrop" - app:is_auto_loop="true" - app:layout_constraintTop_toTopOf="parent" /> - <TextView - android:id="@+id/tv_name" - android:layout_width="0dp" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintEnd_toStartOf="@id/mtvtag" - android:layout_height="wrap_content" - android:layout_margin="14dp" - android:textColor="@color/textColor" - android:textSize="18sp" - android:textStyle="bold" - app:layout_constraintTop_toBottomOf="@id/banner" /> - - <TextView - android:id="@+id/mtvtag" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:background="@drawable/shap_tag" - android:paddingStart="5dp" - android:paddingTop="3dp" - android:paddingEnd="5dp" - android:paddingBottom="3dp" - android:textColor="@color/white" - app:layout_constraintRight_toRightOf="parent" - app:layout_constraintTop_toTopOf="@+id/tv_name" - tools:text="常规班" /> - <TextView - android:id="@+id/tv_address" - android:layout_width="0dp" - android:layout_height="wrap_content" - android:layout_marginTop="7dp" - android:layout_marginEnd="10dp" - android:drawableStart="@mipmap/ic_address" - android:drawablePadding="5dp" - android:textColor="@color/textColor66" - android:textSize="12sp" - android:textStyle="bold" - app:layout_constraintEnd_toStartOf="@id/tv_distance" - app:layout_constraintStart_toStartOf="@id/tv_name" - app:layout_constraintTop_toBottomOf="@id/tv_name" - tools:text="dizsdjfljsdlkfjlkjfsd" /> - - <TextView - android:id="@+id/tv_distance" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:textColor="@color/textColor66" - android:textSize="12sp" - android:layout_marginEnd="10dp" - android:textStyle="bold" - app:layout_constraintBaseline_toBaselineOf="@id/tv_address" - app:layout_constraintEnd_toEndOf="parent" /> - <View - android:layout_width="match_parent" - android:layout_height="1px" - app:layout_constraintTop_toBottomOf="@id/tv_address" - android:layout_marginTop="14dp" - android:background="@color/dividing_line_color" - android:layout_marginStart="14dp"/> - <androidx.constraintlayout.widget.ConstraintLayout - android:id="@+id/cl_course_count" - android:layout_width="match_parent" - app:layout_constraintTop_toBottomOf="@id/tv_address" - android:visibility="gone" - android:layout_marginTop="14dp" - android:layout_height="wrap_content"> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_10" - android:text="包含课时数:" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent" - android:layout_marginStart="14dp" - android:layout_marginTop="14dp" - android:textStyle="bold" - android:textColor="@color/textColor" - android:textSize="14sp"/> - - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_course_count" - app:layout_constraintStart_toEndOf="@id/tv_10" - app:layout_constraintBaseline_toBaselineOf="@id/tv_10" - android:layout_marginTop="28dp" - android:textColor="@color/color_text_price" - android:textSize="14sp"/> - <View - android:layout_width="match_parent" - android:layout_height="1px" - app:layout_constraintTop_toBottomOf="@id/tv_10" - android:layout_marginTop="14dp" - android:background="@color/dividing_line_color" - android:layout_marginStart="14dp"/> - </androidx.constraintlayout.widget.ConstraintLayout> - <androidx.constraintlayout.widget.ConstraintLayout - android:id="@+id/cl_course_count_additional" - android:layout_width="match_parent" - app:layout_constraintTop_toBottomOf="@id/cl_course_count" - android:visibility="gone" - android:layout_height="wrap_content"> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_11" - android:text="额外赠送:" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent" - android:layout_marginStart="14dp" - android:layout_marginTop="14dp" - android:textStyle="bold" - android:textColor="@color/textColor" - android:textSize="14sp"/> - - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_course_count_additional" - app:layout_constraintStart_toEndOf="@id/tv_11" - app:layout_constraintBaseline_toBaselineOf="@id/tv_11" - android:layout_marginTop="28dp" - android:textColor="@color/color_text_price" - android:textSize="14sp"/> - <View - android:layout_width="match_parent" - android:layout_height="1px" - app:layout_constraintTop_toBottomOf="@id/tv_11" - android:layout_marginTop="14dp" - android:background="@color/dividing_line_color" - android:layout_marginStart="14dp"/> - </androidx.constraintlayout.widget.ConstraintLayout> - - <androidx.constraintlayout.widget.ConstraintLayout - android:id="@+id/class_time" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginTop="14dp" - app:layout_constraintStart_toStartOf="@id/tv_name" - app:layout_constraintTop_toBottomOf="@id/cl_course_count_additional"> - - <TextView - android:id="@+id/tv_1" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginTop="14dp" - android:text="上课时间:" - android:textColor="@color/textColor" - android:textSize="14sp" - android:textStyle="bold" - app:layout_constraintLeft_toLeftOf="parent" - app:layout_constraintTop_toTopOf="parent" - - app:layout_goneMarginTop="28dp" /> - - <TextView - android:id="@+id/tv_week" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:textColor="@color/textColor" - android:textSize="14sp" - app:layout_constraintBaseline_toBaselineOf="@id/tv_1" - app:layout_constraintStart_toEndOf="@id/tv_1" - tools:text="dizsdjfljsdlkfjlkjfsd" /> - - - <TextView - android:id="@+id/tv_time" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginTop="8dp" - android:textColor="@color/colorPrimary" - android:textSize="14sp" - android:textStyle="bold" - android:layout_marginBottom="10dp" - app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintStart_toStartOf="@id/tv_week" - app:layout_constraintTop_toBottomOf="@id/tv_week" - tools:text="dizsdjfljsdlkfjlkjfsd" /> - <View - android:layout_width="match_parent" - android:layout_height="1px" - app:layout_constraintBottom_toBottomOf="parent" - android:layout_marginStart="14dp" - android:background="@color/dividing_line_color" /> - </androidx.constraintlayout.widget.ConstraintLayout> - - - <RelativeLayout - android:id="@+id/mll_class_yxq" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_marginTop="14dp" - android:orientation="horizontal" - android:visibility="gone" - app:layout_constraintTop_toBottomOf="@+id/class_time" - tools:visibility="visible"> - - <TextView - android:id="@+id/mtvyxq" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginStart="14dp" - android:layout_marginTop="14dp" - android:text="运动营有效期:" - android:textColor="@color/textColor" - android:textSize="14sp" - android:textStyle="bold" /> - - <TextView - android:id="@+id/mtv_class_yxq" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginStart="14dp" - android:layout_marginTop="14dp" - android:layout_toRightOf="@+id/mtvyxq" - android:textColor="@color/textColor" - android:textSize="14sp" - tools:text="2022-2-2" /> - - <View - android:id="@+id/line2" - android:layout_width="match_parent" - android:layout_height="1px" - android:layout_marginStart="14dp" - android:layout_marginTop="14dp" - android:background="@color/dividing_line_color" - android:layout_below="@id/mtv_class_yxq"/> - </RelativeLayout> - - - <ImageView - android:layout_width="match_parent" - android:layout_height="0dp" - app:layout_constraintTop_toBottomOf="@id/mll_class_yxq" - android:layout_marginTop="14dp" - android:id="@+id/iv_introduction"/> - <com.facebook.drawee.view.SimpleDraweeView - android:layout_width="match_parent" - android:layout_height="0dp" - app:layout_constraintTop_toBottomOf="@id/iv_introduction" - app:actualImageScaleType="centerCrop" - android:id="@+id/iv_detail"/> - </androidx.constraintlayout.widget.ConstraintLayout> - </com.dollearn.student.views.ScrollInterceptScrollView> - <LinearLayout - android:layout_width="match_parent" - android:layout_height="75dp" - android:id="@+id/ll_bottom" - android:gravity="center_vertical" - app:layout_constraintBottom_toBottomOf="parent"> - <TextView - android:layout_width="wrap_content" - android:layout_height="match_parent" - android:id="@+id/tv_price" - android:gravity="center" - android:text="¥0" - android:layout_marginStart="8dp" - android:textSize="21sp" - android:textStyle="bold" - android:textColor="@color/colorYellow"/> - <LinearLayout - android:layout_width="0dp" - android:layout_height="wrap_content" - android:orientation="vertical" - android:layout_weight="1" - android:layout_marginStart="9dp"> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_vip_price" - android:textColor="@color/color_text_price" - android:textStyle="bold" - android:textSize="13sp" - tools:text="会员价:¥80"/> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_coin_price" - android:textColor="@color/color_text_price" - android:textStyle="bold" - android:layout_marginTop="2dp" - android:textSize="13sp" - tools:text="会员价:¥80"/> - </LinearLayout> - <TextView - android:layout_width="160dp" - android:layout_height="wrap_content" - android:id="@+id/tv_action" - android:text="" - android:layout_marginEnd="10dp" - style="@style/style_btn_action"/> - </LinearLayout> - <View - android:layout_width="match_parent" - android:layout_height="1px" - android:background="@color/dividing_line_color" - app:layout_constraintTop_toTopOf="@id/ll_bottom"/> -</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/activity_list_filter.xml b/app/src/main/res/layout/activity_list_filter.xml deleted file mode 100644 index 14dc319..0000000 --- a/app/src/main/res/layout/activity_list_filter.xml +++ /dev/null @@ -1,153 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="match_parent" - xmlns:app="http://schemas.android.com/apk/res-auto"> - <cn.sinata.xldutils.view.SwipeRefreshRecyclerLayout - android:layout_width="match_parent" - android:layout_height="match_parent" - android:id="@+id/mSwipeReLayout"/> - <View - android:layout_width="match_parent" - android:layout_height="0dp" - app:layout_constraintTop_toTopOf="@id/mSwipeReLayout" - app:layout_constraintBottom_toBottomOf="parent" - android:id="@+id/bg" - android:visibility="gone" - android:background="@color/halfTrans"/> - <androidx.constraintlayout.widget.ConstraintLayout - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:id="@+id/cl_filter" - android:visibility="gone" - android:background="@color/white" - app:layout_constraintTop_toTopOf="@id/mSwipeReLayout"> - <TextView - android:id="@+id/tv_title_subject" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginStart="12dp" - android:layout_marginTop="14dp" - android:text="选择学科" - android:textColor="@color/textColor" - android:textSize="20sp" - android:textStyle="bold" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent" /> - <CheckedTextView - android:layout_width="88dp" - android:layout_height="wrap_content" - app:layout_constraintTop_toBottomOf="@id/tv_title_subject" - android:text="语文" - android:layout_marginTop="14dp" - android:id="@+id/tv_chinese" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintEnd_toStartOf="@id/tv_math" - style="@style/style_tv_option"/> - <CheckedTextView - android:layout_width="88dp" - android:layout_height="wrap_content" - android:text="数学" - android:id="@+id/tv_math" - app:layout_constraintBaseline_toBaselineOf="@id/tv_chinese" - app:layout_constraintStart_toEndOf="@id/tv_chinese" - app:layout_constraintEnd_toStartOf="@id/tv_english" - style="@style/style_tv_option"/> - <CheckedTextView - android:layout_width="88dp" - android:id="@+id/tv_english" - android:layout_height="wrap_content" - app:layout_constraintBaseline_toBaselineOf="@id/tv_chinese" - android:text="英语" - app:layout_constraintStart_toEndOf="@id/tv_math" - app:layout_constraintEnd_toEndOf="parent" - style="@style/style_tv_option"/> - <CheckedTextView - android:layout_width="88dp" - android:layout_height="wrap_content" - app:layout_constraintTop_toBottomOf="@id/tv_chinese" - android:text="物理" - android:layout_marginTop="14dp" - android:id="@+id/tv_physics" - app:layout_constraintStart_toStartOf="@id/tv_chinese" - style="@style/style_tv_option"/> - <CheckedTextView - android:layout_width="88dp" - android:layout_height="wrap_content" - app:layout_constraintTop_toTopOf="@id/tv_physics" - android:text="化学" - android:id="@+id/tv_chemistry" - app:layout_constraintStart_toStartOf="@id/tv_math" - style="@style/style_tv_option"/> - <CheckedTextView - android:layout_width="88dp" - android:layout_height="wrap_content" - app:layout_constraintTop_toTopOf="@id/tv_physics" - android:text="生物" - android:id="@+id/tv_biology" - app:layout_constraintStart_toStartOf="@id/tv_english" - style="@style/style_tv_option"/> - <CheckedTextView - android:layout_width="88dp" - android:layout_height="wrap_content" - app:layout_constraintTop_toBottomOf="@id/tv_physics" - android:text="政治" - android:layout_marginTop="14dp" - android:id="@+id/tv_politics" - app:layout_constraintStart_toStartOf="@id/tv_chinese" - style="@style/style_tv_option"/> - <CheckedTextView - android:layout_width="88dp" - android:layout_height="wrap_content" - app:layout_constraintTop_toTopOf="@id/tv_politics" - android:text="地理" - android:id="@+id/tv_geography" - app:layout_constraintStart_toStartOf="@id/tv_math" - style="@style/style_tv_option"/> - <CheckedTextView - android:layout_width="88dp" - android:layout_height="wrap_content" - app:layout_constraintTop_toTopOf="@id/tv_politics" - android:text="历史" - android:id="@+id/tv_history" - app:layout_constraintStart_toStartOf="@id/tv_english" - style="@style/style_tv_option"/> - <CheckedTextView - android:layout_width="88dp" - android:layout_height="wrap_content" - app:layout_constraintTop_toBottomOf="@id/tv_politics" - android:text="其他" - android:layout_marginTop="14dp" - android:id="@+id/tv_other" - app:layout_constraintStart_toStartOf="@id/tv_chinese" - style="@style/style_tv_option"/> - <LinearLayout - android:layout_width="match_parent" - android:layout_height="wrap_content" - app:layout_constraintTop_toBottomOf="@id/tv_other" - android:layout_marginTop="22dp"> - <TextView - android:layout_width="0dp" - android:layout_height="wrap_content" - android:layout_weight="1" - android:text="重置" - android:textColor="@color/textColor99" - android:gravity="center" - android:paddingTop="10dp" - android:id="@+id/tv_reset" - android:paddingBottom="10dp" - android:background="@color/colorBGDisable"/> - <TextView - android:layout_width="0dp" - android:layout_height="wrap_content" - android:layout_weight="1" - android:text="确定" - android:textColor="@color/white" - android:gravity="center" - android:paddingTop="10dp" - android:id="@+id/tv_sure" - android:paddingBottom="10dp" - android:background="@drawable/bg_gradient"/> - </LinearLayout> - </androidx.constraintlayout.widget.ConstraintLayout> -</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/activity_list_search.xml b/app/src/main/res/layout/activity_list_search.xml deleted file mode 100644 index 9f4dd63..0000000 --- a/app/src/main/res/layout/activity_list_search.xml +++ /dev/null @@ -1,60 +0,0 @@ -<androidx.constraintlayout.widget.ConstraintLayout android:layout_width="match_parent" - android:layout_height="match_parent" - xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:app="http://schemas.android.com/apk/res-auto"> - - <TextView - android:id="@+id/tv_search" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="搜索" - android:textColor="@color/colorPrimary" - android:padding="10dp" - app:layout_constraintBaseline_toBaselineOf="@id/et_search" - app:layout_constraintEnd_toEndOf="parent" - android:layout_marginEnd="4dp" - android:textSize="14sp" - android:textStyle="bold"/> - <EditText - android:id="@+id/et_search" - android:layout_width="0dp" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintEnd_toStartOf="@id/tv_search" - android:layout_height="wrap_content" - app:layout_constraintTop_toTopOf="parent" - android:textSize="14sp" - android:layout_marginTop="9dp" - android:hint="输入运动营名称" - android:paddingVertical="10dp" - android:drawablePadding="6dp" - android:paddingHorizontal="4dp" - android:drawableStart="@mipmap/icon_search_gray" - android:background="@drawable/bg_grey_4dp" - android:layout_marginStart="14dp"/> - <com.scwang.smart.refresh.layout.SmartRefreshLayout - android:layout_width="match_parent" - android:layout_height="0dp" - android:layout_marginTop="9dp" - app:layout_constraintTop_toBottomOf="@id/et_search" - app:layout_constraintBottom_toBottomOf="parent" - android:id="@+id/refreshLayout"> - <com.scwang.smart.refresh.header.ClassicsHeader - android:layout_width="match_parent" - android:layout_height="wrap_content"/> - <androidx.recyclerview.widget.RecyclerView - android:layout_width="match_parent" - android:layout_height="match_parent" - android:id="@+id/rv_video" - app:layout_constraintTop_toBottomOf="@id/et_search"/> - <com.scwang.smart.refresh.footer.ClassicsFooter - android:layout_width="match_parent" - android:layout_height="wrap_content"/> - </com.scwang.smart.refresh.layout.SmartRefreshLayout> - - <View - android:layout_width="match_parent" - android:layout_height="4dp" - android:background="@drawable/bg_shadow_top" - app:layout_constraintTop_toBottomOf="@id/et_search" - android:layout_marginTop="8dp"/> -</androidx.constraintlayout.widget.ConstraintLayout> diff --git a/app/src/main/res/layout/activity_match.xml b/app/src/main/res/layout/activity_match.xml deleted file mode 100644 index 5971061..0000000 --- a/app/src/main/res/layout/activity_match.xml +++ /dev/null @@ -1,173 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="match_parent" - xmlns:app="http://schemas.android.com/apk/res-auto"> - <TextView - android:id="@+id/tv_search" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="搜索" - android:textColor="@color/colorPrimary" - android:padding="10dp" - app:layout_constraintBaseline_toBaselineOf="@id/et_search" - app:layout_constraintEnd_toEndOf="parent" - android:layout_marginEnd="4dp" - android:textSize="14sp" - android:textStyle="bold"/> - <EditText - android:id="@+id/et_search" - android:layout_width="0dp" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintEnd_toStartOf="@id/tv_search" - android:layout_height="wrap_content" - app:layout_constraintTop_toTopOf="parent" - android:layout_marginTop="15dp" - android:textSize="14sp" - android:hint="输入活动名称" - android:paddingVertical="10dp" - android:drawablePadding="6dp" - android:paddingHorizontal="4dp" - android:drawableStart="@mipmap/icon_search_gray" - android:background="@drawable/bg_grey_4dp" - android:layout_marginStart="14dp"/> - <CheckBox - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/cb_city" - android:button="@null" - android:background="@null" - app:layout_constraintTop_toBottomOf="@id/et_search" - android:text="举办城市" - android:layout_marginTop="4dp" - android:paddingVertical="13dp" - android:textSize="16sp" - android:drawablePadding="1dp" - android:textColor="@color/selector_black_red" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintEnd_toStartOf="@id/cb_condition" - android:drawableEnd="@drawable/selector_filter_check"/> - <CheckBox - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/cb_condition" - android:button="@null" - android:text="报名条件" - android:background="@null" - app:layout_constraintBaseline_toBaselineOf="@id/cb_city" - android:paddingVertical="13dp" - android:textSize="16sp" - android:drawablePadding="1dp" - android:textColor="@color/selector_black_red" - app:layout_constraintStart_toEndOf="@id/cb_city" - app:layout_constraintEnd_toStartOf="@id/tv_heat" - android:drawableEnd="@drawable/selector_filter_check"/> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_heat" - android:text="热度" - app:layout_constraintBaseline_toBaselineOf="@id/cb_city" - android:paddingVertical="13dp" - android:textSize="16sp" - android:layout_marginEnd="80dp" - android:drawablePadding="1dp" - android:textColor="@color/textColor" - app:layout_constraintStart_toEndOf="@id/cb_condition" - app:layout_constraintEnd_toEndOf="parent" - android:drawableEnd="@mipmap/sort_none"/> - <TextView - android:layout_width="match_parent" - android:layout_height="48dp" - android:background="@color/colorPrimary" - app:layout_constraintBottom_toBottomOf="parent" - android:id="@+id/tv_record" - android:text="已报名活动" - android:gravity="center" - android:textColor="@color/white" - android:textStyle="bold" - android:textSize="17sp"/> - <com.scwang.smart.refresh.layout.SmartRefreshLayout - android:layout_width="match_parent" - android:layout_height="0dp" - android:id="@+id/refreshLayout" - app:layout_constraintTop_toBottomOf="@id/cb_city" - app:layout_constraintBottom_toTopOf="@id/tv_record"> - <com.scwang.smart.refresh.header.ClassicsHeader - android:layout_width="match_parent" - android:layout_height="wrap_content"/> - <androidx.recyclerview.widget.RecyclerView - android:id="@+id/rv_course" - android:layout_width="match_parent" - android:layout_height="match_parent"/> - </com.scwang.smart.refresh.layout.SmartRefreshLayout> - <View - android:layout_width="match_parent" - android:layout_height="6dp" - app:layout_constraintTop_toTopOf="@id/refreshLayout" - android:background="@drawable/bg_shadow_top"/> - <View - android:layout_width="match_parent" - android:layout_height="0dp" - app:layout_constraintTop_toTopOf="@id/refreshLayout" - app:layout_constraintBottom_toBottomOf="parent" - android:background="@color/halfTrans" - android:visibility="gone" - android:id="@+id/bg_filter"/> - <androidx.recyclerview.widget.RecyclerView - android:id="@+id/rv_condition" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:visibility="gone" - app:layout_constraintTop_toTopOf="@id/refreshLayout" - android:background="@color/white"/> - <androidx.constraintlayout.widget.ConstraintLayout - android:id="@+id/cl_city" - android:layout_width="match_parent" - android:layout_height="0dp" - android:visibility="gone" - android:layout_marginBottom="70dp" - app:layout_constraintTop_toTopOf="@id/refreshLayout" - app:layout_constraintBottom_toBottomOf="parent" - android:background="@color/white"> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_refresh" - android:text="重新定位" - android:drawablePadding="6dp" - android:textStyle="bold" - android:textColor="@color/textColor" - android:textSize="14sp" - android:padding="14dp" - app:layout_constraintTop_toTopOf="parent" - app:layout_constraintEnd_toEndOf="parent" - android:drawableStart="@mipmap/reset"/> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_current" - app:layout_constraintBaseline_toBaselineOf="@id/tv_refresh" - app:layout_constraintStart_toStartOf="parent" - android:layout_marginStart="14dp" - android:textSize="14sp" - android:textColor="@color/colorYellow" - android:text="当前城市:成都"/> - <androidx.recyclerview.widget.RecyclerView - android:id="@+id/rv_city" - android:layout_width="match_parent" - android:layout_height="0dp" - app:layout_constraintTop_toBottomOf="@id/tv_refresh" - app:layout_constraintBottom_toBottomOf="parent"/> - <com.dollearn.student.views.WaveSideBar - android:id="@+id/side_bar" - android:layout_width="match_parent" - android:layout_height="0dp" - app:layout_constraintTop_toTopOf="@id/rv_city" - app:layout_constraintBottom_toBottomOf="@id/rv_city" - android:paddingLeft="8dp" - android:paddingRight="8dp" - app:sidebar_text_color="@color/colorPrimary"/> - </androidx.constraintlayout.widget.ConstraintLayout> - -</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/activity_my_course_detail.xml b/app/src/main/res/layout/activity_my_course_detail.xml deleted file mode 100644 index ab66d92..0000000 --- a/app/src/main/res/layout/activity_my_course_detail.xml +++ /dev/null @@ -1,268 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:app="http://schemas.android.com/apk/res-auto" - xmlns:tools="http://schemas.android.com/tools" - android:layout_width="match_parent" - android:layout_height="match_parent"> - - <androidx.constraintlayout.widget.ConstraintLayout - android:layout_width="match_parent" - android:layout_height="wrap_content"> - - <com.facebook.drawee.view.SimpleDraweeView - android:id="@+id/iv_avatar" - style="@style/DefaultHeadStyle" - android:layout_width="74dp" - android:layout_height="74dp" - android:layout_marginStart="22dp" - android:layout_marginTop="12dp" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent" /> - - <TextView - android:id="@+id/tv_name" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_margin="11dp" - android:textColor="@color/textColor" - android:textSize="16sp" - android:textStyle="bold" - app:layout_constraintStart_toEndOf="@id/iv_avatar" - app:layout_constraintTop_toTopOf="@id/iv_avatar" - tools:text="王雅博" /> - - <TextView - android:id="@+id/tv_deadline" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginTop="10dp" - android:textSize="12sp" - app:layout_constraintStart_toStartOf="@id/tv_name" - app:layout_constraintTop_toBottomOf="@id/tv_name" - tools:text="有效期:2023-03-20" /> - - <TextView - android:id="@+id/tv_used_count" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginTop="26dp" - android:text="0" - android:textColor="@color/colorPrimary" - android:textSize="25sp" - android:textStyle="bold" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@id/iv_avatar" /> - - <TextView - android:id="@+id/tv_1" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginTop="3dp" - android:text="已扣课时数" - android:textSize="12sp" - app:layout_constraintEnd_toEndOf="@id/tv_used_count" - app:layout_constraintStart_toStartOf="@id/tv_used_count" - app:layout_constraintTop_toBottomOf="@id/tv_used_count" /> - - <TextView - android:id="@+id/tv_total_count" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginStart="60dp" - android:text="0" - android:textColor="@color/colorPrimary" - android:textSize="25sp" - android:textStyle="bold" - app:layout_constraintBaseline_toBaselineOf="@id/tv_used_count" - app:layout_constraintStart_toStartOf="parent" /> - - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="总课时数" - android:textSize="12sp" - app:layout_constraintBaseline_toBaselineOf="@id/tv_1" - app:layout_constraintEnd_toEndOf="@id/tv_total_count" - app:layout_constraintStart_toStartOf="@id/tv_total_count" /> - - <TextView - android:id="@+id/tv_last_count" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginEnd="60dp" - android:text="0" - android:textColor="@color/colorPrimary" - android:textSize="25sp" - android:textStyle="bold" - app:layout_constraintBaseline_toBaselineOf="@id/tv_used_count" - app:layout_constraintEnd_toEndOf="parent" /> - - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="剩余课时数" - android:textSize="12sp" - app:layout_constraintBaseline_toBaselineOf="@id/tv_1" - app:layout_constraintEnd_toEndOf="@id/tv_last_count" - app:layout_constraintStart_toStartOf="@id/tv_last_count" /> - - <androidx.recyclerview.widget.RecyclerView - android:id="@+id/rv_name" - android:layout_width="match_parent" - android:layout_height="50dp" - android:layout_marginTop="24dp" - app:layout_constraintTop_toBottomOf="@id/tv_1" /> - - <androidx.constraintlayout.widget.ConstraintLayout - android:id="@+id/mll_used" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:background="@drawable/bg_gradient" - app:layout_constraintTop_toBottomOf="@id/rv_name"> - - <TextView - android:id="@+id/tv_total_count2" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginStart="60dp" - android:text="0" - android:textColor="@color/white" - android:textSize="25sp" - android:textStyle="bold" - app:layout_constraintBaseline_toBaselineOf="@id/tv_used_count2" - app:layout_constraintStart_toStartOf="parent" /> - - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="总课时数" - android:textColor="@color/white" - android:textSize="12sp" - app:layout_constraintBaseline_toBaselineOf="@id/tv_2" - app:layout_constraintEnd_toEndOf="@id/tv_total_count2" - app:layout_constraintStart_toStartOf="@id/tv_total_count2" /> - - <TextView - android:id="@+id/tv_used_count2" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginTop="10dp" - android:text="0" - android:textColor="@color/white" - android:textSize="25sp" - android:textStyle="bold" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent" /> - - <TextView - android:id="@+id/tv_2" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginTop="3dp" - android:text="已扣课时数" - android:textColor="@color/white" - android:textSize="12sp" - app:layout_constraintEnd_toEndOf="@id/tv_used_count2" - app:layout_constraintStart_toStartOf="@id/tv_used_count2" - app:layout_constraintTop_toBottomOf="@id/tv_used_count2" /> - - <TextView - android:id="@+id/tv_last_count2" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginEnd="60dp" - android:text="0" - android:textColor="@color/white" - android:textSize="25sp" - android:textStyle="bold" - app:layout_constraintBaseline_toBaselineOf="@id/tv_used_count2" - app:layout_constraintEnd_toEndOf="parent" /> - - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="剩余课时数" - android:textColor="@color/white" - android:textSize="12sp" - app:layout_constraintBaseline_toBaselineOf="@id/tv_2" - app:layout_constraintEnd_toEndOf="@id/tv_last_count2" - app:layout_constraintStart_toStartOf="@id/tv_last_count2" /> - - <TextView - android:id="@+id/tv_used" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:background="@drawable/bg_gradient" - android:paddingHorizontal="14dp" - android:paddingVertical="17dp" - android:text="已扣课时数:0" - android:textColor="@color/white" - android:textSize="16sp" - android:textStyle="bold" - android:visibility="gone" - app:layout_constraintTop_toTopOf="parent" /> - - <TextView - android:id="@+id/tv_buy" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginTop="18dp" - android:layout_marginEnd="15dp" - android:layout_marginBottom="10dp" - android:background="@drawable/bg_white_10dp" - android:paddingHorizontal="17dp" - android:paddingVertical="7dp" - android:text="续课" - android:textColor="@color/colorPrimary" - android:textSize="16sp" - android:textStyle="bold" - app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintLeft_toLeftOf="@+id/tv_2" - app:layout_constraintRight_toRightOf="@+id/tv_2" - app:layout_constraintTop_toBottomOf="@+id/tv_2" /> - - </androidx.constraintlayout.widget.ConstraintLayout> - - - <TextView - android:id="@+id/tv_filter" - android:layout_width="100dp" - android:layout_height="wrap_content" - android:layout_marginTop="16dp" - android:layout_marginEnd="14dp" - android:background="@drawable/bg_deep_grey_line_4dp" - android:drawableEnd="@mipmap/icon_nav_open" - android:paddingHorizontal="9dp" - android:paddingVertical="8dp" - android:text="全部记录" - android:textSize="16sp" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintTop_toBottomOf="@id/mll_used" /> - - <TextView - android:id="@+id/tv_month" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginStart="14dp" - android:layout_marginEnd="14dp" - android:drawableEnd="@mipmap/more_blue" - android:drawablePadding="3dp" - android:paddingVertical="8dp" - android:text="2023年3月" - android:textColor="@color/blue" - android:textSize="16sp" - android:textStyle="bold" - app:layout_constraintBaseline_toBaselineOf="@id/tv_filter" - app:layout_constraintStart_toStartOf="parent" /> - - <androidx.recyclerview.widget.RecyclerView - android:id="@+id/rv_record" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_marginTop="13dp" - app:layout_constraintTop_toBottomOf="@id/tv_filter" /> - </androidx.constraintlayout.widget.ConstraintLayout> - -</androidx.core.widget.NestedScrollView> \ No newline at end of file diff --git a/app/src/main/res/layout/activity_my_world_cup.xml b/app/src/main/res/layout/activity_my_world_cup.xml deleted file mode 100644 index 0237eed..0000000 --- a/app/src/main/res/layout/activity_my_world_cup.xml +++ /dev/null @@ -1,365 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:app="http://schemas.android.com/apk/res-auto" - android:layout_width="match_parent" - android:orientation="vertical" - android:background="@color/white" - android:layout_height="match_parent"> - <ImageView - android:layout_width="match_parent" - android:layout_height="match_parent" - app:layout_constraintTop_toTopOf="parent" - android:scaleType="fitXY" - android:src="@mipmap/bg_world_cup_1" - android:layout_marginTop="260dp"/> - - <View - android:id="@+id/bg_title" - android:layout_width="match_parent" - android:layout_height="80dp" - app:layout_constraintTop_toTopOf="parent" - android:background="@mipmap/bg_wc_title"/> - <cn.sinata.xldutils.view.TitleBar - android:id="@+id/titleBar" - android:layout_width="match_parent" - android:layout_height="52dp" - app:layout_constraintBottom_toBottomOf="@id/bg_title"/> - <androidx.coordinatorlayout.widget.CoordinatorLayout - android:layout_width="match_parent" - android:layout_marginTop="80dp" - android:layout_height="match_parent"> - <com.google.android.material.appbar.AppBarLayout - android:id="@+id/appbar" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:background="@color/transparent" - android:orientation="vertical"> - - <androidx.constraintlayout.widget.ConstraintLayout - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:paddingBottom="15dp" - app:layout_scrollFlags="scroll|enterAlwaysCollapsed"> - - <androidx.constraintlayout.widget.ConstraintLayout - android:id="@+id/cl_info" - android:layout_width="match_parent" - android:layout_height="wrap_content" - app:layout_constraintTop_toTopOf="parent"> - - <com.facebook.drawee.view.SimpleDraweeView - android:id="@+id/iv_avatar" - android:layout_width="87dp" - android:layout_height="87dp" - android:layout_margin="22dp" - app:actualImageScaleType="centerCrop" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent" - app:roundAsCircle="true" /> - - <TextView - android:id="@+id/tv_name" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginStart="13dp" - android:layout_marginTop="14dp" - android:text="暂无参赛人员" - android:textSize="21sp" - app:layout_constraintStart_toEndOf="@id/iv_avatar" - app:layout_constraintTop_toTopOf="@id/iv_avatar" /> - - <TextView - android:id="@+id/tv_change" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginTop="6dp" - android:drawableStart="@mipmap/exchange" - android:drawablePadding="6dp" - android:gravity="center" - android:text="切换人员" - android:textColor="#4EDBBD" - android:textSize="14sp" - app:layout_constraintStart_toStartOf="@id/tv_name" - app:layout_constraintTop_toBottomOf="@id/tv_name" /> - - <ImageView - android:id="@+id/iv_code" - android:layout_width="75dp" - android:layout_height="75dp" - android:layout_marginEnd="35dp" - android:layout_marginBottom="4dp" - app:layout_constraintBottom_toBottomOf="@id/iv_avatar" - app:layout_constraintEnd_toEndOf="parent" /> - - <TextView - android:id="@+id/tv_year" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginTop="25dp" - android:text="您的2024年场次排名" - android:textSize="12sp" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@id/iv_avatar" /> - - <androidx.constraintlayout.widget.ConstraintLayout - android:layout_width="match_parent" - android:layout_height="52dp" - android:layout_marginHorizontal="31dp" - android:layout_marginTop="14dp" - android:background="@drawable/bg_orange_30dp" - app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintTop_toBottomOf="@id/tv_year"> - - <TextView - android:id="@+id/tv_1" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginStart="15dp" - android:text="全国排名" - android:textColor="@color/white" - android:textSize="14sp" - app:layout_constraintBaseline_toBaselineOf="@id/tv_rank_country" - app:layout_constraintStart_toStartOf="parent" /> - - <TextView - android:id="@+id/tv_rank_country" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginStart="9dp" - android:text="0" - android:textColor="@color/white" - android:textSize="24sp" - android:textStyle="bold" - app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintStart_toEndOf="@id/tv_1" - app:layout_constraintTop_toTopOf="parent" /> - - <View - android:id="@+id/center" - android:layout_width="1dp" - android:layout_height="36dp" - android:background="@color/white" - app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent" /> - - <TextView - android:id="@+id/tv_city" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginStart="20dp" - android:text="当地排名" - android:textColor="@color/white" - android:textSize="14sp" - app:layout_constraintBaseline_toBaselineOf="@id/tv_rank_country" - app:layout_constraintStart_toEndOf="@id/center" /> - - <TextView - android:id="@+id/tv_rank_city" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginStart="9dp" - android:text="0" - android:textColor="@color/white" - android:textSize="24sp" - android:textStyle="bold" - app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintStart_toEndOf="@id/tv_city" - app:layout_constraintTop_toTopOf="parent" /> - </androidx.constraintlayout.widget.ConstraintLayout> - </androidx.constraintlayout.widget.ConstraintLayout> - - <TextView - android:id="@+id/tv_lose" - android:layout_width="wrap_content" - android:layout_height="46dp" - android:layout_marginTop="42dp" - android:gravity="center" - android:minWidth="90dp" - android:text="0" - android:textSize="27sp" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@id/cl_info" /> - - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginBottom="10dp" - android:text="负场次" - android:textSize="14sp" - app:layout_constraintBottom_toTopOf="@id/tv_lose" - app:layout_constraintEnd_toEndOf="@id/tv_lose" - app:layout_constraintStart_toStartOf="@id/tv_lose" /> - - <TextView - android:id="@+id/tv_win" - android:layout_width="wrap_content" - android:layout_height="46dp" - android:gravity="center" - android:minWidth="90dp" - android:text="0" - android:textSize="27sp" - app:layout_constraintEnd_toStartOf="@id/tv_lose" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="@id/tv_lose" /> - - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginBottom="10dp" - android:text="胜场次" - android:textSize="14sp" - app:layout_constraintBottom_toTopOf="@id/tv_lose" - app:layout_constraintEnd_toEndOf="@id/tv_win" - app:layout_constraintStart_toStartOf="@id/tv_win" /> - - <TextView - android:id="@+id/tv_win_rate" - android:layout_width="wrap_content" - android:layout_height="46dp" - android:gravity="center" - android:minWidth="90dp" - android:text="0" - android:textSize="27sp" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintStart_toEndOf="@id/tv_lose" - app:layout_constraintTop_toTopOf="@id/tv_lose" /> - - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginBottom="10dp" - android:text="胜率" - android:textSize="14sp" - app:layout_constraintBottom_toTopOf="@id/tv_lose" - app:layout_constraintEnd_toEndOf="@id/tv_win_rate" - app:layout_constraintStart_toStartOf="@id/tv_win_rate" /> - - - </androidx.constraintlayout.widget.ConstraintLayout> - - <com.flyco.tablayout.SlidingTabLayout - android:id="@+id/tab_bar" - android:layout_width="match_parent" - android:layout_height="44dp" - app:layout_constraintTop_toBottomOf="@id/tv_win" - app:tl_indicator_color="@color/colorDeepBlue" - app:tl_indicator_corner_radius="1dp" - app:tl_indicator_height="2dp" - app:tl_indicator_width="50dp" - app:tl_tab_space_equal="true" - app:tl_textSelectColor="@color/colorDeepBlue" - app:tl_textUnselectColor="@color/textColor66" - app:tl_textsize="16sp" /> - </com.google.android.material.appbar.AppBarLayout> - - <androidx.viewpager.widget.ViewPager - android:id="@+id/view_pager" - android:layout_width="match_parent" - android:layout_height="match_parent" - app:layout_behavior="com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior" /> - </androidx.coordinatorlayout.widget.CoordinatorLayout> - <LinearLayout - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:orientation="horizontal" - android:id="@+id/rg_region" - android:visibility="gone" - android:layout_marginBottom="4dp" - app:layout_constraintBottom_toBottomOf="parent"> - <TextView - android:id="@+id/rb_country" - android:layout_width="0dp" - android:layout_height="wrap_content" - android:layout_weight="1" - android:layout_marginStart="40dp" - android:text="全国" - android:paddingVertical="10dp" - android:gravity="center" - android:textColor="@color/selector_white_orange" - android:background="@drawable/selector_rank_region"/> - <TextView - android:id="@+id/rb_city" - android:layout_width="0dp" - android:layout_height="wrap_content" - android:layout_weight="1" - android:layout_marginStart="20dp" - android:layout_marginEnd="40dp" - android:paddingVertical="10dp" - android:gravity="center" - android:checked="true" - android:textColor="@color/selector_white_orange" - android:background="@drawable/selector_rank_region"/> - </LinearLayout> - <LinearLayout - android:layout_width="match_parent" - android:layout_height="50dp" - android:id="@+id/bg" - android:visibility="gone" - android:layout_marginHorizontal="14dp" - android:layout_marginBottom="4dp" - android:background="@drawable/bg_white_orange_line_2dp" - app:layout_constraintBottom_toTopOf="@id/rg_region" - android:orientation="horizontal"> - <RelativeLayout - android:layout_width="0dp" - android:layout_height="match_parent" - android:layout_weight="50"> - <ImageView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/iv_rank" - android:layout_centerInParent="true" /> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_rank" - android:layout_centerInParent="true" - android:textColor="@color/textColor66" - android:textStyle="bold" - android:textSize="12sp" - android:text="4"/> - </RelativeLayout> - <LinearLayout - android:layout_width="0dp" - android:layout_height="match_parent" - android:gravity="center_vertical" - android:layout_weight="122"> - <com.facebook.drawee.view.SimpleDraweeView - android:layout_width="34dp" - android:layout_height="34dp" - android:id="@+id/iv_mine_avatar" - android:layout_marginStart="25dp" - app:roundAsCircle="true" - app:placeholderImage="@color/page_bg"/> - <TextView - android:id="@+id/tv_mine_name" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="张*" - android:textSize="14sp" - android:layout_marginStart="10dp" - android:textColor="@color/textColor" - android:textStyle="bold"/> - </LinearLayout> - <TextView - android:id="@+id/tv_count" - android:layout_width="0dp" - android:layout_height="match_parent" - android:layout_weight="120" - android:text="200" - android:textSize="12sp" - android:gravity="center"/> - <TextView - android:id="@+id/tv_rate" - android:layout_width="0dp" - android:layout_height="match_parent" - android:layout_weight="73" - android:text="90%" - android:textSize="12sp" - android:gravity="center"/> - </LinearLayout> -</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/activity_online_shop.xml b/app/src/main/res/layout/activity_online_shop.xml deleted file mode 100644 index e238cd8..0000000 --- a/app/src/main/res/layout/activity_online_shop.xml +++ /dev/null @@ -1,52 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="match_parent" - xmlns:app="http://schemas.android.com/apk/res-auto" - android:background="@drawable/bg_gradient_vertical"> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - app:layout_constraintTop_toTopOf="parent" - app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintEnd_toEndOf="parent" - - android:text="即将上线,敬请期待" - android:textColor="@color/white" - android:textStyle="bold" - android:textSize="18sp" - android:drawablePadding="30dp" - android:drawableBottom="@mipmap/open_soon" - android:gravity="center"/> - <ImageView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintEnd_toEndOf="parent" - android:layout_marginBottom="20dp" - android:src="@mipmap/logo"/> - <TextView - android:id="@+id/tv1" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="线上商城" - app:layout_constraintTop_toTopOf="parent" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintEnd_toEndOf="parent" - android:textColor="@color/white" - android:textSize="16sp" - android:textStyle="bold" - android:layout_marginTop="40dp"/> - <ImageView - android:id="@+id/iv_back" - android:layout_marginStart="4dp" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="@id/tv1" - app:layout_constraintBottom_toBottomOf="@id/tv1" - android:padding="10dp" - android:src="@mipmap/back_white"/> -</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/activity_report.xml b/app/src/main/res/layout/activity_report.xml deleted file mode 100644 index f526171..0000000 --- a/app/src/main/res/layout/activity_report.xml +++ /dev/null @@ -1,113 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="match_parent" - xmlns:app="http://schemas.android.com/apk/res-auto"> - <androidx.constraintlayout.widget.ConstraintLayout - android:layout_width="match_parent" - android:layout_height="wrap_content"> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_height" - app:layout_constraintTop_toTopOf="parent" - app:layout_constraintStart_toStartOf="parent" - android:layout_marginTop="51dp" - android:textColor="@color/colorTextDark" - android:textSize="23sp" - android:drawablePadding="8dp" - android:layout_marginStart="25dp" - android:drawableStart="@mipmap/shengao" - android:text="0cm"/> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - app:layout_constraintBottom_toTopOf="@id/tv_height" - app:layout_constraintStart_toStartOf="@id/tv_height" - android:text="身高" - android:textSize="14sp" - android:textColor="@color/colorTextDark" - android:textStyle="bold" - android:layout_marginBottom="11dp"/> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_bmi" - app:layout_constraintEnd_toEndOf="parent" - android:layout_marginEnd="13dp" - app:layout_constraintBaseline_toBaselineOf="@id/tv_height" - android:textColor="@color/colorTextDark" - android:textSize="23sp" - android:drawablePadding="8dp" - android:drawableStart="@mipmap/bmi" - android:text="0.0"/> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - app:layout_constraintBottom_toTopOf="@id/tv_height" - app:layout_constraintStart_toStartOf="@id/tv_bmi" - android:text="BMI" - android:textSize="14sp" - android:textColor="@color/colorTextDark" - android:textStyle="bold" - android:layout_marginBottom="11dp"/> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_wight" - app:layout_constraintEnd_toStartOf="@id/tv_bmi" - app:layout_constraintStart_toEndOf="@id/tv_height" - android:layout_marginEnd="13dp" - app:layout_constraintBaseline_toBaselineOf="@id/tv_height" - android:textColor="@color/colorTextDark" - android:textSize="23sp" - android:drawablePadding="8dp" - android:drawableStart="@mipmap/tizhong" - android:text="0.0"/> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - app:layout_constraintBottom_toTopOf="@id/tv_height" - app:layout_constraintStart_toStartOf="@id/tv_wight" - android:text="体重" - android:textSize="14sp" - android:textColor="@color/colorTextDark" - android:textStyle="bold" - android:layout_marginBottom="11dp"/> - <View - android:layout_width="match_parent" - android:layout_height="1dp" - android:background="@color/dividing_line_color" - app:layout_constraintTop_toBottomOf="@id/tv_wight" - android:layout_marginTop="30dp" - android:layout_marginHorizontal="19dp"/> - <ImageView - android:layout_width="match_parent" - android:layout_height="0dp" - android:id="@+id/iv_report_1" - app:layout_constraintTop_toBottomOf="@id/tv_wight" - android:layout_marginTop="70dp"/> - <ImageView - android:layout_width="match_parent" - android:layout_height="0dp" - android:id="@+id/iv_report_2" - app:layout_constraintTop_toBottomOf="@id/iv_report_1" - android:layout_marginTop="1dp"/> - <ImageView - android:layout_width="match_parent" - android:layout_height="0dp" - android:id="@+id/iv_report_3" - app:layout_constraintTop_toBottomOf="@id/iv_report_2" - android:layout_marginTop="1dp"/> - <TextView - android:visibility="gone" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_empty" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintTop_toBottomOf="@id/tv_wight" - android:layout_marginTop="100dp" - android:text="暂无报告"/> - </androidx.constraintlayout.widget.ConstraintLayout> -</androidx.core.widget.NestedScrollView> \ No newline at end of file diff --git a/app/src/main/res/layout/activity_search.xml b/app/src/main/res/layout/activity_search.xml deleted file mode 100644 index 7944b36..0000000 --- a/app/src/main/res/layout/activity_search.xml +++ /dev/null @@ -1,216 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:focusableInTouchMode="true" - android:focusable="true" - xmlns:app="http://schemas.android.com/apk/res-auto"> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:drawableStart="@mipmap/back" - android:padding="12dp" - app:layout_constraintTop_toTopOf="parent" - app:layout_constraintStart_toStartOf="parent" - android:layout_marginTop="26dp" - android:id="@+id/iv_back"/> - <CheckBox - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_subject" - android:text="学科" - android:drawableEnd="@drawable/selector_filter_icon" - app:layout_constraintEnd_toEndOf="parent" - android:drawablePadding="6dp" - app:layout_constraintBaseline_toBaselineOf="@id/iv_back" - style="@style/style_common_text" - android:layout_marginEnd="2dp" - android:background="@null" - android:button="@null" - android:visibility="gone" - android:padding="10dp"/> - <EditText - android:layout_width="0dp" - android:hint="搜索运动营/老师" - android:background="@drawable/bg_grey_16dp" - android:paddingTop="6dp" - android:paddingBottom="6dp" - android:drawableStart="@mipmap/icon_search_gray" - android:drawablePadding="8dp" - android:paddingStart="13dp" - app:layout_constraintBaseline_toBaselineOf="@id/iv_back" - app:layout_constraintStart_toEndOf="@id/iv_back" - app:layout_constraintEnd_toStartOf="@id/tv_subject" - android:id="@+id/et_search" - android:singleLine="true" - android:imeOptions="actionSearch" - android:layout_marginStart="10dp" - android:layout_marginEnd="5dp" - android:textSize="13sp" - android:layout_height="wrap_content"/> - <cn.sinata.xldutils.view.SwipeRefreshRecyclerLayout - android:layout_width="match_parent" - android:layout_height="0dp" - android:id="@+id/mSwipeReLayout" - app:layout_constraintTop_toBottomOf="@id/et_search" - app:layout_constraintBottom_toBottomOf="parent" - android:layout_marginTop="6dp"/> - <View - android:layout_width="match_parent" - android:layout_height="1px" - app:layout_constraintTop_toBottomOf="@id/et_search" - android:background="@color/dividing_line_color" - android:layout_marginTop="8dp"/> - <View - android:layout_width="match_parent" - android:layout_height="0dp" - app:layout_constraintTop_toTopOf="@id/mSwipeReLayout" - app:layout_constraintBottom_toBottomOf="parent" - android:id="@+id/bg" - android:visibility="gone" - android:background="@color/halfTrans"/> - <androidx.constraintlayout.widget.ConstraintLayout - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:id="@+id/cl_filter" - android:visibility="gone" - android:background="@color/white" - app:layout_constraintTop_toTopOf="@id/mSwipeReLayout"> - <TextView - android:id="@+id/tv_title_subject" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginStart="12dp" - android:layout_marginTop="14dp" - android:text="选择学科" - android:textColor="@color/textColor" - android:textSize="20sp" - android:textStyle="bold" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent" /> - <CheckedTextView - android:layout_width="88dp" - android:layout_height="wrap_content" - app:layout_constraintTop_toBottomOf="@id/tv_title_subject" - android:text="全部" - android:layout_marginTop="14dp" - android:id="@+id/tv_all" - android:checked="true" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintEnd_toStartOf="@id/tv_chinese" - style="@style/style_tv_option"/> - <CheckedTextView - android:layout_width="88dp" - android:layout_height="wrap_content" - android:text="语文" - android:id="@+id/tv_chinese" - app:layout_constraintBaseline_toBaselineOf="@id/tv_all" - app:layout_constraintStart_toEndOf="@id/tv_all" - app:layout_constraintEnd_toStartOf="@id/tv_math" - style="@style/style_tv_option"/> - <CheckedTextView - android:layout_width="88dp" - android:id="@+id/tv_math" - android:layout_height="wrap_content" - app:layout_constraintBaseline_toBaselineOf="@id/tv_all" - android:text="数学" - app:layout_constraintStart_toEndOf="@id/tv_chinese" - app:layout_constraintEnd_toEndOf="parent" - style="@style/style_tv_option"/> - <CheckedTextView - android:layout_width="88dp" - android:layout_height="wrap_content" - app:layout_constraintTop_toBottomOf="@id/tv_all" - android:text="英语" - android:layout_marginTop="14dp" - android:id="@+id/tv_english" - app:layout_constraintStart_toStartOf="@id/tv_all" - style="@style/style_tv_option"/> - <CheckedTextView - android:layout_width="88dp" - android:layout_height="wrap_content" - app:layout_constraintTop_toTopOf="@id/tv_english" - android:text="物理" - android:id="@+id/tv_physics" - app:layout_constraintStart_toStartOf="@id/tv_chinese" - style="@style/style_tv_option"/> - <CheckedTextView - android:layout_width="88dp" - android:layout_height="wrap_content" - app:layout_constraintTop_toTopOf="@id/tv_english" - android:text="化学" - android:id="@+id/tv_chemistry" - app:layout_constraintStart_toStartOf="@id/tv_math" - style="@style/style_tv_option"/> - <CheckedTextView - android:layout_width="88dp" - android:layout_height="wrap_content" - app:layout_constraintTop_toBottomOf="@id/tv_english" - android:text="生物" - android:layout_marginTop="14dp" - android:id="@+id/tv_biology" - app:layout_constraintStart_toStartOf="@id/tv_all" - style="@style/style_tv_option"/> - <CheckedTextView - android:layout_width="88dp" - android:layout_height="wrap_content" - app:layout_constraintTop_toTopOf="@id/tv_biology" - android:text="政治" - android:id="@+id/tv_politics" - app:layout_constraintStart_toStartOf="@id/tv_chinese" - style="@style/style_tv_option"/> - <CheckedTextView - android:layout_width="88dp" - android:layout_height="wrap_content" - app:layout_constraintTop_toTopOf="@id/tv_biology" - android:text="地理" - android:id="@+id/tv_geography" - app:layout_constraintStart_toStartOf="@id/tv_math" - style="@style/style_tv_option"/> - <CheckedTextView - android:layout_width="88dp" - android:layout_height="wrap_content" - app:layout_constraintTop_toBottomOf="@id/tv_biology" - android:text="历史" - android:layout_marginTop="14dp" - android:id="@+id/tv_history" - app:layout_constraintStart_toStartOf="@id/tv_all" - style="@style/style_tv_option"/> - <CheckedTextView - android:layout_width="88dp" - android:layout_height="wrap_content" - app:layout_constraintTop_toTopOf="@id/tv_history" - android:text="其他" - android:id="@+id/tv_other" - app:layout_constraintStart_toStartOf="@id/tv_chinese" - style="@style/style_tv_option"/> - <LinearLayout - android:layout_width="match_parent" - android:layout_height="wrap_content" - app:layout_constraintTop_toBottomOf="@id/tv_history" - android:layout_marginTop="22dp"> - <TextView - android:layout_width="0dp" - android:layout_height="wrap_content" - android:layout_weight="1" - android:text="重置" - android:textColor="@color/textColor99" - android:gravity="center" - android:paddingTop="10dp" - android:id="@+id/tv_reset" - android:paddingBottom="10dp" - android:background="@color/colorBGDisable"/> - <TextView - android:layout_width="0dp" - android:layout_height="wrap_content" - android:layout_weight="1" - android:text="确定" - android:textColor="@color/white" - android:gravity="center" - android:paddingTop="10dp" - android:id="@+id/tv_sure" - android:paddingBottom="10dp" - android:background="@drawable/bg_gradient"/> - </LinearLayout> - </androidx.constraintlayout.widget.ConstraintLayout> -</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_calendar.xml b/app/src/main/res/layout/dialog_calendar.xml deleted file mode 100644 index 05aa97b..0000000 --- a/app/src/main/res/layout/dialog_calendar.xml +++ /dev/null @@ -1,54 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="wrap_content" - xmlns:app="http://schemas.android.com/apk/res-auto" - android:background="@drawable/bg_white_top_20dp"> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_date" - app:layout_constraintTop_toTopOf="parent" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintEnd_toEndOf="parent" - android:text="2023年05月" - android:textSize="14sp" - android:textColor="@color/textColor" - android:textStyle="bold" - android:layout_marginTop="20dp"/> - <com.haibin.calendarview.CalendarView - android:id="@+id/calendar" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:background="#fff" - android:layout_marginHorizontal="22dp" - app:month_view="com.dollearn.student.views.calendar.SimpleMonthView" - app:calendar_height="46dp" - app:day_text_size="11sp" - app:current_month_text_color="@color/textColor66" - app:current_day_text_color="@color/colorTextOrange" - app:other_month_text_color="#e1e1e1" - app:scheme_text_color="#333" - app:scheme_theme_color="#333" - app:selected_text_color="#fff" - app:selected_theme_color="@color/colorAccent" - app:week_bar_view="com.dollearn.student.views.calendar.SimpleWeekBar" - app:week_bar_height="33dp" - app:select_mode="single_mode" - android:elevation="2dp" - app:layout_constraintTop_toBottomOf="@id/tv_date" - android:layout_marginTop="12dp"/> - <TextView - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:id="@+id/tv_cancel" - android:text="取消" - android:textColor="@color/textColor" - android:textStyle="bold" - android:textSize="14sp" - android:paddingVertical="16dp" - android:gravity="center" - android:layout_marginHorizontal="20dp" - app:layout_constraintTop_toBottomOf="@id/calendar" - android:background="@color/page_bg"/> -</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_check_shops.xml b/app/src/main/res/layout/dialog_check_shops.xml deleted file mode 100644 index 2917175..0000000 --- a/app/src/main/res/layout/dialog_check_shops.xml +++ /dev/null @@ -1,54 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:app="http://schemas.android.com/apk/res-auto" - xmlns:tools="http://schemas.android.com/tools" - android:layout_width="match_parent" - android:layout_height="match_parent"> - - <RelativeLayout - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:background="@drawable/shape_white_top_20r" - app:layout_constraintBottom_toBottomOf="parent"> - - <ImageView - android:id="@+id/iv_close" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_alignParentRight="true" - android:layout_marginStart="10dp" - android:layout_marginTop="10dp" - android:layout_marginEnd="10dp" - android:layout_marginBottom="10dp" - android:padding="10dp" - android:src="@mipmap/icon_close" /> - - <TextView - android:id="@+id/mtv" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_centerHorizontal="true" - android:layout_marginTop="20dp" - android:text="参与门店" - android:textColor="@color/black" - android:textSize="16sp" - android:textStyle="bold" /> - - <TextView - android:id="@+id/mtvinfo" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_below="@+id/mtv" - android:layout_marginTop="20dp" - android:layout_marginBottom="60dp" - android:gravity="center_horizontal" - android:minHeight="100dp" - android:paddingHorizontal="20dp" - android:textColor="@color/textColor66" - android:textSize="14sp" - tools:text="门店,门店,门店,门店,门店,门店," /> - - - </RelativeLayout> - -</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_confirm_shop.xml b/app/src/main/res/layout/dialog_confirm_shop.xml deleted file mode 100644 index 5abcc53..0000000 --- a/app/src/main/res/layout/dialog_confirm_shop.xml +++ /dev/null @@ -1,120 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="match_parent" - xmlns:app="http://schemas.android.com/apk/res-auto"> - <androidx.constraintlayout.widget.ConstraintLayout - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:background="@drawable/bg_white_10dp" - app:layout_constraintTop_toTopOf="parent" - android:layout_marginHorizontal="14dp"> - <TextView - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:id="@+id/tv_title" - app:layout_constraintTop_toTopOf="parent" - android:text="请确认报名门店" - android:textSize="16sp" - android:textStyle="bold" - android:textColor="@color/textColor" - android:gravity="center" - android:layout_marginTop="17dp"/> - <com.facebook.drawee.view.SimpleDraweeView - android:layout_width="match_parent" - android:layout_height="180dp" - android:id="@+id/iv_shop" - app:layout_constraintTop_toBottomOf="@id/tv_title" - android:layout_marginTop="20dp" - app:actualImageScaleType="centerCrop" - app:placeholderImage="@color/page_bg"/> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_change_shop" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintTop_toTopOf="@id/tv_name" - app:layout_constraintBottom_toBottomOf="@id/tv_distance" - android:paddingHorizontal="30dp" - android:text="更换门店" - android:textSize="12sp" - android:textColor="@color/textColor" - android:textStyle="bold" - android:drawableTop="@mipmap/edit" - android:drawablePadding="8dp"/> - <View - android:layout_width="1dp" - android:layout_height="62dp" - android:background="@color/dividing_line_color" - app:layout_constraintTop_toTopOf="@id/tv_change_shop" - app:layout_constraintEnd_toStartOf="@id/tv_change_shop" - app:layout_constraintBottom_toBottomOf="@id/tv_change_shop"/> - <TextView - android:layout_width="0dp" - android:layout_height="wrap_content" - android:id="@+id/tv_name" - app:layout_constraintTop_toBottomOf="@id/iv_shop" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintEnd_toStartOf="@id/tv_change_shop" - android:layout_marginEnd="6dp" - android:layout_margin="14dp" - android:text="成都非遗玩湃全科体育公园" - style="@style/style_common_text" - android:textStyle="bold" /> - <TextView - android:id="@+id/tv_address" - android:layout_width="0dp" - android:layout_height="wrap_content" - app:layout_constraintStart_toStartOf="@id/tv_name" - app:layout_constraintEnd_toEndOf="@id/tv_name" - app:layout_constraintTop_toBottomOf="@id/tv_name" - android:textSize="12sp" - android:layout_marginTop="5dp" - android:textColor="@color/textColor" - android:text="光华大道成都非遗博览园"/> - <TextView - android:id="@+id/tv_distance" - android:layout_width="0dp" - android:layout_height="wrap_content" - app:layout_constraintStart_toStartOf="@id/tv_name" - app:layout_constraintEnd_toEndOf="@id/tv_name" - app:layout_constraintTop_toBottomOf="@id/tv_address" - android:textSize="10sp" - android:layout_marginTop="5dp" - android:textColor="@color/textColor" - android:text="距你2.7km"/> - - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_action" - app:layout_constraintTop_toBottomOf="@id/tv_distance" - android:layout_marginTop="23dp" - app:layout_constraintBottom_toBottomOf="parent" - android:layout_marginBottom="18dp" - app:layout_constraintStart_toEndOf="@id/tv_cancel" - app:layout_constraintEnd_toEndOf="parent" - android:textColor="@color/white" - android:textSize="14sp" - android:text="确认支付" - android:paddingVertical="10dp" - android:paddingHorizontal="40dp" - android:textStyle="bold" - android:background="@drawable/bg_orange_20dp"/> - - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_cancel" - app:layout_constraintBaseline_toBaselineOf="@id/tv_action" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintEnd_toStartOf="@id/tv_action" - android:textColor="@color/colorPrimary" - android:textSize="14sp" - android:text="取消" - android:paddingVertical="10dp" - android:paddingHorizontal="57dp" - android:textStyle="bold" - android:background="@drawable/bg_orange_line_20dp"/> - </androidx.constraintlayout.widget.ConstraintLayout> -</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_confirm_shops.xml b/app/src/main/res/layout/dialog_confirm_shops.xml deleted file mode 100644 index cad1f00..0000000 --- a/app/src/main/res/layout/dialog_confirm_shops.xml +++ /dev/null @@ -1,69 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="match_parent" - xmlns:app="http://schemas.android.com/apk/res-auto"> - <androidx.constraintlayout.widget.ConstraintLayout - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:background="@drawable/bg_white_10dp" - app:layout_constraintTop_toTopOf="parent" - android:layout_marginHorizontal="14dp"> - <TextView - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:id="@+id/tv_title" - app:layout_constraintTop_toTopOf="parent" - android:text="参与门店" - android:textSize="16sp" - android:textStyle="bold" - android:textColor="@color/textColor" - android:gravity="center" - android:layout_marginTop="17dp"/> - <TextView - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:id="@+id/tv_name" - app:layout_constraintTop_toBottomOf="@id/tv_title" - android:minHeight="90dp" - android:textColor="@color/textColor" - android:textStyle="bold" - android:gravity="center_horizontal" - android:textSize="13sp" - android:lineSpacingExtra="10dp" - android:layout_marginHorizontal="8dp" - android:layout_marginTop="18dp"/> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_action" - app:layout_constraintTop_toBottomOf="@id/tv_name" - android:layout_marginTop="23dp" - app:layout_constraintBottom_toBottomOf="parent" - android:layout_marginBottom="18dp" - app:layout_constraintStart_toEndOf="@id/tv_cancel" - app:layout_constraintEnd_toEndOf="parent" - android:textColor="@color/white" - android:textSize="14sp" - android:text="确认支付" - android:paddingVertical="10dp" - android:paddingHorizontal="40dp" - android:textStyle="bold" - android:background="@drawable/bg_orange_20dp"/> - - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_cancel" - app:layout_constraintBaseline_toBaselineOf="@id/tv_action" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintEnd_toStartOf="@id/tv_action" - android:textColor="@color/colorPrimary" - android:textSize="14sp" - android:text="取消" - android:paddingVertical="10dp" - android:paddingHorizontal="57dp" - android:textStyle="bold" - android:background="@drawable/bg_orange_line_20dp"/> - </androidx.constraintlayout.widget.ConstraintLayout> -</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_getmycourse.xml b/app/src/main/res/layout/dialog_getmycourse.xml deleted file mode 100644 index 5ac2cd9..0000000 --- a/app/src/main/res/layout/dialog_getmycourse.xml +++ /dev/null @@ -1,74 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:app="http://schemas.android.com/apk/res-auto" - xmlns:tools="http://schemas.android.com/tools" - android:layout_width="match_parent" - android:layout_height="match_parent"> - - <LinearLayout - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:background="@drawable/shape_white_top_20r" - android:orientation="vertical" - app:layout_constraintBottom_toBottomOf="parent"> - - - <TextView - android:id="@+id/mtvNeedClassHour" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginStart="14dp" - android:layout_marginTop="20dp" - android:text="所需课时数:30" - android:textColor="@color/black" - android:textSize="16sp" - android:textStyle="bold" /> - - <androidx.recyclerview.widget.RecyclerView - android:id="@+id/rv_list" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_marginTop="10dp" - android:maxHeight="300dp" /> - - - <LinearLayout - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_gravity="center_horizontal" - android:layout_marginTop="10dp" - android:orientation="horizontal"> - - - <TextView - android:id="@+id/tv_cancel" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - - android:background="@drawable/bg_orange_line_20dp" - android:paddingHorizontal="57dp" - android:paddingVertical="10dp" - android:text="取消" - android:textColor="@color/colorPrimary" - android:textSize="14sp" - android:textStyle="bold" /> - - <TextView - android:id="@+id/tv_action" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginStart="20dp" - android:layout_marginBottom="18dp" - android:background="@drawable/bg_orange_20dp" - android:paddingHorizontal="40dp" - android:paddingVertical="10dp" - android:text="确认支付" - android:textColor="@color/white" - android:textSize="14sp" - android:textStyle="bold" /> - </LinearLayout> - - - </LinearLayout> - -</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_map_type.xml b/app/src/main/res/layout/dialog_map_type.xml deleted file mode 100644 index 19a7892..0000000 --- a/app/src/main/res/layout/dialog_map_type.xml +++ /dev/null @@ -1,49 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="match_parent" - xmlns:app="http://schemas.android.com/apk/res-auto"> - <LinearLayout - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:orientation="vertical" - app:layout_constraintTop_toTopOf="parent" - android:background="@drawable/bg_white_top_20dp"> - <TextView - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:id="@+id/tv_gaode" - android:text="高德地图" - android:layout_marginTop="5dp" - android:gravity="center" - android:paddingVertical="12dp" - style="@style/style_common_text"/> - <View - android:layout_width="match_parent" - android:layout_height="1px" - android:background="@color/dividing_line_color"/> - <TextView - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:id="@+id/tv_baidu" - android:text="百度地图" - android:layout_marginTop="5dp" - android:gravity="center" - android:paddingVertical="12dp" - style="@style/style_common_text"/> - <View - android:layout_width="match_parent" - android:layout_height="1px" - android:background="@color/dividing_line_color"/> - <TextView - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:id="@+id/tv_tencent" - android:text="腾讯地图" - android:layout_marginTop="5dp" - android:gravity="center" - android:paddingVertical="12dp" - android:layout_marginBottom="5dp" - style="@style/style_common_text"/> - </LinearLayout> -</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_msg.xml b/app/src/main/res/layout/dialog_msg.xml deleted file mode 100644 index 4523432..0000000 --- a/app/src/main/res/layout/dialog_msg.xml +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="match_parent" - xmlns:app="http://schemas.android.com/apk/res-auto" - android:background="@drawable/bg_white_2dp"> - <TextView - android:layout_width="match_parent" - android:layout_height="wrap_content" - app:layout_constraintTop_toTopOf="parent" - android:layout_marginTop="13dp" - android:layout_marginBottom="10dp" - android:gravity="center" - android:lineSpacingExtra="5dp" - android:textSize="16sp" - android:textColor="@color/textColor" - android:textStyle="bold" - android:id="@+id/tv_msg" - app:layout_constraintBottom_toBottomOf="parent" - android:text="我们已收到您的意见反馈\n您的意见建议对我们很重要\n谢谢!"/> -</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_pay.xml b/app/src/main/res/layout/dialog_pay.xml deleted file mode 100644 index f32349f..0000000 --- a/app/src/main/res/layout/dialog_pay.xml +++ /dev/null @@ -1,103 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:app="http://schemas.android.com/apk/res-auto" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:background="@drawable/bg_white_top_20dp" - android:paddingBottom="25dp"> - <RadioGroup - android:id="@+id/rg_pay" - android:layout_width="match_parent" - android:layout_marginHorizontal="15dp" - android:layout_height="wrap_content" - app:layout_constraintTop_toTopOf="parent"> - <RadioButton - android:id="@+id/tv_wx" - style="@style/style_item_pay" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:checked="true" - android:layout_marginTop="15dp" - android:drawableStart="@mipmap/icon_vx" - android:text="微信支付" /> - <View - android:id="@+id/line1" - android:layout_width="match_parent" - android:layout_height="1px" - android:background="@color/dividing_line_color" /> - <RadioButton - android:id="@+id/tv_ali" - style="@style/style_item_pay" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:drawableStart="@mipmap/icon_alipay" - android:text="支付宝支付" /> - <View - android:id="@+id/line2" - android:layout_width="match_parent" - android:layout_height="1px" - android:background="@color/dividing_line_color" /> - <RadioButton - android:id="@+id/tv_coin" - style="@style/style_item_pay" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:drawableStart="@mipmap/coin" - android:text="玩湃币支付" /> - <View - android:id="@+id/line" - android:layout_width="match_parent" - android:layout_height="1px" - android:background="@color/dividing_line_color" /> - <RadioButton - android:id="@+id/tv_course" - style="@style/style_item_pay" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:drawableStart="@mipmap/keshi" - android:text="课时支付" /> - <View - android:id="@+id/line3" - android:layout_width="match_parent" - android:layout_height="1px" - android:background="@color/dividing_line_color" /> - <RadioButton - android:id="@+id/tv_integral" - style="@style/style_item_pay" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:drawableStart="@mipmap/keshi" - android:text="积分支付" /> - <View - android:id="@+id/line4" - android:layout_width="match_parent" - android:layout_height="1px" - android:background="@color/dividing_line_color" /> - </RadioGroup> - - <TextView - android:id="@+id/tv_cancel" - style="@style/style_btn_cancel" - android:layout_width="0dp" - android:layout_height="wrap_content" - android:layout_marginStart="40dp" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintEnd_toStartOf="@id/tv_pay" - android:layout_marginTop="20dp" - android:layout_marginEnd="10dp" - android:text="取消" - app:layout_constraintTop_toBottomOf="@id/rg_pay" /> - - <TextView - android:id="@+id/tv_pay" - style="@style/style_btn_action" - android:layout_width="0dp" - app:layout_constraintStart_toEndOf="@id/tv_cancel" - app:layout_constraintEnd_toEndOf="parent" - android:layout_height="wrap_content" - android:layout_marginStart="10dp" - android:layout_marginTop="20dp" - android:layout_marginEnd="40dp" - android:text="确认支付" - app:layout_constraintTop_toBottomOf="@id/rg_pay" /> -</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_pay_by_course.xml b/app/src/main/res/layout/dialog_pay_by_course.xml deleted file mode 100644 index 5517d5d..0000000 --- a/app/src/main/res/layout/dialog_pay_by_course.xml +++ /dev/null @@ -1,52 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:app="http://schemas.android.com/apk/res-auto" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:background="@drawable/bg_white_top_20dp" - android:paddingBottom="25dp"> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_count" - app:layout_constraintTop_toTopOf="parent" - app:layout_constraintStart_toStartOf="parent" - android:textSize="16sp" - android:textColor="@color/textColor" - android:textStyle="bold" - android:text="所需课时数:0" - android:layout_marginStart="15dp" - android:layout_marginTop="20dp"/> - - <androidx.recyclerview.widget.RecyclerView - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:id="@+id/rv_course" - app:layout_constraintTop_toBottomOf="@id/tv_count"/> - - <TextView - android:id="@+id/tv_cancel" - style="@style/style_btn_cancel" - android:layout_width="0dp" - android:layout_height="wrap_content" - android:layout_marginStart="40dp" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintEnd_toStartOf="@id/tv_pay" - android:layout_marginTop="20dp" - android:layout_marginEnd="10dp" - android:text="取消" - app:layout_constraintTop_toBottomOf="@id/rv_course" /> - - <TextView - android:id="@+id/tv_pay" - style="@style/style_btn_action" - android:layout_width="0dp" - app:layout_constraintStart_toEndOf="@id/tv_cancel" - app:layout_constraintEnd_toEndOf="parent" - android:layout_height="wrap_content" - android:layout_marginStart="10dp" - android:layout_marginTop="20dp" - android:layout_marginEnd="40dp" - android:text="确认支付" - app:layout_constraintTop_toBottomOf="@id/rv_course" /> -</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_wfp_classhour.xml b/app/src/main/res/layout/dialog_wfp_classhour.xml deleted file mode 100644 index 3f2cfe0..0000000 --- a/app/src/main/res/layout/dialog_wfp_classhour.xml +++ /dev/null @@ -1,77 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:tools="http://schemas.android.com/tools" - android:layout_width="match_parent" - android:layout_height="match_parent"> - - - <LinearLayout - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_centerInParent="true" - android:layout_marginStart="45dp" - android:layout_marginTop="45dp" - android:layout_marginEnd="45dp" - android:layout_marginBottom="45dp" - android:background="@drawable/shape_white_8r" - android:gravity="center_horizontal" - android:orientation="vertical"> - - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginTop="24dp" - android:text="分配课时" - android:textStyle="bold" - android:textColor="@color/black" - android:textSize="18sp" /> - - <TextView - android:id="@+id/mtvinfo" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginTop="10dp" - android:textColor="@color/colorPrimary" - android:textSize="14sp" - tools:text="未分配课时数:100" /> - - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginTop="12dp" - android:text="分配运动营:" - android:textColor="@color/black" - android:textSize="14sp" /> - - <androidx.recyclerview.widget.RecyclerView - android:id="@+id/mrl" - android:maxHeight="200dp" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginTop="20dp" /> - - <LinearLayout - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginTop="20dp" - android:layout_marginBottom="25dp"> - - <TextView - android:id="@+id/tv_cancel" - style="@style/style_btn_cancel" - android:layout_width="120dp" - android:layout_height="wrap_content" - android:background="@drawable/bg_btn_disable" - android:text="关闭" - android:textColor="@color/white" /> - - <TextView - android:id="@+id/tv_action" - style="@style/style_btn_action" - android:layout_width="120dp" - android:layout_height="wrap_content" - android:layout_marginStart="20dp" - android:text="确认" /> - </LinearLayout> - </LinearLayout> -</RelativeLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_blank.xml b/app/src/main/res/layout/item_blank.xml deleted file mode 100644 index 74fcbd7..0000000 --- a/app/src/main/res/layout/item_blank.xml +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="wrap_content" - xmlns:app="http://schemas.android.com/apk/res-auto"> - <EditText - app:layout_constraintTop_toTopOf="parent" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:id="@+id/et_answer" - android:minHeight="60dp" - android:paddingTop="6dp" - android:paddingBottom="6dp" - android:gravity="top" - android:textSize="14sp" - android:hint="请输入您的答案(50字以内)" - android:maxLength="50" - android:textColor="@color/textColor" - android:paddingStart="10dp" - android:paddingEnd="10dp" - android:layout_marginTop="10dp" - android:background="@drawable/selector_bg_et_focus"/> -</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_class_hour.xml b/app/src/main/res/layout/item_class_hour.xml deleted file mode 100644 index 4398452..0000000 --- a/app/src/main/res/layout/item_class_hour.xml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:tools="http://schemas.android.com/tools" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:orientation="horizontal" - android:paddingTop="10dp"> - - <View - android:id="@+id/vchoose" - android:layout_width="20dp" - android:layout_height="20dp" - android:layout_gravity="center" - android:background="@mipmap/coupon_checked" /> - - <TextView - android:id="@+id/mtvName" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginStart="13sp" - android:textColor="@color/black" - android:textSize="14sp" - tools:text="羽毛球课" /> -</LinearLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_coin.xml b/app/src/main/res/layout/item_coin.xml deleted file mode 100644 index e093045..0000000 --- a/app/src/main/res/layout/item_coin.xml +++ /dev/null @@ -1,46 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="wrap_content" - xmlns:app="http://schemas.android.com/apk/res-auto"> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_reason" - app:layout_constraintTop_toTopOf="parent" - app:layout_constraintStart_toStartOf="parent" - android:text="变动原因" - android:textSize="12sp" - android:textStyle="bold" - android:textColor="@color/textColor" - android:layout_margin="14dp"/> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_time" - app:layout_constraintStart_toStartOf="@id/tv_reason" - app:layout_constraintTop_toBottomOf="@id/tv_reason" - android:textColor="@color/textColor66" - android:textSize="12sp" - android:layout_marginTop="1dp" - android:text="2020-4-1 11:25"/> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_money" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintTop_toTopOf="parent" - app:layout_constraintBottom_toBottomOf="parent" - android:text="+100" - android:textColor="@color/colorRed" - android:textStyle="bold" - android:textSize="12sp" - android:layout_marginEnd="14dp"/> - - <View - android:layout_width="match_parent" - android:layout_height="1px" - android:background="@color/dividing_line_color" - app:layout_constraintTop_toBottomOf="@id/tv_time" - android:layout_marginTop="15dp"/> -</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_course.xml b/app/src/main/res/layout/item_course.xml deleted file mode 100644 index a192d8a..0000000 --- a/app/src/main/res/layout/item_course.xml +++ /dev/null @@ -1,126 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="wrap_content" - xmlns:app="http://schemas.android.com/apk/res-auto"> - <com.facebook.drawee.view.SimpleDraweeView - android:layout_width="105dp" - android:layout_height="140dp" - app:layout_constraintTop_toTopOf="parent" - app:layout_constraintStart_toStartOf="parent" - android:layout_marginStart="14dp" - android:layout_marginTop="20dp" - app:roundedCornerRadius="9dp" - app:actualImageScaleType="centerCrop" - android:id="@+id/iv_img" - app:placeholderImage="@color/page_bg"/> - <TextView - android:layout_width="0dp" - android:layout_height="wrap_content" - android:id="@+id/tv_name" - app:layout_constraintTop_toTopOf="@id/iv_img" - app:layout_constraintStart_toEndOf="@id/iv_img" - app:layout_constraintEnd_toEndOf="parent" - android:layout_marginEnd="12dp" - android:text="足球基础教学(玩湃-喜望店)" - android:singleLine="true" - android:textColor="@color/textColor" - android:textSize="16sp" - android:textStyle="bold" - android:layout_marginStart="10dp"/> - <TextView - android:layout_width="0dp" - android:layout_height="wrap_content" - android:id="@+id/tv_time" - app:layout_constraintStart_toStartOf="@id/tv_name" - app:layout_constraintEnd_toEndOf="parent" - android:layout_marginEnd="6dp" - app:layout_constraintTop_toBottomOf="@id/tv_name" - android:textColor="@color/textColor66" - android:textSize="14sp" - android:maxLines="2" - android:ellipsize="end" - android:drawableStart="@mipmap/icon_time" - android:text="上课时间:9:00-11:00" - android:drawablePadding="2dp" - android:layout_marginTop="7dp"/> - - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_join_count" - app:layout_constraintStart_toStartOf="@id/tv_name" - app:layout_constraintTop_toBottomOf="@id/tv_time" - android:textColor="@color/textColor66" - android:textSize="14sp" - android:drawableStart="@mipmap/baoming" - android:text="已报名:20人" - android:drawablePadding="2dp" - android:layout_marginTop="7dp"/> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_distance" - app:layout_constraintBaseline_toBaselineOf="@id/tv_join_count" - app:layout_constraintEnd_toEndOf="parent" - android:layout_marginEnd="14dp" - android:text="1km" - android:textColor="@color/textColor66" - android:textSize="16sp" - android:textStyle="bold"/> - - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_vip_price" - app:layout_constraintStart_toStartOf="@id/tv_name" - app:layout_constraintTop_toBottomOf="@id/tv_join_count" - android:textColor="@color/textColor66" - android:textSize="14sp" - android:visibility="gone" - android:drawableStart="@mipmap/ic_vip" - android:text="会员价:¥100" - android:drawablePadding="2dp" - android:layout_marginTop="7dp"/> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_price" - android:textStyle="bold" - android:textSize="18sp" - android:textColor="@color/colorPrimary" - android:layout_marginBottom="1dp" - app:layout_constraintStart_toStartOf="@id/tv_name" - app:layout_constraintBottom_toBottomOf="@id/iv_img" - android:text="¥100"/> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_origin_price" - app:layout_constraintBaseline_toBaselineOf="@id/tv_price" - app:layout_constraintStart_toEndOf="@id/tv_price" - android:layout_marginStart="7dp" - android:textSize="14sp" - android:textStyle="bold" - android:textColor="@color/textColor99" - android:text="¥100"/> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="详情" - app:layout_constraintEnd_toEndOf="@id/tv_distance" - app:layout_constraintBaseline_toBaselineOf="@id/tv_price" - android:textColor="@color/white" - android:textStyle="bold" - android:textSize="14sp" - android:paddingVertical="5dp" - android:paddingHorizontal="18dp" - android:background="@drawable/bg_orange_2dp"/> - <View - android:layout_width="match_parent" - android:layout_height="1px" - android:background="@color/dividing_line_color" - app:layout_constraintTop_toBottomOf="@id/iv_img" - android:layout_marginTop="23dp" - android:layout_marginHorizontal="13dp"/> -</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_course_name.xml b/app/src/main/res/layout/item_course_name.xml deleted file mode 100644 index df4946d..0000000 --- a/app/src/main/res/layout/item_course_name.xml +++ /dev/null @@ -1,19 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="wrap_content" - android:layout_height="match_parent" - xmlns:app="http://schemas.android.com/apk/res-auto"> - <TextView - android:id="@+id/tv_name" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - app:layout_constraintTop_toTopOf="parent" - app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintEnd_toEndOf="parent" - android:layout_marginHorizontal="13dp" - android:textStyle="bold" - android:textSize="18sp" - android:textColor="@color/textColor99" - android:text="足球基础训练课"/> -</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_course_record.xml b/app/src/main/res/layout/item_course_record.xml deleted file mode 100644 index bd60609..0000000 --- a/app/src/main/res/layout/item_course_record.xml +++ /dev/null @@ -1,45 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="wrap_content" - xmlns:app="http://schemas.android.com/apk/res-auto"> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_name" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent" - android:layout_marginTop="15dp" - android:text="购买运动营" - android:textColor="@color/textColor" - android:textSize="14sp" - android:textStyle="bold" - android:layout_marginStart="14dp"/> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_time" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintBaseline_toBaselineOf="@id/tv_name" - style="@style/style_common_text" - android:textStyle="bold" - android:text="03-17 08:00"/> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_record" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintBaseline_toBaselineOf="@id/tv_name" - style="@style/style_common_text" - android:layout_marginEnd="14dp" - android:textStyle="bold" - android:text="03-17 08:00"/> - <View - android:layout_width="match_parent" - android:layout_height="1px" - android:background="@color/dividing_line_color" - app:layout_constraintTop_toBottomOf="@id/tv_name" - android:layout_marginTop="15dp" - android:layout_marginHorizontal="14dp"/> -</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_course_schedule.xml b/app/src/main/res/layout/item_course_schedule.xml deleted file mode 100644 index 73111c0..0000000 --- a/app/src/main/res/layout/item_course_schedule.xml +++ /dev/null @@ -1,45 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:app="http://schemas.android.com/apk/res-auto" - android:layout_width="match_parent" - android:layout_height="wrap_content"> - - <TextView - android:id="@+id/tv_address" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_marginHorizontal="24dp" - android:layout_marginTop="20dp" - android:background="@drawable/bg_grey_line_11dp" - android:paddingVertical="4dp" - android:paddingStart="12dp" - android:paddingEnd="80dp" - android:text="成都非遗玩湃全科体育公园" - android:textColor="@color/disableColor" - android:textSize="10sp" - android:textStyle="bold" - app:layout_constraintTop_toTopOf="parent" /> - - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginEnd="10dp" - android:drawableStart="@mipmap/pop_blue" - android:drawablePadding="3dp" - android:paddingVertical="4dp" - android:text="位置详情" - android:textColor="@color/disableColor" - android:textSize="10sp" - android:textStyle="bold" - app:layout_constraintBaseline_toBaselineOf="@id/tv_address" - app:layout_constraintEnd_toEndOf="@id/tv_address" /> - - <androidx.recyclerview.widget.RecyclerView - android:id="@+id/rv_schedule" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_marginHorizontal="24dp" - android:layout_marginTop="16dp" - android:background="@drawable/bg_schedule_16dp" - app:layout_constraintTop_toBottomOf="@id/tv_address" /> -</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_evaluation.xml b/app/src/main/res/layout/item_evaluation.xml deleted file mode 100644 index d4500f0..0000000 --- a/app/src/main/res/layout/item_evaluation.xml +++ /dev/null @@ -1,62 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="wrap_content" - xmlns:app="http://schemas.android.com/apk/res-auto"> - <com.facebook.drawee.view.SimpleDraweeView - android:layout_width="60dp" - android:layout_height="60dp" - app:layout_constraintTop_toTopOf="parent" - app:layout_constraintStart_toStartOf="parent" - style="@style/DefaultHeadStyle" - android:layout_marginTop="16dp" - android:layout_marginStart="14dp" - android:id="@+id/iv_avatar"/> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_name" - app:layout_constraintTop_toTopOf="@id/iv_avatar" - app:layout_constraintStart_toEndOf="@id/iv_avatar" - android:layout_marginTop="7dp" - android:layout_marginStart="10dp" - android:textStyle="bold" - android:textColor="@color/textColor" - android:text="张三" - android:textSize="16sp"/> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_time" - app:layout_constraintTop_toBottomOf="@id/tv_name" - app:layout_constraintStart_toStartOf="@id/tv_name" - android:layout_marginTop="7dp" - android:textColor="@color/textColor" - android:text="2022-12-23 12:23" - android:textSize="12sp"/> - <TextView - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:id="@+id/tv_content" - android:layout_marginHorizontal="14dp" - app:layout_constraintTop_toBottomOf="@id/iv_avatar" - android:layout_marginTop="12dp" - android:textColor="@color/textColor" - android:text="该同学能很好地遵守班规校纪。在学习上肯下功夫,勤学好问,努力 -钻研,成绩稳定上升,该同学能严格要求自己,生活上、学习上表现 -令人信服,得到同学以及老师的肯定," - android:textSize="12sp"/> - <androidx.recyclerview.widget.RecyclerView - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:id="@+id/rv_photo" - app:layout_constraintTop_toBottomOf="@id/tv_content" - android:layout_marginHorizontal="10dp"/> - <View - android:layout_width="match_parent" - android:layout_height="1px" - app:layout_constraintTop_toBottomOf="@id/rv_photo" - android:layout_marginTop="17dp" - android:layout_marginHorizontal="14dp" - android:background="@color/dividing_line_color"/> -</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_exercise.xml b/app/src/main/res/layout/item_exercise.xml deleted file mode 100644 index ecc724a..0000000 --- a/app/src/main/res/layout/item_exercise.xml +++ /dev/null @@ -1,40 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="wrap_content" - xmlns:app="http://schemas.android.com/apk/res-auto"> - <com.facebook.drawee.view.SimpleDraweeView - android:layout_width="match_parent" - android:layout_height="0dp" - app:layout_constraintTop_toTopOf="parent" - android:layout_marginHorizontal="6dp" - app:roundedCornerRadius="6dp" - app:actualImageScaleType="centerCrop" - app:placeholderImage="@color/page_bg" - app:layout_constraintDimensionRatio="168:102" - android:layout_marginTop="12dp" - android:id="@+id/iv_img"/> - <ImageView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - app:layout_constraintTop_toTopOf="@id/iv_img" - app:layout_constraintEnd_toEndOf="@id/iv_img" - android:src="@mipmap/play_1" - android:layout_marginTop="5dp" - android:layout_marginEnd="12dp"/> - <TextView - android:layout_width="0dp" - android:layout_height="wrap_content" - app:layout_constraintTop_toBottomOf="@id/iv_img" - app:layout_constraintStart_toStartOf="@id/iv_img" - app:layout_constraintEnd_toEndOf="@id/iv_img" - android:layout_marginTop="12dp" - android:textColor="@color/colorTextDark" - android:textSize="12sp" - android:layout_marginHorizontal="2dp" - android:lines="2" - android:maxLines="2" - android:ellipsize="end" - android:id="@+id/tv_name" - android:text="课后在球场上练习射门技术 后,真是快乐并"/> -</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_field.xml b/app/src/main/res/layout/item_field.xml deleted file mode 100644 index b4b7fa3..0000000 --- a/app/src/main/res/layout/item_field.xml +++ /dev/null @@ -1,105 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="wrap_content" - xmlns:app="http://schemas.android.com/apk/res-auto"> - <TextView - android:layout_width="0dp" - android:layout_height="wrap_content" - android:id="@+id/tv_name" - app:layout_constraintTop_toTopOf="parent" - app:layout_constraintStart_toStartOf="parent" - android:text="足球基础教学(玩湃-喜望店)" - android:singleLine="true" - android:textColor="@color/textColor" - android:textSize="16sp" - android:textStyle="bold" - android:maxWidth="200dp" - android:layout_marginTop="17dp" - android:layout_marginStart="14dp"/> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_distance" - app:layout_constraintBaseline_toBaselineOf="@id/tv_name" - app:layout_constraintEnd_toEndOf="parent" - android:layout_marginEnd="14dp" - android:text="1km" - android:textColor="@color/textColor66" - android:textSize="12sp" - android:textStyle="bold"/> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_type" - app:layout_constraintBaseline_toBaselineOf="@id/tv_name" - app:layout_constraintStart_toEndOf="@id/tv_name" - android:textSize="12sp" - android:textStyle="bold" - android:text="足球场" - android:layout_marginStart="7dp" - android:textColor="@color/colorPrimary" - android:paddingHorizontal="5dp" - android:paddingVertical="3dp" - android:background="@drawable/bg_tag_10dp"/> - <TextView - android:layout_width="0dp" - android:layout_height="wrap_content" - android:id="@+id/tv_address" - app:layout_constraintTop_toBottomOf="@id/tv_name" - app:layout_constraintStart_toStartOf="@id/tv_name" - app:layout_constraintEnd_toEndOf="@id/tv_distance" - android:layout_marginTop="13dp" - android:textSize="12sp" - android:textColor="@color/textColor66" - android:textStyle="bold" - android:text="玩湃-喜望店(天府新谷9号楼1005A)" - android:drawablePadding="7dp" - android:drawableStart="@mipmap/location_grey"/> - <TextView - android:layout_width="0dp" - android:layout_height="wrap_content" - android:id="@+id/tv_time" - app:layout_constraintTop_toBottomOf="@id/tv_address" - app:layout_constraintStart_toStartOf="@id/tv_name" - app:layout_constraintEnd_toEndOf="@id/tv_distance" - android:layout_marginTop="13dp" - android:textSize="12sp" - android:textColor="@color/textColor66" - android:textStyle="bold" - android:text="可预约时间段:10:00-21:00" - android:drawablePadding="4dp" - android:drawableStart="@mipmap/time_grey"/> - - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="预约" - app:layout_constraintEnd_toEndOf="@id/tv_distance" - app:layout_constraintTop_toBottomOf="@id/tv_time" - android:textColor="@color/white" - android:textStyle="bold" - android:textSize="14sp" - android:paddingVertical="5dp" - android:id="@+id/tv_action" - android:paddingHorizontal="18dp" - android:background="@drawable/bg_green_3dp"/> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_price" - app:layout_constraintEnd_toStartOf="@id/tv_action" - android:layout_marginEnd="4dp" - android:textColor="@color/colorPrimary" - android:textStyle="bold" - android:textSize="17sp" - android:text="¥120起" - app:layout_constraintBaseline_toBaselineOf="@id/tv_action"/> - <View - android:layout_width="match_parent" - android:layout_height="1px" - android:background="@color/dividing_line_color" - app:layout_constraintTop_toBottomOf="@id/tv_action" - android:layout_marginTop="12dp" - android:layout_marginHorizontal="14dp"/> -</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_joined_course.xml b/app/src/main/res/layout/item_joined_course.xml deleted file mode 100644 index 8d6e0eb..0000000 --- a/app/src/main/res/layout/item_joined_course.xml +++ /dev/null @@ -1,103 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="wrap_content" - xmlns:app="http://schemas.android.com/apk/res-auto"> - <com.facebook.drawee.view.SimpleDraweeView - android:layout_width="105dp" - android:layout_height="140dp" - app:layout_constraintTop_toTopOf="parent" - app:layout_constraintStart_toStartOf="parent" - android:layout_marginStart="14dp" - android:layout_marginTop="20dp" - app:roundedCornerRadius="9dp" - app:actualImageScaleType="centerCrop" - android:id="@+id/iv_img" - app:placeholderImage="@color/page_bg"/> - <TextView - android:id="@+id/tv_un_pay" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - app:layout_constraintTop_toTopOf="@id/iv_img" - app:layout_constraintStart_toStartOf="@id/iv_img" - android:background="@drawable/bg_un_pay" - android:text="待支付" - android:textStyle="bold" - android:textSize="12sp" - android:textColor="@color/white" - android:padding="6dp"/> - <TextView - android:layout_width="0dp" - android:layout_height="wrap_content" - android:id="@+id/tv_name" - app:layout_constraintTop_toTopOf="@id/iv_img" - app:layout_constraintStart_toEndOf="@id/iv_img" - app:layout_constraintEnd_toEndOf="parent" - android:layout_marginEnd="12dp" - android:text="足球基础教学(玩湃-喜望店)" - android:singleLine="true" - android:textColor="@color/textColor" - android:textSize="16sp" - android:textStyle="bold" - android:layout_marginStart="10dp"/> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_time" - app:layout_constraintStart_toStartOf="@id/tv_name" - app:layout_constraintTop_toBottomOf="@id/tv_name" - android:textColor="@color/textColor66" - android:textSize="14sp" - android:drawableStart="@mipmap/icon_time" - android:text="上课时间:9:00-11:00" - android:drawablePadding="2dp" - android:layout_marginTop="7dp"/> - - - <TextView - android:id="@+id/tv_teacher" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginTop="7dp" - android:drawableStart="@mipmap/baoming" - android:drawablePadding="2dp" - android:text="授课老师" - android:visibility="gone" - android:textColor="@color/textColor66" - android:textSize="14sp" - app:layout_constraintStart_toStartOf="@id/tv_name" - app:layout_constraintTop_toBottomOf="@id/tv_time" /> - - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_used" - app:layout_constraintStart_toStartOf="@id/tv_name" - app:layout_constraintTop_toBottomOf="@id/tv_teacher" - android:textColor="@color/color_text_price" - android:textSize="14sp" - android:drawableStart="@mipmap/used_keshi" - android:text="已上课时数:" - android:drawablePadding="2dp" - android:layout_marginTop="7dp"/> - - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="详情" - app:layout_constraintTop_toBottomOf="@id/tv_used" - app:layout_constraintEnd_toEndOf="@id/tv_name" - android:textColor="@color/white" - android:textStyle="bold" - android:textSize="14sp" - android:paddingVertical="5dp" - android:paddingHorizontal="18dp" - android:background="@drawable/bg_orange_2dp"/> - <View - android:layout_width="match_parent" - android:layout_height="1px" - android:background="@color/dividing_line_color" - app:layout_constraintTop_toBottomOf="@id/iv_img" - android:layout_marginTop="23dp" - android:layout_marginHorizontal="13dp"/> -</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_lesson.xml b/app/src/main/res/layout/item_lesson.xml deleted file mode 100644 index 53c21b6..0000000 --- a/app/src/main/res/layout/item_lesson.xml +++ /dev/null @@ -1,20 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="wrap_content" - xmlns:app="http://schemas.android.com/apk/res-auto"> - <TextView - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:id="@+id/tv_name" - android:gravity="center" - android:textStyle="bold" - android:textSize="14sp" - android:paddingVertical="8dp" - app:layout_constraintTop_toTopOf="parent" - android:layout_marginTop="13dp" - android:text="50课时" - android:layout_marginHorizontal="10dp" - android:background="@drawable/selector_lesson_bg" - android:textColor="@color/selector_white_grey"/> -</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_match.xml b/app/src/main/res/layout/item_match.xml deleted file mode 100644 index 575892f..0000000 --- a/app/src/main/res/layout/item_match.xml +++ /dev/null @@ -1,127 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="wrap_content" - xmlns:app="http://schemas.android.com/apk/res-auto"> - <com.facebook.drawee.view.SimpleDraweeView - android:layout_width="105dp" - android:layout_height="140dp" - app:layout_constraintTop_toTopOf="parent" - app:layout_constraintStart_toStartOf="parent" - android:layout_marginStart="14dp" - android:layout_marginTop="20dp" - app:roundedCornerRadius="20dp" - app:actualImageScaleType="centerCrop" - android:id="@+id/iv_img" - app:placeholderImage="@color/page_bg"/> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_state" - app:layout_constraintTop_toTopOf="@id/iv_img" - app:layout_constraintStart_toStartOf="@id/iv_img" - android:textColor="@color/white" - android:textStyle="bold" - android:textSize="12sp" - android:visibility="gone" - android:background="@drawable/selector_bg_match_state" - android:paddingVertical="5dp" - android:paddingHorizontal="6dp"/> - <TextView - android:layout_width="0dp" - android:layout_height="wrap_content" - android:id="@+id/tv_name" - app:layout_constraintTop_toTopOf="@id/iv_img" - app:layout_constraintStart_toEndOf="@id/iv_img" - app:layout_constraintEnd_toStartOf="@id/tv_heat" - android:layout_marginEnd="6dp" - android:text="足球基础教学(玩湃-喜望店)" - android:singleLine="true" - android:textColor="@color/textColor" - android:textSize="16sp" - android:textStyle="bold" - android:layout_marginStart="10dp"/> - - - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_heat" - app:layout_constraintBaseline_toBaselineOf="@id/tv_name" - app:layout_constraintEnd_toEndOf="parent" - android:layout_marginEnd="12dp" - android:textColor="@color/color_text_price" - android:text="0" - android:textSize="18sp" - android:textStyle="bold" - android:drawableStart="@mipmap/fire" - android:drawablePadding="5dp" - /> - - <TextView - android:layout_width="0dp" - android:layout_height="wrap_content" - app:layout_constraintTop_toBottomOf="@id/tv_name" - app:layout_constraintStart_toStartOf="@id/tv_name" - app:layout_constraintEnd_toEndOf="parent" - android:layout_marginEnd="10dp" - android:id="@+id/tv_tag" - android:text="成都|全部用户" - android:textColor="@color/colorYellow" - android:layout_marginTop="4dp" - android:textSize="12sp"/> - - <TextView - android:layout_width="0dp" - android:layout_height="wrap_content" - android:id="@+id/tv_info" - app:layout_constraintStart_toStartOf="@id/tv_name" - app:layout_constraintEnd_toEndOf="@id/tv_tag" - android:maxLines="2" - app:layout_constraintTop_toBottomOf="@id/tv_tag" - android:textColor="@color/textColor66" - android:textSize="11sp" - android:text="这是欢乐跑活动赛事简介,本次活动由海豚英语组织,提高全民素质…" - android:layout_marginTop="4dp"/> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_time" - app:layout_constraintStart_toStartOf="@id/tv_name" - app:layout_constraintTop_toBottomOf="@id/tv_info" - android:textColor="@color/textColor" - android:textSize="12sp" - android:text="截止报名:2023-03-15 08:00" - android:layout_marginTop="4dp"/> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_age" - app:layout_constraintStart_toStartOf="@id/tv_name" - app:layout_constraintTop_toBottomOf="@id/tv_time" - android:textColor="@color/textColor" - android:textSize="12sp" - android:text="7-12岁" - android:layout_marginTop="4dp"/> - - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="查看详情" - app:layout_constraintEnd_toEndOf="@id/tv_tag" - app:layout_constraintTop_toBottomOf="@id/tv_time" - android:textColor="@color/white" - android:textStyle="bold" - android:textSize="14sp" - android:paddingVertical="6dp" - android:layout_marginTop="8dp" - android:paddingHorizontal="18dp" - android:background="@drawable/bg_orange_2dp"/> - <View - android:layout_width="match_parent" - android:layout_height="1px" - android:background="@color/dividing_line_color" - app:layout_constraintTop_toBottomOf="@id/iv_img" - android:layout_marginTop="23dp" - android:layout_marginHorizontal="13dp"/> -</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_medal_grid.xml b/app/src/main/res/layout/item_medal_grid.xml deleted file mode 100644 index a24e604..0000000 --- a/app/src/main/res/layout/item_medal_grid.xml +++ /dev/null @@ -1,31 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="wrap_content" - xmlns:app="http://schemas.android.com/apk/res-auto"> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_english" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintTop_toTopOf="parent" - android:layout_marginTop="30dp" - android:drawablePadding="7dp" - android:text="COURSE" - android:textColor="@color/colorTextDark" - android:textSize="12sp" - android:gravity="center" - android:drawableTop="@mipmap/medal_club"/> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_name" - app:layout_constraintTop_toBottomOf="@id/tv_english" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintEnd_toEndOf="parent" - android:text="俱乐部之星" - android:textSize="12sp" - android:textColor="@color/textColor99" - android:layout_marginTop="7dp"/> -</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_mine_menu.xml b/app/src/main/res/layout/item_mine_menu.xml deleted file mode 100644 index f4988c0..0000000 --- a/app/src/main/res/layout/item_mine_menu.xml +++ /dev/null @@ -1,19 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="wrap_content" - xmlns:app="http://schemas.android.com/apk/res-auto"> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_name" - android:text="我的二维码" - app:layout_constraintTop_toTopOf="parent" - android:layout_marginTop="30dp" - android:drawablePadding="10dp" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintEnd_toEndOf="parent" - android:textColor="#A4A4A4" - android:textStyle="bold" - android:textSize="12sp"/> -</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_msg.xml b/app/src/main/res/layout/item_msg.xml deleted file mode 100644 index 9e1e3d7..0000000 --- a/app/src/main/res/layout/item_msg.xml +++ /dev/null @@ -1,52 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="wrap_content" - xmlns:app="http://schemas.android.com/apk/res-auto"> - - <TextView - android:layout_width="0dp" - android:layout_height="wrap_content" - android:id="@+id/tv_title" - android:text="系统通知" - android:textStyle="bold" - android:textSize="16sp" - app:layout_constraintTop_toTopOf="parent" - android:textColor="@color/textColor" - android:layout_marginTop="14dp" - android:layout_marginStart="14dp" - android:maxLines="1" - android:ellipsize="end" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintEnd_toStartOf="@id/tv_time" - android:layout_marginEnd="14dp"/> - <TextView - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:id="@+id/tv_content" - android:layout_marginStart="14dp" - android:singleLine="true" - android:ellipsize="end" - android:layout_marginTop="10dp" - app:layout_constraintTop_toBottomOf="@id/tv_title" - android:text="您有一节直播运动营即将开始" - android:textSize="13sp" - app:layout_constraintBottom_toBottomOf="parent" - android:layout_marginBottom="14dp"/> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_time" - app:layout_constraintBaseline_toBaselineOf="@id/tv_title" - app:layout_constraintEnd_toEndOf="parent" - android:layout_marginEnd="8dp" - android:textSize="12sp" - android:text="2022-09-09 09:01" - android:textColor="@color/textColor66"/> - <View - android:layout_width="match_parent" - android:layout_height="1px" - android:background="@color/dividing_line_color" - app:layout_constraintBottom_toBottomOf="parent" - android:layout_marginHorizontal="14dp"/> -</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_my_course_check.xml b/app/src/main/res/layout/item_my_course_check.xml deleted file mode 100644 index 5e66149..0000000 --- a/app/src/main/res/layout/item_my_course_check.xml +++ /dev/null @@ -1,18 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - xmlns:app="http://schemas.android.com/apk/res-auto"> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_name" - android:textSize="18sp" - android:textStyle="bold" - android:text="荷兰足球课" - android:paddingVertical="15dp" - android:paddingHorizontal="13dp" - app:layout_constraintTop_toTopOf="parent" - app:layout_constraintStart_toStartOf="parent" - android:textColor="@color/selector_green_grey"/> -</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_my_course_list.xml b/app/src/main/res/layout/item_my_course_list.xml deleted file mode 100644 index faf8c8b..0000000 --- a/app/src/main/res/layout/item_my_course_list.xml +++ /dev/null @@ -1,51 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:tools="http://schemas.android.com/tools" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_marginTop="19dp" - android:orientation="vertical"> - - <LinearLayout - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:gravity="center_vertical" - android:paddingHorizontal="14dp"> - - <View - android:layout_width="26dp" - android:layout_height="32dp" - android:background="@mipmap/keshitagicon" /> - - <TextView - android:id="@+id/mtvName" - android:layout_width="120dp" - android:layout_height="wrap_content" - android:layout_marginStart="14dp" - android:textColor="@color/black" - android:textSize="16sp" - tools:text="羽毛球课" /> - - <TextView - android:id="@+id/mtvClassHour" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginStart="14dp" - android:textColor="@color/colorRed" - android:textSize="16sp" - tools:text="(剩余:30 课时)" /> - - <Space - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_weight="1" /> - - <View - android:id="@+id/vchoose" - android:layout_width="24dp" - android:layout_height="24dp" - tools:background="@drawable/coupon_checked" /> - </LinearLayout> - - -</LinearLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_my_place.xml b/app/src/main/res/layout/item_my_place.xml deleted file mode 100644 index 7a4ee92..0000000 --- a/app/src/main/res/layout/item_my_place.xml +++ /dev/null @@ -1,123 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="wrap_content" - xmlns:app="http://schemas.android.com/apk/res-auto"> - <TextView - android:layout_width="0dp" - android:layout_height="wrap_content" - android:id="@+id/tv_name" - app:layout_constraintTop_toTopOf="parent" - app:layout_constraintStart_toStartOf="parent" - android:text="足球基础教学(玩湃-喜望店)足球基础" - android:singleLine="true" - android:textColor="@color/textColor" - android:textSize="16sp" - android:maxWidth="200dp" - android:textStyle="bold" - android:layout_marginTop="17dp" - android:layout_marginStart="14dp"/> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_state" - app:layout_constraintBaseline_toBaselineOf="@id/tv_name" - app:layout_constraintEnd_toEndOf="parent" - android:layout_marginEnd="14dp" - android:text="待核销" - android:textColor="@color/textColor66" - android:textSize="12sp" - android:textStyle="bold"/> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_type" - app:layout_constraintBaseline_toBaselineOf="@id/tv_name" - app:layout_constraintStart_toEndOf="@id/tv_name" - android:textSize="12sp" - android:textStyle="bold" - android:text="足球场" - android:layout_marginStart="7dp" - android:textColor="@color/colorPrimary" - android:paddingHorizontal="5dp" - android:paddingVertical="3dp" - android:background="@drawable/bg_tag_10dp"/> - <TextView - android:layout_width="0dp" - android:layout_height="wrap_content" - android:id="@+id/tv_address" - app:layout_constraintTop_toBottomOf="@id/tv_name" - app:layout_constraintStart_toStartOf="@id/tv_name" - app:layout_constraintEnd_toEndOf="@id/tv_state" - android:layout_marginTop="13dp" - android:textSize="12sp" - android:textColor="@color/textColor66" - android:textStyle="bold" - android:text="玩湃-喜望店(天府新谷9号楼1005A)" - android:drawablePadding="7dp" - android:drawableStart="@mipmap/location_grey"/> - <TextView - android:layout_width="0dp" - android:layout_height="wrap_content" - android:id="@+id/tv_time" - app:layout_constraintTop_toBottomOf="@id/tv_address" - app:layout_constraintStart_toStartOf="@id/tv_name" - app:layout_constraintEnd_toEndOf="@id/tv_state" - android:layout_marginTop="13dp" - android:textSize="12sp" - android:textColor="@color/textColor66" - android:textStyle="bold" - android:text="可预约时间段:10:00-21:00" - android:drawablePadding="4dp" - android:drawableStart="@mipmap/time_grey"/> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_price" - app:layout_constraintEnd_toEndOf="@id/tv_state" - android:layout_marginEnd="4dp" - android:textColor="@color/colorPrimary" - android:textStyle="bold" - android:textSize="17sp" - android:text="¥120" - app:layout_constraintBaseline_toBaselineOf="@id/tv_time"/> - - <TextView - android:id="@+id/tv_action" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginTop="4dp" - android:background="@drawable/bg_green_3dp" - android:paddingHorizontal="18dp" - android:paddingVertical="5dp" - android:text="支付" - android:textColor="@color/white" - android:textSize="14sp" - android:textStyle="bold" - android:layout_marginEnd="10dp" - app:layout_constraintEnd_toStartOf="@id/tv_detail" - app:layout_constraintTop_toBottomOf="@id/tv_time" /> - - <TextView - android:id="@+id/tv_detail" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginTop="4dp" - android:background="@drawable/bg_maincolor_3dp" - android:paddingHorizontal="18dp" - android:paddingVertical="5dp" - android:text="详情" - android:textColor="@color/white" - android:textSize="14sp" - android:textStyle="bold" - app:layout_constraintEnd_toEndOf="@id/tv_state" - app:layout_constraintTop_toBottomOf="@id/tv_time" /> - - <View - android:layout_width="match_parent" - android:layout_height="1px" - android:background="@color/dividing_line_color" - app:layout_constraintTop_toBottomOf="@id/tv_detail" - android:layout_marginTop="12dp" - android:layout_marginHorizontal="14dp"/> -</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_open_city.xml b/app/src/main/res/layout/item_open_city.xml deleted file mode 100644 index b1b0be6..0000000 --- a/app/src/main/res/layout/item_open_city.xml +++ /dev/null @@ -1,34 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:orientation="vertical" - xmlns:app="http://schemas.android.com/apk/res-auto"> - <TextView - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:id="@+id/tv_index" - android:text="A" - android:textStyle="bold" - android:layout_marginStart="14dp" - android:paddingTop="10dp" - android:paddingBottom="2dp" - style="@style/style_common_text" - app:layout_constraintTop_toTopOf="parent"/> - <TextView - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:background="@color/white" - android:text="城市名" - android:id="@+id/tv_name" - style="@style/style_common_text" - android:paddingTop="12dp" - android:textStyle="bold" - android:paddingBottom="12dp" - android:paddingStart="14dp"/> - <View - android:layout_width="match_parent" - android:layout_height="1px" - android:layout_marginStart="14dp" - android:background="@color/dividing_line_color"/> -</LinearLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_pay_course.xml b/app/src/main/res/layout/item_pay_course.xml deleted file mode 100644 index 863ee56..0000000 --- a/app/src/main/res/layout/item_pay_course.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:paddingHorizontal="16dp" - xmlns:app="http://schemas.android.com/apk/res-auto"> - <TextView - android:id="@+id/tv_course" - style="@style/style_item_pay" - android:layout_width="match_parent" - android:layout_height="wrap_content" - app:layout_constraintTop_toTopOf="parent" - android:gravity="center_vertical" - android:drawableStart="@mipmap/keshi" - android:drawableEnd="@drawable/selector_select_pay" - android:text="课时支付" /> - <View - android:layout_width="match_parent" - android:layout_height="1px" - app:layout_constraintTop_toBottomOf="@id/tv_course" - android:background="@color/dividing_line_color" /> -</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_photo.xml b/app/src/main/res/layout/item_photo.xml deleted file mode 100644 index b5d10f1..0000000 --- a/app/src/main/res/layout/item_photo.xml +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="wrap_content" - xmlns:app="http://schemas.android.com/apk/res-auto"> - <com.facebook.drawee.view.SimpleDraweeView - android:layout_width="match_parent" - android:layout_height="0dp" - android:id="@+id/iv_img" - app:layout_constraintTop_toTopOf="parent" - android:layout_marginTop="9dp" - android:layout_marginHorizontal="4dp" - app:layout_constraintDimensionRatio="1:1" - app:actualImageScaleType="centerCrop" - app:placeholderImage="@color/page_bg" - /> -</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_practice_list.xml b/app/src/main/res/layout/item_practice_list.xml deleted file mode 100644 index 36c051b..0000000 --- a/app/src/main/res/layout/item_practice_list.xml +++ /dev/null @@ -1,99 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="wrap_content" - xmlns:app="http://schemas.android.com/apk/res-auto"> - <com.facebook.drawee.view.SimpleDraweeView - android:layout_width="105dp" - android:layout_height="140dp" - android:id="@+id/iv_img" - app:layout_constraintTop_toTopOf="parent" - app:layout_constraintStart_toStartOf="parent" - app:roundedCornerRadius="9dp" - app:actualImageScaleType="centerCrop" - app:placeholderImage="@color/page_bg" - android:layout_margin="14dp"/> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_state" - app:layout_constraintTop_toTopOf="@id/tv_name" - app:layout_constraintEnd_toEndOf="parent" - android:layout_marginEnd="14dp" - android:paddingVertical="2dp" - android:paddingHorizontal="7dp" - android:textSize="12sp" - android:textStyle="bold"/> - - <TextView - android:layout_width="0dp" - android:layout_height="wrap_content" - android:id="@+id/tv_name" - app:layout_constraintTop_toTopOf="@id/iv_img" - app:layout_constraintEnd_toStartOf="@id/tv_state" - android:layout_marginEnd="6dp" - android:singleLine="true" - android:ellipsize="end" - android:textStyle="bold" - android:textColor="@color/textColor" - android:textSize="16sp" - android:text="颠球训练" - app:layout_constraintStart_toEndOf="@id/iv_img" - android:layout_marginStart="6dp"/> - <TextView - android:id="@+id/tv_type" - android:layout_width="0dp" - android:layout_height="wrap_content" - app:layout_constraintTop_toBottomOf="@id/tv_name" - app:layout_constraintStart_toStartOf="@id/tv_name" - app:layout_constraintEnd_toEndOf="@id/tv_name" - android:ellipsize="end" - android:layout_marginTop="4dp" - android:textColor="@color/textColor" - android:textSize="12sp" - android:text="布置运动营:足球训练课"/> - <TextView - android:id="@+id/tv_introduce" - android:layout_width="0dp" - android:layout_height="wrap_content" - app:layout_constraintTop_toBottomOf="@id/tv_type" - app:layout_constraintStart_toStartOf="@id/tv_name" - app:layout_constraintEnd_toEndOf="parent" - android:layout_marginEnd="14dp" - android:maxLines="2" - android:ellipsize="end" - android:layout_marginTop="4dp" - android:textColor="@color/textColor66" - android:textSize="11sp" - android:text="该训练可以锻炼孩子的球感,培养孩子对足球的兴趣"/> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_income" - app:layout_constraintStart_toStartOf="@id/tv_name" - app:layout_constraintBottom_toBottomOf="@id/iv_img" - android:layout_marginBottom="3dp" - android:textColor="@color/textColor" - android:text="可获积分:" - android:textSize="12sp"/> - <TextView - android:layout_width="86dp" - android:layout_height="wrap_content" - app:layout_constraintBottom_toBottomOf="@id/iv_img" - app:layout_constraintEnd_toEndOf="parent" - android:layout_marginEnd="14dp" - android:paddingVertical="6dp" - android:text="查看详情" - android:gravity="center" - android:textSize="14sp" - android:textColor="@color/white" - android:textStyle="bold" - android:background="@drawable/bg_orange_2dp"/> - <View - android:layout_width="match_parent" - android:layout_height="1px" - android:background="@color/dividing_line_color" - app:layout_constraintTop_toBottomOf="@id/iv_img" - android:layout_marginTop="23dp" - android:layout_marginHorizontal="14dp"/> -</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_question.xml b/app/src/main/res/layout/item_question.xml deleted file mode 100644 index de22ea2..0000000 --- a/app/src/main/res/layout/item_question.xml +++ /dev/null @@ -1,20 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="wrap_content" - xmlns:app="http://schemas.android.com/apk/res-auto"> - <TextView - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:id="@+id/tv_name" - app:layout_constraintTop_toTopOf="parent" - android:layout_marginTop="11dp" - android:layout_marginHorizontal="14dp" - android:drawablePadding="6dp" - style="@style/style_common_text" - android:textStyle="bold" - android:paddingHorizontal="14dp" - android:drawableStart="@drawable/black_dot" - android:paddingVertical="20dp" - android:background="@drawable/bg_grey_6dp"/> -</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_recharge.xml b/app/src/main/res/layout/item_recharge.xml deleted file mode 100644 index 8ea2cdf..0000000 --- a/app/src/main/res/layout/item_recharge.xml +++ /dev/null @@ -1,37 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="wrap_content" - xmlns:app="http://schemas.android.com/apk/res-auto"> - <LinearLayout - android:id="@+id/ll_bg" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:orientation="vertical" - app:layout_constraintTop_toTopOf="parent" - android:layout_marginTop="17dp" - android:gravity="center" - android:background="@drawable/bg_recharge_uncheck" - android:layout_marginHorizontal="9dp"> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_coin" - android:text="200币" - android:textSize="15sp" - android:textStyle="bold" - android:textColor="@color/textColor66" - android:layout_marginTop="6dp"/> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_price" - android:text="200币" - android:layout_marginBottom="5dp" - android:textSize="12sp" - android:textStyle="bold" - android:textColor="@color/textColor66" - android:layout_marginTop="3dp"/> - - </LinearLayout> -</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_shop.xml b/app/src/main/res/layout/item_shop.xml deleted file mode 100644 index 7d4dd71..0000000 --- a/app/src/main/res/layout/item_shop.xml +++ /dev/null @@ -1,97 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="wrap_content" - xmlns:app="http://schemas.android.com/apk/res-auto"> - <com.facebook.drawee.view.SimpleDraweeView - android:layout_width="match_parent" - android:layout_height="220dp" - app:layout_constraintTop_toTopOf="parent" - app:actualImageScaleType="centerCrop" - app:placeholderImage="@color/page_bg" - android:layout_marginTop="12dp" - android:id="@+id/iv_cover"/> - <TextView - app:layout_constraintTop_toBottomOf="@id/iv_cover" - android:layout_margin="14dp" - android:textSize="18sp" - android:textStyle="bold" - android:textColor="@color/textColor" - android:id="@+id/tv_name" - android:text="玩湃-喜望店" - android:layout_width="match_parent" - android:layout_height="wrap_content"/> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_distance" - app:layout_constraintTop_toBottomOf="@id/tv_name" - app:layout_constraintEnd_toEndOf="parent" - android:textColor="@color/textColor66" - android:textSize="12dp" - android:text="距离我1km" - android:layout_marginEnd="14dp" - android:textStyle="bold" - android:layout_marginTop="7dp"/> - <TextView - android:layout_width="0dp" - android:layout_height="wrap_content" - android:drawablePadding="5dp" - android:text="玩湃-喜望店(天府新谷9号楼1005A)" - android:textSize="12dp" - android:textStyle="bold" - android:id="@+id/tv_address" - app:layout_constraintBaseline_toBaselineOf="@id/tv_distance" - android:textColor="@color/textColor66" - android:singleLine="true" - android:ellipsize="end" - app:layout_constraintEnd_toStartOf="@id/tv_distance" - app:layout_constraintStart_toStartOf="@id/tv_name" - android:drawableStart="@mipmap/ic_address"/> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:drawablePadding="5dp" - android:text="155555555" - android:textSize="12dp" - android:textStyle="bold" - android:id="@+id/tv_phone" - app:layout_constraintTop_toBottomOf="@id/tv_address" - android:layout_marginTop="7dp" - android:textColor="@color/textColor66" - app:layout_constraintStart_toStartOf="@id/tv_name" - android:drawableStart="@mipmap/ic_phone"/> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:drawablePadding="5dp" - android:text="10:00-21:00" - android:textSize="12dp" - android:textStyle="bold" - android:id="@+id/tv_duration" - android:textColor="@color/textColor66" - app:layout_constraintBaseline_toBaselineOf="@id/tv_phone" - app:layout_constraintEnd_toEndOf="@id/tv_name" - android:drawableStart="@mipmap/time_grey"/> - <TextView - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:text="这是门店的信息…" - android:textSize="12dp" - android:textStyle="bold" - android:id="@+id/tv_introduce" - android:maxLines="2" - android:ellipsize="end" - android:textColor="@color/textColor66" - app:layout_constraintTop_toBottomOf="@id/tv_phone" - android:layout_marginHorizontal="14dp" - android:layout_marginTop="7dp" - app:layout_constraintEnd_toEndOf="@id/tv_name"/> - <View - android:layout_width="match_parent" - android:layout_height="1dp" - android:background="@color/dividing_line_color" - app:layout_constraintTop_toBottomOf="@id/tv_introduce" - android:layout_marginStart="14dp" - android:layout_marginTop="12dp"/> -</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_shop_check.xml b/app/src/main/res/layout/item_shop_check.xml deleted file mode 100644 index 2aef28c..0000000 --- a/app/src/main/res/layout/item_shop_check.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="wrap_content" - xmlns:app="http://schemas.android.com/apk/res-auto"> - <TextView - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:id="@+id/tv_name" - app:layout_constraintTop_toTopOf="parent" - app:layout_constraintBottom_toBottomOf="parent" - android:layout_marginBottom="18dp" - android:background="@drawable/bg_grey_line_4dp" - android:layout_marginHorizontal="14dp" - android:text="玩湃-喜望店" - android:drawableEnd="@mipmap/icon_radiobutton" - android:textStyle="bold" - android:textSize="14sp" - android:textColor="@color/textColor" - android:paddingVertical="15dp" - android:paddingHorizontal="12dp"/> -</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_shop_course.xml b/app/src/main/res/layout/item_shop_course.xml deleted file mode 100644 index d085b4e..0000000 --- a/app/src/main/res/layout/item_shop_course.xml +++ /dev/null @@ -1,90 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="wrap_content" - xmlns:app="http://schemas.android.com/apk/res-auto"> - <com.facebook.drawee.view.SimpleDraweeView - android:layout_width="105dp" - android:layout_height="140dp" - app:layout_constraintTop_toTopOf="parent" - app:layout_constraintStart_toStartOf="parent" - android:layout_marginStart="14dp" - android:layout_marginTop="20dp" - app:roundedCornerRadius="9dp" - app:actualImageScaleType="centerCrop" - android:id="@+id/iv_img" - app:placeholderImage="@color/page_bg"/> - <TextView - android:layout_width="0dp" - android:layout_height="wrap_content" - android:id="@+id/tv_name" - app:layout_constraintTop_toTopOf="@id/iv_img" - app:layout_constraintStart_toEndOf="@id/iv_img" - app:layout_constraintEnd_toEndOf="parent" - android:layout_marginEnd="12dp" - android:text="足球基础教学(玩湃-喜望店)" - android:singleLine="true" - android:textColor="@color/textColor" - android:textSize="16sp" - android:textStyle="bold" - android:layout_marginStart="10dp"/> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_time" - app:layout_constraintStart_toStartOf="@id/tv_name" - app:layout_constraintTop_toBottomOf="@id/tv_name" - android:textColor="@color/textColor66" - android:textSize="14sp" - android:drawableStart="@mipmap/icon_time" - android:text="上课时间:9:00-11:00" - android:drawablePadding="2dp" - android:layout_marginTop="7dp"/> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_count" - app:layout_constraintStart_toStartOf="@id/tv_name" - app:layout_constraintTop_toBottomOf="@id/tv_time" - android:textColor="@color/color_text_price" - android:textSize="14sp" - android:drawableStart="@mipmap/keshi1" - android:text="包含课时数:50课时" - android:drawablePadding="3dp" - android:layout_marginTop="9dp"/> - - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_join_count" - app:layout_constraintStart_toStartOf="@id/tv_name" - app:layout_constraintBaseline_toBaselineOf="@id/tv_price" - android:textColor="@color/color_text_price" - android:textSize="14sp" - android:text="已报名20人" - android:drawablePadding="2dp" - android:layout_marginTop="7dp"/> - - - <TextView - android:id="@+id/tv_price" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="详情" - app:layout_constraintEnd_toEndOf="@id/tv_name" - app:layout_constraintBottom_toBottomOf="@id/iv_img" - android:layout_marginBottom="1dp" - android:textColor="@color/white" - android:textStyle="bold" - android:textSize="14sp" - android:paddingVertical="5dp" - android:paddingHorizontal="6dp" - android:background="@drawable/bg_orange_2dp"/> - <View - android:layout_width="match_parent" - android:layout_height="1px" - android:background="@color/dividing_line_color" - app:layout_constraintTop_toBottomOf="@id/iv_img" - android:layout_marginTop="23dp" - android:layout_marginHorizontal="13dp"/> -</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_shop_menu.xml b/app/src/main/res/layout/item_shop_menu.xml deleted file mode 100644 index f2b84dd..0000000 --- a/app/src/main/res/layout/item_shop_menu.xml +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="wrap_content" - xmlns:app="http://schemas.android.com/apk/res-auto"> - <com.facebook.drawee.view.SimpleDraweeView - android:layout_width="match_parent" - android:layout_height="0dp" - android:layout_marginHorizontal="3dp" - android:id="@+id/iv_big" - app:roundedCornerRadius="10dp" - app:layout_constraintDimensionRatio="1:1" - app:layout_constraintTop_toTopOf="parent" - android:layout_marginTop="7dp" - app:layout_constraintBottom_toBottomOf="parent" - app:placeholderImage="@color/page_bg" - app:actualImageScaleType="centerCrop" - android:layout_marginBottom="8dp" - android:elevation="4dp"/> - -</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_student_switch.xml b/app/src/main/res/layout/item_student_switch.xml deleted file mode 100644 index c66022b..0000000 --- a/app/src/main/res/layout/item_student_switch.xml +++ /dev/null @@ -1,98 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="wrap_content" - xmlns:app="http://schemas.android.com/apk/res-auto"> - <androidx.constraintlayout.widget.ConstraintLayout - android:id="@+id/bg" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_marginHorizontal="14dp" - app:layout_constraintTop_toTopOf="parent" - app:layout_constraintBottom_toBottomOf="parent" - android:layout_marginBottom="12dp" - android:background="@drawable/bg_orange_line_4dp"> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_name" - app:layout_constraintTop_toTopOf="parent" - app:layout_constraintStart_toStartOf="parent" - android:layout_marginStart="10dp" - android:layout_marginTop="13dp" - android:textSize="14sp" - android:text="姓名:" - android:textColor="@color/textColor"/> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_age" - app:layout_constraintStart_toStartOf="@id/tv_name" - app:layout_constraintTop_toBottomOf="@id/tv_name" - android:layout_marginTop="11dp" - android:textSize="14sp" - android:text="年龄:" - android:textColor="@color/textColor"/> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_birth" - app:layout_constraintStart_toStartOf="parent" - android:layout_marginStart="120dp" - app:layout_constraintBaseline_toBaselineOf="@id/tv_age" - android:textSize="14sp" - android:text="生日:" - android:textColor="@color/textColor"/> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_height" - app:layout_constraintStart_toStartOf="@id/tv_name" - app:layout_constraintTop_toBottomOf="@id/tv_age" - android:layout_marginTop="11dp" - app:layout_constraintBottom_toBottomOf="parent" - android:layout_marginBottom="17dp" - android:textSize="14sp" - android:text="身高:" - android:textColor="@color/textColor"/> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_wight" - app:layout_constraintStart_toStartOf="parent" - android:layout_marginStart="120dp" - app:layout_constraintBaseline_toBaselineOf="@id/tv_height" - android:textSize="14sp" - android:text="体重:" - android:textColor="@color/textColor"/> - - <ImageView - android:id="@+id/iv_edit" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:src="@mipmap/bianjisekuai" - app:layout_constraintTop_toTopOf="parent" - app:layout_constraintEnd_toEndOf="parent" - android:layout_marginTop="3dp" - android:padding="10dp"/> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_default" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintBottom_toBottomOf="parent" - android:padding="10dp" - android:text="默认" - android:layout_marginBottom="7dp"/> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_set_default" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintBottom_toBottomOf="parent" - android:padding="10dp" - android:text="@string/set_default" - android:textColor="@color/colorPrimary" - android:layout_marginBottom="7dp"/> - </androidx.constraintlayout.widget.ConstraintLayout> -</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_video_grid.xml b/app/src/main/res/layout/item_video_grid.xml deleted file mode 100644 index 5565c97..0000000 --- a/app/src/main/res/layout/item_video_grid.xml +++ /dev/null @@ -1,44 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:paddingBottom="20dp" - xmlns:app="http://schemas.android.com/apk/res-auto"> - <com.facebook.drawee.view.SimpleDraweeView - android:layout_width="match_parent" - android:layout_height="0dp" - android:layout_marginHorizontal="11dp" - app:layout_constraintTop_toTopOf="parent" - app:roundedCornerRadius="6dp" - app:actualImageScaleType="centerCrop" - app:placeholderImage="@color/page_bg" - app:layout_constraintDimensionRatio="170:127" - android:id="@+id/iv_img"/> - <TextView - android:id="@+id/tv_name" - android:layout_width="0dp" - android:layout_height="wrap_content" - app:layout_constraintTop_toBottomOf="@id/iv_img" - app:layout_constraintStart_toStartOf="@id/iv_img" - app:layout_constraintEnd_toEndOf="@id/iv_img" - android:layout_marginTop="11dp" - android:text="颠球训练" - android:textSize="14sp" - android:textStyle="bold" - android:textColor="@color/textColor"/> - <TextView - android:id="@+id/tv_introduce" - android:layout_width="0dp" - android:layout_height="wrap_content" - app:layout_constraintTop_toBottomOf="@id/tv_name" - app:layout_constraintStart_toStartOf="@id/iv_img" - app:layout_constraintEnd_toEndOf="@id/iv_img" - android:layout_marginTop="3dp" - android:text="颠球训练" - android:lines="2" - android:maxLines="2" - android:ellipsize="end" - android:textSize="12sp" - android:textColor="@color/textColor66"/> - -</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_video_type.xml b/app/src/main/res/layout/item_video_type.xml deleted file mode 100644 index 411ce0f..0000000 --- a/app/src/main/res/layout/item_video_type.xml +++ /dev/null @@ -1,43 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="wrap_content" - xmlns:app="http://schemas.android.com/apk/res-auto"> - - <TextView - android:id="@+id/tv_more" - android:text="查看更多" - app:layout_constraintTop_toTopOf="parent" - app:layout_constraintEnd_toEndOf="parent" - android:paddingVertical="11dp" - android:layout_marginTop="10dp" - android:layout_marginEnd="14dp" - android:textSize="14sp" - android:textColor="@color/colorPrimary" - android:textStyle="bold" - android:layout_width="wrap_content" - android:layout_height="wrap_content" /> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_name" - app:layout_constraintBaseline_toBaselineOf="@id/tv_more" - app:layout_constraintStart_toStartOf="parent" - android:layout_marginStart="14dp" - android:textStyle="bold" - android:textSize="16sp" - android:textColor="@color/textColor" - android:text="篮球"/> - <androidx.recyclerview.widget.RecyclerView - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:id="@+id/rv_video" - app:layout_constraintTop_toBottomOf="@id/tv_more" - android:layout_marginHorizontal="3dp"/> - <View - android:layout_width="match_parent" - android:layout_height="1px" - android:background="@color/dividing_line_color" - app:layout_constraintTop_toBottomOf="@id/rv_video" - android:layout_marginStart="14dp"/> -</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_week_view.xml b/app/src/main/res/layout/item_week_view.xml deleted file mode 100644 index 7e8319a..0000000 --- a/app/src/main/res/layout/item_week_view.xml +++ /dev/null @@ -1,27 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="wrap_content" - xmlns:app="http://schemas.android.com/apk/res-auto"> - <TextView - android:layout_width="match_parent" - android:layout_marginStart="5dp" - android:layout_marginEnd="5dp" - android:layout_height="0dp" - app:layout_constraintDimensionRatio="1:1" - android:gravity="center" - android:textColor="@color/colorTextOrange" - android:textSize="12sp" - app:layout_constraintTop_toTopOf="parent" - android:id="@+id/tv_day" - android:text="1\n周一"/> - <View - android:layout_width="20dp" - android:layout_height="3dp" - android:background="@drawable/bg_gradient_4dp" - app:layout_constraintTop_toBottomOf="@id/tv_day" - android:layout_marginTop="2dp" - android:id="@+id/iv_check" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintEnd_toEndOf="parent"/> -</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_welfare_goods.xml b/app/src/main/res/layout/item_welfare_goods.xml deleted file mode 100644 index 5cb99fe..0000000 --- a/app/src/main/res/layout/item_welfare_goods.xml +++ /dev/null @@ -1,40 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - xmlns:app="http://schemas.android.com/apk/res-auto"> - <com.facebook.drawee.view.SimpleDraweeView - android:layout_width="148dp" - android:layout_height="148dp" - app:layout_constraintTop_toTopOf="parent" - app:layout_constraintStart_toStartOf="parent" - app:actualImageScaleType="centerCrop" - app:placeholderImageScaleType="centerCrop" - app:placeholderImage="@color/page_bg" - android:id="@+id/iv_good"/> - <TextView - android:layout_width="0dp" - android:layout_height="wrap_content" - android:id="@+id/tv_name" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintEnd_toStartOf="@id/tv_price" - android:layout_marginEnd="3dp" - app:layout_constraintTop_toBottomOf="@id/iv_good" - android:layout_marginStart="7dp" - android:layout_marginTop="6dp" - android:textColor="@color/textColor" - android:textStyle="bold" - android:textSize="10sp" - android:text="创意运动飞盘"/> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_price" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintTop_toTopOf="@id/tv_name" - android:layout_marginEnd="7dp" - android:textColor="@color/textColor" - android:textStyle="bold" - android:textSize="10sp" - android:text="¥128"/> -</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_world_cup.xml b/app/src/main/res/layout/item_world_cup.xml deleted file mode 100644 index a0ef044..0000000 --- a/app/src/main/res/layout/item_world_cup.xml +++ /dev/null @@ -1,105 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="wrap_content" - xmlns:app="http://schemas.android.com/apk/res-auto"> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - app:layout_constraintTop_toTopOf="parent" - app:layout_constraintStart_toStartOf="parent" - android:layout_marginTop="17dp" - android:layout_marginStart="14dp" - android:text="社区世界杯活动" - android:id="@+id/tv_name" - android:textSize="18sp" - android:textColor="@color/textColor"/> - <TextView - android:id="@+id/tv_state" - android:textSize="14sp" - android:layout_marginEnd="14dp" - android:text="已结束" - android:visibility="gone" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - app:layout_constraintBaseline_toBaselineOf="@id/tv_name" - app:layout_constraintEnd_toEndOf="parent"/> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_heat" - app:layout_constraintBaseline_toBaselineOf="@id/tv_name" - app:layout_constraintEnd_toStartOf="@id/tv_state" - android:layout_marginEnd="10dp" - app:layout_goneMarginEnd="14dp" - android:textColor="@color/colorOrange" - android:textSize="18sp" - android:textStyle="bold" - android:text="99" - android:drawableStart="@mipmap/ic_heat" - android:drawablePadding="4dp" - android:gravity="center"/> - <com.facebook.drawee.view.SimpleDraweeView - android:layout_width="105dp" - android:layout_height="140dp" - app:layout_constraintTop_toBottomOf="@id/tv_name" - app:layout_constraintStart_toStartOf="@id/tv_name" - android:layout_marginTop="12dp" - app:layout_constraintBottom_toBottomOf="parent" - android:layout_marginBottom="17dp" - app:roundedCornerRadius="9dp" - app:actualImageScaleType="centerCrop" - android:id="@+id/iv_img"/> - <TextView - android:layout_width="0dp" - android:layout_height="wrap_content" - app:layout_constraintTop_toTopOf="@id/iv_img" - app:layout_constraintStart_toEndOf="@id/iv_img" - app:layout_constraintEnd_toEndOf="parent" - android:layout_marginEnd="14dp" - android:layout_marginStart="11dp" - android:maxLines="3" - android:ellipsize="end" - android:text="这是欢乐跑活动赛事简介,本次活动由海豚英语组织,提高全民素质这是欢乐跑活动赛事简介,本次活动由海豚英语组织,提高全民素质…" - android:textSize="12sp" - android:textColor="@color/textColor99" - android:lineSpacingExtra="5dp" - android:id="@+id/tv_info"/> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_age" - app:layout_constraintBottom_toBottomOf="@id/iv_img" - app:layout_constraintStart_toStartOf="@id/tv_info" - android:drawableStart="@mipmap/wc_age" - android:text="7-12岁" - android:textColor="@color/textColor66" - android:layout_marginBottom="12dp" - android:textSize="12sp" - android:drawablePadding="10dp" - android:gravity="center"/> - <TextView - android:layout_width="95dp" - android:layout_height="33dp" - android:id="@+id/tv_detail" - android:text="详情" - android:gravity="center" - android:textSize="18sp" - app:layout_constraintBottom_toBottomOf="@id/iv_img" - app:layout_constraintEnd_toEndOf="@id/tv_info" - android:textColor="@color/white" - android:background="@drawable/bg_dark_blue_16dp"/> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_deadline" - app:layout_constraintBottom_toTopOf="@id/tv_detail" - app:layout_constraintStart_toStartOf="@id/tv_info" - android:drawableStart="@mipmap/wc_time" - android:text="截止报名:2023-03-15 08:00" - android:textColor="@color/textColor66" - android:layout_marginBottom="13dp" - android:textSize="12sp" - android:drawablePadding="10dp" - android:gravity="center"/> -</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_world_rank.xml b/app/src/main/res/layout/item_world_rank.xml deleted file mode 100644 index 7551378..0000000 --- a/app/src/main/res/layout/item_world_rank.xml +++ /dev/null @@ -1,65 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="50dp" - android:id="@+id/bg" - xmlns:app="http://schemas.android.com/apk/res-auto" - android:orientation="horizontal"> - <RelativeLayout - android:layout_width="0dp" - android:layout_height="match_parent" - android:layout_weight="50"> - <ImageView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/iv_rank" - android:layout_centerInParent="true" /> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_rank" - android:layout_centerInParent="true" - android:textColor="@color/textColor66" - android:textStyle="bold" - android:textSize="12sp" - android:text="4"/> - </RelativeLayout> - <LinearLayout - android:layout_width="0dp" - android:layout_height="match_parent" - android:gravity="center_vertical" - android:layout_weight="122"> - <com.facebook.drawee.view.SimpleDraweeView - android:layout_width="34dp" - android:layout_height="34dp" - android:id="@+id/iv_avatar" - android:layout_marginStart="25dp" - app:roundAsCircle="true" - app:placeholderImage="@color/page_bg"/> - <TextView - android:id="@+id/tv_name" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="张*" - android:textSize="14sp" - android:layout_marginStart="10dp" - android:textColor="@color/textColor" - android:textStyle="bold"/> - </LinearLayout> - <TextView - android:id="@+id/tv_count" - android:layout_width="0dp" - android:layout_height="match_parent" - android:layout_weight="120" - android:text="200" - android:textSize="12sp" - android:gravity="center"/> - <TextView - android:id="@+id/tv_rate" - android:layout_width="0dp" - android:layout_height="match_parent" - android:layout_weight="73" - android:text="90%" - android:textSize="12sp" - android:gravity="center"/> -</LinearLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/item_world_user.xml b/app/src/main/res/layout/item_world_user.xml deleted file mode 100644 index 9f04ba9..0000000 --- a/app/src/main/res/layout/item_world_user.xml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="wrap_content" - xmlns:app="http://schemas.android.com/apk/res-auto"> - <com.facebook.drawee.view.SimpleDraweeView - android:layout_width="80dp" - android:layout_height="80dp" - android:id="@+id/iv_avatar" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintTop_toTopOf="parent" - app:roundAsCircle="true" - app:actualImageScaleType="centerCrop"/> - <ImageView - android:layout_width="30dp" - android:layout_height="30dp" - android:src="@mipmap/iv_del_user" - android:id="@+id/iv_del" - app:layout_constraintStart_toStartOf="@id/iv_avatar" - app:layout_constraintEnd_toEndOf="@id/iv_avatar" - app:layout_constraintTop_toTopOf="@id/iv_avatar" - android:layout_marginTop="70dp"/> -</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/layout_filter.xml b/app/src/main/res/layout/layout_filter.xml deleted file mode 100644 index 3aeb832..0000000 --- a/app/src/main/res/layout/layout_filter.xml +++ /dev/null @@ -1,47 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<LinearLayout - xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="100dp" - android:orientation="vertical" - android:background="@drawable/bg_deep_grey_line_4dp" - android:layout_height="wrap_content"> - <TextView - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:gravity="center" - android:textColor="@color/textColor" - android:textStyle="bold" - android:textSize="12sp" - android:paddingVertical="10dp" - android:id="@+id/tv_all" - android:text="全部"/> - <View - android:layout_width="match_parent" - android:layout_height="1dp" - android:background="@color/dividing_line_color"/> - <TextView - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:gravity="center" - android:textColor="@color/textColor" - android:textStyle="bold" - android:textSize="12sp" - android:paddingVertical="10dp" - android:id="@+id/tv_add" - android:text="增加"/> - <View - android:layout_width="match_parent" - android:layout_height="1dp" - android:background="@color/dividing_line_color"/> - <TextView - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:gravity="center" - android:textColor="@color/textColor" - android:textStyle="bold" - android:textSize="12sp" - android:paddingVertical="10dp" - android:id="@+id/tv_reduce" - android:text="扣除"/> - -</LinearLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/layout_filter_coupon.xml b/app/src/main/res/layout/layout_filter_coupon.xml deleted file mode 100644 index 0c130c5..0000000 --- a/app/src/main/res/layout/layout_filter_coupon.xml +++ /dev/null @@ -1,61 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<LinearLayout - xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="100dp" - android:orientation="vertical" - android:background="@drawable/bg_deep_grey_line_4dp" - android:layout_height="wrap_content"> - <TextView - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:gravity="center" - android:textColor="@color/textColor" - android:textStyle="bold" - android:textSize="12sp" - android:paddingVertical="10dp" - android:id="@+id/tv_all" - android:text="全部"/> - <View - android:layout_width="match_parent" - android:layout_height="1dp" - android:background="@color/dividing_line_color"/> - <TextView - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:gravity="center" - android:textColor="@color/textColor" - android:textStyle="bold" - android:textSize="12sp" - android:paddingVertical="10dp" - android:id="@+id/tv_used" - android:text="已使用"/> - <View - android:layout_width="match_parent" - android:layout_height="1dp" - android:background="@color/dividing_line_color"/> - <TextView - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:gravity="center" - android:textColor="@color/textColor" - android:textStyle="bold" - android:textSize="12sp" - android:paddingVertical="10dp" - android:id="@+id/tv_unused" - android:text="未使用"/> - <View - android:layout_width="match_parent" - android:layout_height="1dp" - android:background="@color/dividing_line_color"/> - <TextView - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:gravity="center" - android:textColor="@color/textColor" - android:textStyle="bold" - android:textSize="12sp" - android:paddingVertical="10dp" - android:id="@+id/tv_disable" - android:text="已过期"/> - -</LinearLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/layout_filter_exchange_record.xml b/app/src/main/res/layout/layout_filter_exchange_record.xml deleted file mode 100644 index 378c68c..0000000 --- a/app/src/main/res/layout/layout_filter_exchange_record.xml +++ /dev/null @@ -1,75 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<LinearLayout - xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="100dp" - android:orientation="vertical" - android:background="@drawable/bg_deep_grey_line_4dp" - android:layout_height="wrap_content"> - <TextView - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:gravity="center" - android:textColor="@color/textColor" - android:textStyle="bold" - android:textSize="12sp" - android:paddingVertical="10dp" - android:id="@+id/tv_all" - android:text="全部"/> - <View - android:layout_width="match_parent" - android:layout_height="1dp" - android:background="@color/dividing_line_color"/> - <TextView - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:gravity="center" - android:textColor="@color/textColor" - android:textStyle="bold" - android:textSize="12sp" - android:paddingVertical="10dp" - android:id="@+id/tv_goods" - android:text="实物"/> - <View - android:layout_width="match_parent" - android:layout_height="1dp" - android:background="@color/dividing_line_color"/> - <TextView - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:gravity="center" - android:textColor="@color/textColor" - android:textStyle="bold" - android:textSize="12sp" - android:paddingVertical="10dp" - android:id="@+id/tv_course" - android:text="运动营"/> - <View - android:layout_width="match_parent" - android:layout_height="1dp" - android:background="@color/dividing_line_color"/> - <TextView - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:gravity="center" - android:textColor="@color/textColor" - android:textStyle="bold" - android:textSize="12sp" - android:paddingVertical="10dp" - android:id="@+id/tv_ticke" - android:text="门票"/> - <View - android:layout_width="match_parent" - android:layout_height="1dp" - android:background="@color/dividing_line_color"/> - <TextView - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:gravity="center" - android:textColor="@color/textColor" - android:textStyle="bold" - android:textSize="12sp" - android:paddingVertical="10dp" - android:id="@+id/tv_coupon" - android:text="优惠券"/> - -</LinearLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/layout_filter_time.xml b/app/src/main/res/layout/layout_filter_time.xml deleted file mode 100644 index 218f227..0000000 --- a/app/src/main/res/layout/layout_filter_time.xml +++ /dev/null @@ -1,61 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<LinearLayout - xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="100dp" - android:orientation="vertical" - android:background="@drawable/bg_deep_grey_line_4dp" - android:layout_height="wrap_content"> - <TextView - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:gravity="center" - android:textColor="@color/textColor" - android:textStyle="bold" - android:textSize="12sp" - android:paddingVertical="10dp" - android:id="@+id/tv_all" - android:text="全部"/> - <View - android:layout_width="match_parent" - android:layout_height="1dp" - android:background="@color/dividing_line_color"/> - <TextView - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:gravity="center" - android:textColor="@color/textColor" - android:textStyle="bold" - android:textSize="12sp" - android:paddingVertical="10dp" - android:id="@+id/tv_week" - android:text="最近一周"/> - <View - android:layout_width="match_parent" - android:layout_height="1dp" - android:background="@color/dividing_line_color"/> - <TextView - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:gravity="center" - android:textColor="@color/textColor" - android:textStyle="bold" - android:textSize="12sp" - android:paddingVertical="10dp" - android:id="@+id/tv_month" - android:text="最近一月"/> - <View - android:layout_width="match_parent" - android:layout_height="1dp" - android:background="@color/dividing_line_color"/> - <TextView - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:gravity="center" - android:textColor="@color/textColor" - android:textStyle="bold" - android:textSize="12sp" - android:paddingVertical="10dp" - android:id="@+id/tv_year" - android:text="最近一年"/> - -</LinearLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/layout_marker_icon.xml b/app/src/main/res/layout/layout_marker_icon.xml deleted file mode 100644 index 2a99e1e..0000000 --- a/app/src/main/res/layout/layout_marker_icon.xml +++ /dev/null @@ -1,18 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:background="@color/transparent" - xmlns:app="http://schemas.android.com/apk/res-auto"> - <TextView - android:layout_width="13dp" - android:layout_height="17dp" - android:id="@+id/tv_sort" - android:background="@mipmap/marker_normal" - app:layout_constraintTop_toTopOf="parent" - app:layout_constraintStart_toStartOf="parent" - android:textColor="@color/white" - android:textSize="9sp" - android:gravity="center" - android:text="1"/> -</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/layout_marker_info.xml b/app/src/main/res/layout/layout_marker_info.xml deleted file mode 100644 index 146e65f..0000000 --- a/app/src/main/res/layout/layout_marker_info.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:background="@color/transparent" - xmlns:app="http://schemas.android.com/apk/res-auto"> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/tv_name" - android:background="@mipmap/bg_end" - android:paddingHorizontal="8dp" - app:layout_constraintTop_toTopOf="parent" - app:layout_constraintStart_toStartOf="parent" - android:textColor="@color/textColor" - android:textSize="12sp" - android:textStyle="bold" - android:gravity="center_horizontal" - android:text="小李子" - android:maxWidth="120dp" - android:paddingTop="6dp"/> -</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/layout_tab.xml b/app/src/main/res/layout/layout_tab.xml deleted file mode 100644 index e58a147..0000000 --- a/app/src/main/res/layout/layout_tab.xml +++ /dev/null @@ -1,32 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<RelativeLayout - xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:clipChildren="false" - android:clipToPadding="false"> - - <TextView - android:id="@+id/tv_tab_title" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_centerInParent="true" - android:gravity="center" - android:fontFamily="@font/impact_regular" - android:singleLine="true"/> - - <com.flyco.tablayout.widget.MsgView - android:id="@+id/rtv_msg_tip" - xmlns:mv="http://schemas.android.com/apk/res-auto" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:gravity="center" - android:textColor="#ffffff" - android:textSize="11.5sp" - android:visibility="gone" - mv:mv_backgroundColor="#FD481F" - mv:mv_isRadiusHalfHeight="true" - mv:mv_strokeColor="#ffffff" - mv:mv_strokeWidth="1dp"/> - -</RelativeLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/simple_week_bar.xml b/app/src/main/res/layout/simple_week_bar.xml deleted file mode 100644 index b0161fb..0000000 --- a/app/src/main/res/layout/simple_week_bar.xml +++ /dev/null @@ -1,82 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<merge xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:tools="http://schemas.android.com/tools" - android:id="@+id/ll_week" - android:layout_width="match_parent" - android:layout_height="32dp" - android:minHeight="32dp" - android:orientation="horizontal" - android:paddingBottom="7dp" - android:paddingTop="7dp" - tools:ignore="HardcodedText"> - - <TextView - android:layout_width="0dp" - android:layout_height="match_parent" - android:layout_weight="1" - android:gravity="center" - android:text="Sun" - android:textColor="#666666" - android:textSize="12sp" - android:textStyle="bold" /> - - <TextView - android:layout_width="0dp" - android:layout_height="match_parent" - android:layout_weight="1" - android:gravity="center" - android:text="Mon" - android:textColor="#666666" - android:textSize="12sp" - android:textStyle="bold" /> - - <TextView - android:layout_width="0dp" - android:layout_height="match_parent" - android:layout_weight="1" - android:gravity="center" - android:text="Tue" - android:textColor="#666666" - android:textSize="12sp" - android:textStyle="bold" /> - - <TextView - android:layout_width="0dp" - android:layout_height="match_parent" - android:layout_weight="1" - android:gravity="center" - android:text="Wed" - android:textColor="#666666" - android:textSize="12sp" - android:textStyle="bold" /> - - <TextView - android:layout_width="0dp" - android:layout_height="match_parent" - android:layout_weight="1" - android:gravity="center" - android:text="Thu" - android:textColor="#666666" - android:textSize="12sp" - android:textStyle="bold" /> - - <TextView - android:layout_width="0dp" - android:layout_height="match_parent" - android:layout_weight="1" - android:gravity="center" - android:text="Fri" - android:textColor="#666666" - android:textSize="12sp" - android:textStyle="bold" /> - - <TextView - android:layout_width="0dp" - android:layout_height="match_parent" - android:layout_weight="1" - android:gravity="center" - android:text="Sat" - android:textColor="#666666" - android:textSize="12sp" - android:textStyle="bold" /> -</merge> \ No newline at end of file diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index af3ee6c..94b8e3f 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -79,28 +79,6 @@ <item name="android:textStyle">bold</item> </style> -<!-- 筛选选项统一样式--> - <style name="style_tv_option"> - <item name="android:paddingTop">6dp</item> - <item name="android:paddingBottom">6dp</item> - <item name="android:textSize">14sp</item> - <item name="android:textColor">@color/selector_black_red</item> - <item name="android:gravity">center</item> - <item name="android:textAlignment">center</item> - <item name="android:background">@drawable/selector_bg_filter</item> - </style> - -<!-- 解析题筛选CheckBox样式--> - <style name="style_rb_analysis"> - <item name="android:paddingTop">5dp</item> - <item name="android:paddingBottom">5dp</item> - <item name="android:textSize">15sp</item> - <item name="android:textColor">@color/selector_grey_white</item> - <item name="android:gravity">center</item> - <item name="android:button">@null</item> - <item name="android:background">@drawable/selector_bg_cb_analysis</item> - </style> - <!-- 通用的simpledraweeView--> <style name="style_common_img"> <item name="placeholderImage">@color/page_bg</item> @@ -108,17 +86,6 @@ <item name="roundedCornerRadius">2dp</item> </style> - <style name="style_item_pay"> - <item name="android:drawablePadding">14dp</item> - <item name="android:paddingTop">20dp</item> - <item name="android:paddingBottom">10dp</item> - <item name="android:button">@null</item> - <item name="android:background">@null</item> - <item name="android:textSize">16sp</item> - <item name="android:textColor">@color/color_text_price</item> - <item name="android:drawableEnd">@drawable/selector_check_pay</item> - <item name="android:textStyle">bold</item> - </style> diff --git a/settings.gradle b/settings.gradle index d4adb05..58cd141 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,3 +1,3 @@ include ':umeng_sdk' rootProject.name='DophinEnglish' -include ':app', ':xldutils-kotlin', ':umeng_sdk',':zxinglibrary' +include ':app', ':xldutils-kotlin', ':umeng_sdk' diff --git a/zxinglibrary/.gitignore b/zxinglibrary/.gitignore deleted file mode 100644 index 796b96d..0000000 --- a/zxinglibrary/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/build diff --git a/zxinglibrary/build.gradle b/zxinglibrary/build.gradle deleted file mode 100644 index bee3f37..0000000 --- a/zxinglibrary/build.gradle +++ /dev/null @@ -1,27 +0,0 @@ -apply plugin: 'com.android.library' - -android { - compileSdkVersion 29 - buildToolsVersion "29.0.3" - - defaultConfig { - minSdkVersion 19 - targetSdkVersion 29 - versionCode 1 - versionName "1.0.0" - - } - - buildTypes { - release { - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' - } - } - -} - -dependencies { - implementation fileTree(dir: 'libs', include: ['*.jar']) - api 'com.google.zxing:core:3.4.1' -} diff --git a/zxinglibrary/proguard-rules.pro b/zxinglibrary/proguard-rules.pro deleted file mode 100644 index f1b4245..0000000 --- a/zxinglibrary/proguard-rules.pro +++ /dev/null @@ -1,21 +0,0 @@ -# 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 diff --git a/zxinglibrary/src/androidTest/java/face/live/com/zxinglibrary/ExampleInstrumentedTest.java b/zxinglibrary/src/androidTest/java/face/live/com/zxinglibrary/ExampleInstrumentedTest.java deleted file mode 100644 index 10b556e..0000000 --- a/zxinglibrary/src/androidTest/java/face/live/com/zxinglibrary/ExampleInstrumentedTest.java +++ /dev/null @@ -1,26 +0,0 @@ -package face.live.com.zxinglibrary; - -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("face.live.com.zxinglibrary.test", appContext.getPackageName()); - } -} diff --git a/zxinglibrary/src/main/AndroidManifest.xml b/zxinglibrary/src/main/AndroidManifest.xml deleted file mode 100644 index ba2e4c2..0000000 --- a/zxinglibrary/src/main/AndroidManifest.xml +++ /dev/null @@ -1,9 +0,0 @@ -<manifest package="com.zxing.scanner" - - > - - <application> - - </application> -</manifest> - diff --git a/zxinglibrary/src/main/java/com/zxing/scanner/BeepManager.java b/zxinglibrary/src/main/java/com/zxing/scanner/BeepManager.java deleted file mode 100644 index 8b3d865..0000000 --- a/zxinglibrary/src/main/java/com/zxing/scanner/BeepManager.java +++ /dev/null @@ -1,131 +0,0 @@ -/* - * Copyright (C) 2010 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.zxing.scanner; - -import android.content.Context; -import android.content.res.AssetFileDescriptor; -import android.media.AudioManager; -import android.media.MediaPlayer; -import android.os.Vibrator; - -import java.io.Closeable; -import java.io.IOException; - -/** - * Manages beeps and vibrations - */ -final class BeepManager implements MediaPlayer.OnErrorListener, Closeable { - - private static final float BEEP_VOLUME = 0.10f; - private static final long VIBRATE_DURATION = 200L; - - private final Context context; - private MediaPlayer mediaPlayer; - private boolean playBeep; - private boolean vibrate; - private int mediaResId; - - BeepManager(Context context) { - this(context, 0); - } - - BeepManager(Context context, int mediaResId) { - this.context = context; - this.mediaPlayer = null; - setMediaResId(mediaResId); - } - - public void setMediaResId(int mediaResId) { - this.mediaResId = mediaResId; - updatePrefs(); - } - - synchronized void updatePrefs() { - //加入声音资源ID的判断 - playBeep = shouldBeep(context) && mediaResId > 0; - if (playBeep && mediaPlayer == null) { - mediaPlayer = buildMediaPlayer(context); - } - // 振动 - vibrate = false; - } - - synchronized void playBeepSoundAndVibrate() { - if (playBeep && mediaPlayer != null) { - mediaPlayer.start(); - } - if (vibrate) { - Vibrator vibrator = (Vibrator) context - .getSystemService(Context.VIBRATOR_SERVICE); - vibrator.vibrate(VIBRATE_DURATION); - } - } - - private static boolean shouldBeep(Context activity) { - // 播放提示音 - boolean shouldPlayBeep = true; - if (shouldPlayBeep) { - // See if sound settings overrides this - AudioManager audioService = (AudioManager) activity.getSystemService(Context.AUDIO_SERVICE); - if (audioService.getRingerMode() != AudioManager.RINGER_MODE_NORMAL) { - shouldPlayBeep = false; - } - } - return shouldPlayBeep; - } - - private MediaPlayer buildMediaPlayer(Context activity) { - MediaPlayer mediaPlayer = new MediaPlayer(); - try { - AssetFileDescriptor file = activity.getResources().openRawResourceFd(mediaResId); - try { - mediaPlayer.setDataSource(file.getFileDescriptor(), file.getStartOffset(), file.getLength()); - } finally { - file.close(); - } - mediaPlayer.setOnErrorListener(this); - mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); - mediaPlayer.setLooping(false); - mediaPlayer.setVolume(BEEP_VOLUME, BEEP_VOLUME); - mediaPlayer.prepare(); - return mediaPlayer; - } catch (IOException ioe) { - mediaPlayer.release(); - return null; - } - } - - @Override - public synchronized boolean onError(MediaPlayer mp, int what, int extra) { - if (what == MediaPlayer.MEDIA_ERROR_SERVER_DIED) { - //播放错误 - } else { - close(); - updatePrefs(); - } - return true; - } - - @Override - public synchronized void close() { - if (mediaPlayer != null) { - mediaPlayer.release(); - mediaPlayer = null; - } - } - -} diff --git a/zxinglibrary/src/main/java/com/zxing/scanner/CameraSurfaceView.java b/zxinglibrary/src/main/java/com/zxing/scanner/CameraSurfaceView.java deleted file mode 100644 index 38bb195..0000000 --- a/zxinglibrary/src/main/java/com/zxing/scanner/CameraSurfaceView.java +++ /dev/null @@ -1,164 +0,0 @@ -package com.zxing.scanner; - -import android.content.Context; -import android.graphics.Bitmap; -import android.graphics.Point; -import android.util.Log; -import android.view.SurfaceHolder; -import android.view.SurfaceView; - -import com.google.zxing.Result; -import com.zxing.scanner.camera.CameraManager; -import com.zxing.scanner.common.Scanner; - -import java.io.IOException; - -/** - * Created by hupei on 2017/12/13. - */ - -class CameraSurfaceView extends SurfaceView implements SurfaceHolder.Callback, ScannerViewHandler.HandleDecodeListener { - private static final String TAG = CameraSurfaceView.class.getSimpleName(); - - private ScannerView mScannerView; - private boolean hasSurface; - private CameraManager mCameraManager; - private ScannerViewHandler mScannerViewHandler; - - private boolean lightMode = false;//闪光灯,默认关闭 - private ScannerOptions mScannerOptions; - - CameraSurfaceView(Context context, ScannerView scannerView) { - super(context); - this.mScannerView = scannerView; - hasSurface = false; - } - - void onResume(ScannerOptions scannerOptions) { - this.mScannerOptions = scannerOptions; - this.mCameraManager = new CameraManager(getContext(), mScannerOptions); - this.mScannerViewHandler = null; - - SurfaceHolder surfaceHolder = getHolder(); - if (hasSurface) { - // The activity was paused but not stopped, so the surface still - // exists. Therefore - // surfaceCreated() won't be called, so init the camera here. - initCamera(surfaceHolder); - } else { - // Install the callback and wait for surfaceCreated() to init the - // camera. - surfaceHolder.addCallback(this); - } - } - - private void initCamera(SurfaceHolder surfaceHolder) { - if (surfaceHolder == null) { - throw new IllegalStateException("No SurfaceHolder provided"); - } - if (mCameraManager.isOpen()) { - Log.w(TAG, "initCamera() while already open -- late SurfaceView callback?"); - return; - } - try { - mCameraManager.openDriver(surfaceHolder); - requestLayout(); - mCameraManager.setTorch(lightMode); - // Creating the mScannerViewHandler starts the preview, which can also throw a - // RuntimeException. - if (mScannerViewHandler == null) { - mScannerViewHandler = new ScannerViewHandler(mScannerOptions, mCameraManager,this); - } - } catch (IOException ioe) { - Log.w(TAG, ioe); - } catch (RuntimeException e) { - // Barcode Scanner has seen crashes in the wild of this variety: - // java.?lang.?RuntimeException: Fail to connect to camera service - Log.w(TAG, "Unexpected error initializing camera", e); - } - } - - void onPause() { - if (mScannerViewHandler != null) { - mScannerViewHandler.quitSynchronously(); - mScannerViewHandler = null; - } - mCameraManager.closeDriver(); - } - - void setTorch(boolean mode) { - this.lightMode = mode; - if (mCameraManager != null) mCameraManager.setTorch(lightMode); - } - - void restartPreviewAfterDelay(long delayMS) { - if (mScannerViewHandler != null) - mScannerViewHandler.sendEmptyMessageDelayed(Scanner.RESTART_PREVIEW, delayMS); - } - - @Override - public void surfaceCreated(SurfaceHolder surfaceHolder) { -// if (surfaceHolder == null) { -// Log.e(TAG, "*** WARNING *** surfaceCreated() gave us a null surface!"); -// } - if (!hasSurface) { - hasSurface = true; - initCamera(surfaceHolder); - } - } - - @Override - public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { - - } - - @Override - public void surfaceDestroyed(SurfaceHolder surfaceHolder) { - hasSurface = false; - if (!hasSurface && surfaceHolder != null) { - surfaceHolder.removeCallback(this); - } - } - - CameraManager getCameraManager() { - return mCameraManager; - } - - @Override - public void restartPreview() { - mScannerView.drawViewfinder(); - } - - @Override - public void decodeSucceeded(Result rawResult, Bitmap barcode, float scaleFactor) { - mScannerView.handleDecode(rawResult, barcode, scaleFactor); - } - - @Override - public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { - int width = getDefaultSize(getSuggestedMinimumWidth(), widthMeasureSpec); - int height = getDefaultSize(getSuggestedMinimumHeight(), heightMeasureSpec); - boolean portrait = true; - if (mCameraManager != null) { - portrait = mCameraManager.isPortrait(); - if (portrait && mCameraManager.getCameraResolution() != null) { - Point cameraResolution = mCameraManager.getCameraResolution(); - int cameraPreviewWidth = cameraResolution.y; - int cameraPreviewHeight = cameraResolution.x; - if (width * 1f / height < cameraPreviewWidth * 1f / cameraPreviewHeight) { - float ratio = cameraPreviewHeight * 1f / cameraPreviewWidth; - width = (int) (height / ratio + 0.5f); - } else { - float ratio = cameraPreviewWidth * 1f / cameraPreviewHeight; - height = (int) (width / ratio + 0.5f); - } - } - } - if (portrait) { - super.onMeasure(MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY), - MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY)); - } else { - super.onMeasure(widthMeasureSpec, heightMeasureSpec); - } - } -} diff --git a/zxinglibrary/src/main/java/com/zxing/scanner/OnScannerCompletionListener.java b/zxinglibrary/src/main/java/com/zxing/scanner/OnScannerCompletionListener.java deleted file mode 100644 index c4edde7..0000000 --- a/zxinglibrary/src/main/java/com/zxing/scanner/OnScannerCompletionListener.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.zxing.scanner; - -import android.graphics.Bitmap; - -import com.google.zxing.Result; - -/** - * Created by hupei on 2016/7/1. - */ -public interface OnScannerCompletionListener { - /** - * 扫描成功后将调用 - * <pre> - * ParsedResultType type = parsedResult.getType(); - * switch (type) { - * case ADDRESSBOOK: - * AddressBookParsedResult addressResult = (AddressBookParsedResult) parsedResult; - * break; - * case URI: - * URIParsedResult uriParsedResult = (URIParsedResult) parsedResult; - * break; - * } - * </pre> - * - * @param rawResult 扫描结果 - * @param barcode 位图 - */ - void onScannerCompletion(Result rawResult, Bitmap barcode); -} diff --git a/zxinglibrary/src/main/java/com/zxing/scanner/ScannerOptions.java b/zxinglibrary/src/main/java/com/zxing/scanner/ScannerOptions.java deleted file mode 100644 index 0b844ab..0000000 --- a/zxinglibrary/src/main/java/com/zxing/scanner/ScannerOptions.java +++ /dev/null @@ -1,597 +0,0 @@ -package com.zxing.scanner; - -import android.graphics.Canvas; -import android.graphics.Color; -import android.graphics.Rect; -import android.view.View; - -import com.google.zxing.BarcodeFormat; -import com.zxing.scanner.camera.open.CameraFacing; -import com.zxing.scanner.common.Scanner; -import com.zxing.scanner.decode.DecodeFormatManager; - -import java.util.Collection; - -/** - * Created by hupei on 2017/11/21. - */ - -public final class ScannerOptions { - - public static final int DEFAULT_LASER_LINE_HEIGHT = 2;//扫描线默认高度 - private LaserStyle laserStyle = LaserStyle.COLOR_LINE; - private int laserLineColor = Scanner.color.VIEWFINDER_LASER;//扫描线颜色rgb值 - private int laserLineResId;//扫描线资源文件 - private int laserLineHeight = DEFAULT_LASER_LINE_HEIGHT;//扫描线高度,网络样式无效,单位dp - private int laserLineMoveSpeed = 6;//扫描线移动间距,默认每毫秒移动6px,单位px - private boolean laserMoveFullScreen;//扫描线全屏移动,默认在扫描框内移动 - private int frameStrokeColor = Color.WHITE;//扫描边框颜色rgb值 - private float frameStrokeWidth = 1f;//扫描边框的宽度,单位px - private int frameWidth;//扫描框的宽度,单位dp - private int frameHeight;//扫描框的高度,单位dp - private int frameCornerColor = laserLineColor;//扫描框4角颜色rgb值 - private int frameCornerLength = 15;//扫描框4角长度,单位dp 默认15 - private int frameCornerWidth = 2;//扫描框4角宽度,单位dp 默认2 - private boolean frameCornerInside = true;//扫描框4角是否在框外,默认框内 - private boolean frameCornerHide;//是否隐藏扫描框4角,默认显示 - private int frameTopMargin;//扫描框与顶部间距,单位dp,默认居中 - private boolean frameHide;//是否隐藏扫描框,默认显示 - private boolean viewfinderHide;//是否隐藏整个取景视图,包括文字,默认显示 - private String tipText = "将二维码放入框内,即可自动扫描";//提示文字 - private int tipTextColor = Color.WHITE;//提示文字颜色rgb值,默认白色 - private int tipTextSize = 15;//提交文字大小,单位sp 默认15 - private boolean tipTextToFrameTop;//是否在扫描框上方,默认下方 - private int tipTextToFrameMargin = 20;//离扫描框间距,单位dp 默认20 - private int mediaResId;//扫描成功音频资源文件 - private Collection<BarcodeFormat> decodeFormats;//解码类型,默认解全部 - private boolean createQrThumbnail;//生成扫描结果缩略图,默认不生成,也就是扫描成功后的第三个参数 - private boolean showQrThumbnail;//是否显示扫描结果缩略图在扫描界面 - private CameraFacing cameraFacing = CameraFacing.BACK;//启动摄像头位置,默认后置 - private boolean scanFullScreen;//是否全屏扫描识别,默认扫描框内识别 - private boolean scanInvert;//是否扫描反色二维码(用于黑底白码) - private double cameraZoomRatio;//相机变焦比率 - private ViewfinderCallback viewfinderCallback; - private int frameOutsideColor = Scanner.color.VIEWFINDER_MASK;//扫描框以外区域半透明黑色 - private String characterSet; - - protected ScannerOptions() { - } - - public LaserStyle getLaserStyle() { - return laserStyle; - } - - public int getLaserLineColor() { - return laserLineColor; - } - - public int getLaserLineResId() { - return laserLineResId; - } - - public int getLaserLineHeight() { - return laserLineHeight; - } - - public int getLaserLineMoveSpeed() { - return laserLineMoveSpeed; - } - - public boolean isLaserMoveFullScreen() { - return laserMoveFullScreen; - } - - public int getFrameStrokeColor() { - return frameStrokeColor; - } - - public float getFrameStrokeWidth() { - return frameStrokeWidth; - } - - public int getFrameWidth() { - return frameWidth; - } - - public int getFrameHeight() { - return frameHeight; - } - - public int getFrameCornerColor() { - return frameCornerColor; - } - - public int getFrameCornerLength() { - return frameCornerLength; - } - - public int getFrameCornerWidth() { - return frameCornerWidth; - } - - public boolean isFrameCornerInside() { - return frameCornerInside; - } - - public boolean isFrameCornerHide() { - return frameCornerHide; - } - - public int getFrameTopMargin() { - return frameTopMargin; - } - - public boolean isFrameHide() { - return frameHide; - } - - public boolean isViewfinderHide() { - return viewfinderHide; - } - - public String getTipText() { - return tipText; - } - - public int getTipTextColor() { - return tipTextColor; - } - - public int getTipTextSize() { - return tipTextSize; - } - - public boolean isTipTextToFrameTop() { - return tipTextToFrameTop; - } - - public int getTipTextToFrameMargin() { - return tipTextToFrameMargin; - } - - public int getMediaResId() { - return mediaResId; - } - - public Collection<BarcodeFormat> getDecodeFormats() { - return decodeFormats; - } - - public boolean isCreateQrThumbnail() { - return createQrThumbnail; - } - - public boolean isShowQrThumbnail() { - return showQrThumbnail; - } - - public CameraFacing getCameraFacing() { - return cameraFacing; - } - - public boolean isScanFullScreen() { - return scanFullScreen; - } - - public boolean isScanInvert() { - return scanInvert; - } - - public double getCameraZoomRatio() { - return cameraZoomRatio; - } - - public ViewfinderCallback getViewfinderCallback() { - return viewfinderCallback; - } - - public int getFrameOutsideColor() { - return frameOutsideColor; - } - - public String getCharacterSet() { - return characterSet; - } - - public enum LaserStyle { - /** - * 颜色线值样式 - */ - COLOR_LINE - /** - * 资源文件线样式 - */ - , RES_LINE - /** - * 资源文件网格样式 - */ - , RES_GRID - } - - public interface ViewfinderCallback { - void onDraw(View view, Canvas canvas, Rect frame); - } - - public static final class Builder { - private ScannerOptions options; - - public Builder() { - options = new ScannerOptions(); - } - - public ScannerOptions build() { - return options; - } - - /** - * 扫描线样式 - * - * @param style 默认为{@link LaserStyle#COLOR_LINE 颜色线} - * @param value style=COLOR_LINE,value为颜色值rgb,其余样式value为resId - * @return - */ - public Builder setLaserStyle(LaserStyle style, int value) { - options.laserStyle = style; - if (style == LaserStyle.COLOR_LINE) { - options.laserLineColor = value; - } else { - options.laserLineResId = value; - } - return this; - } - - /** - * 设置扫描线颜色值<br> - * 只支持扫描线样式为{@link LaserStyle#COLOR_LINE 颜色线} - * - * @param color rgb 颜色值 - */ - public Builder setLaserLineColor(int color) { - options.laserStyle = LaserStyle.COLOR_LINE; - options.laserLineColor = color; - return this; - } - - /** - * 设置扫描线高度<br> - * 支持扫描线样式为{@link LaserStyle#COLOR_LINE 颜色线} - * or {@link LaserStyle#RES_LINE 资源文件} - * - * @param height dp - */ - public Builder setLaserLineHeight(int height) { - options.laserLineHeight = height; - return this; - } - - /** - * 设置扫描框线移动间距 - * - * @param moveSpeed 每毫秒移动 moveSpeed 像素 px - * @return - */ - public Builder setLaserMoveSpeed(int moveSpeed) { - options.laserLineMoveSpeed = moveSpeed; - return this; - } - - /** - * 扫描线是否全屏移动 - * - * @param fullScreen true全屏,false扫描框内 - * @return - */ - public Builder setLaserMoveFullScreen(boolean fullScreen) { - options.laserMoveFullScreen = fullScreen; - return this; - } - - /** - * 扫描边框颜色值,默认白色 - * - * @param color rgb颜色值 - * @return - */ - public Builder setFrameStrokeColor(int color) { - options.frameStrokeColor = color; - return this; - } - - /** - * 扫描边框宽度,默认1px - * - * @param width 单位px - * @return - */ - public Builder setFrameStrokeWidth(float width) { - options.frameStrokeWidth = width; - return this; - } - - /** - * 设置扫描框大小 - * - * @param width dp - * @param height dp - */ - public Builder setFrameSize(int width, int height) { - options.frameWidth = width; - options.frameHeight = height; - return this; - } - - /** - * 设置扫描框4角颜色值 - * - * @param color rgb - */ - public Builder setFrameCornerColor(int color) { - options.frameCornerColor = color; - return this; - } - - /** - * 设置扫描框4角长度 - * - * @param length dp - */ - public Builder setFrameCornerLength(int length) { - options.frameCornerLength = length; - return this; - } - - /** - * 设置扫描框4角宽度 - * - * @param width dp - */ - public Builder setFrameCornerWidth(int width) { - options.frameCornerWidth = width; - return this; - } - - /** - * 设置扫描框4角是否在框内,默认框外 - * - * @param inside true内部 - * @return - */ - public Builder setFrameCornerInside(boolean inside) { - options.frameCornerInside = inside; - return this; - } - - /** - * 是否隐藏扫描框4角 - * - * @param hide true隐藏 - * @return - */ - public Builder setFrameCornerHide(boolean hide) { - options.frameCornerHide = hide; - if (!hide) - options.laserMoveFullScreen = false; - return this; - } - - /** - * 设置扫描框与屏幕顶部距离 - * - * @param margin dp - */ - public Builder setFrameTopMargin(int margin) { - options.frameTopMargin = margin; - return this; - } - - /** - * 是否隐藏扫描框,默认不隐藏 - * - * @param hide true隐藏 - * @return - */ - public Builder setFrameHide(boolean hide) { - options.frameHide = hide; - if (!hide)//非显示则关闭全屏移动扫描线 - options.laserMoveFullScreen = false; - return this; - } - - /** - * 设置隐藏取景视图包括文字,默认不隐藏 - * - * @param hide - * @return - */ - public Builder setViewfinderHide(boolean hide) { - options.viewfinderHide = hide; - return this; - } - - /** - * 设置文字 - * - * @param text 文字 - */ - public Builder setTipText(String text) { - options.tipText = text; - return this; - } - - /** - * 设置文字颜色 - * - * @param color 文字颜色 - */ - public Builder setTipTextColor(int color) { - options.tipTextColor = color; - return this; - } - - /** - * 设置文字大小 - * - * @param size 文字大小 sp - */ - public Builder setTipTextSize(int size) { - options.tipTextSize = size; - return this; - } - - /** - * 设置文字与扫描框间距 - * - * @param margin 间距 单位dp - */ - public Builder setTipTextToFrameMargin(int margin) { - options.tipTextToFrameMargin = margin; - return this; - } - - /** - * 设置文字是否在扫描框上方,默认下方 - * - * @param top true=上方,false=下方 - */ - public Builder setTipTextToFrameTop(boolean top) { - options.tipTextToFrameTop = top; - return this; - } - - /** - * 设置扫描成功的音频 - * - * @param resId - */ - public Builder setMediaResId(int resId) { - options.mediaResId = resId; - return this; - } - - /** - * 设置扫描解码类型(二维码、一维码、商品条码) - * - * @param scanMode {@linkplain Scanner.ScanMode mode} - * @return - */ - public Builder setScanMode(String scanMode) { - options.decodeFormats = DecodeFormatManager.parseDecodeFormats(scanMode); - return this; - } - - /** - * 设置扫描解码类型 - * - * @param barcodeFormat - * @return - */ - public Builder setScanMode(BarcodeFormat... barcodeFormat) { - options.decodeFormats = DecodeFormatManager.parseDecodeFormats(barcodeFormat); - return this; - } - - /** - * 是否创建扫描结果缩略图,也就是扫描成功后的第三个参数,默认不创建 - * - * @param thumbnail - * @return - */ - public Builder setCreateQrThumbnail(boolean thumbnail) { - options.createQrThumbnail = thumbnail; - return this; - } - - /** - * 是否显示扫描结果缩略图在扫描界面,默认不显示<br> - * {@link #setCreateQrThumbnail(boolean) setCreateQrThumbnail(true)才有效} - * - * @param show - * @return - */ - public Builder setShowQrThumbnail(boolean show) { - options.showQrThumbnail = show; - return this; - } - - /** - * 设置扫描摄像头,默认后置 - * - * @param cameraFacing - * @return - */ - public Builder setCameraFacing(CameraFacing cameraFacing) { - options.cameraFacing = cameraFacing; - return this; - } - - /** - * 是否全屏扫描,默认非全屏扫描<br> - * true=全屏扫描,则隐藏扫描框,扫描框4角,扫描线全屏上下移动<br> - * 如全屏扫描情况下,仍需显示扫描框、扫描框4角及扫描线在扫描框内上下的移动,则调用该方法之后再调用: - * {@link #setFrameHide(boolean) setFrameHide(false)}, - * {@link #setFrameCornerHide(boolean) setFrameCornerHide(false)}, - * {@link #setLaserMoveFullScreen(boolean) setLaserMoveFullScreen(false)} - * - * @param scanFullScreen - * @return - */ - public Builder setScanFullScreen(boolean scanFullScreen) { - options.scanFullScreen = scanFullScreen; - if (scanFullScreen) { - options.frameHide = true; - options.frameCornerHide = true; - options.laserMoveFullScreen = true; - } - return this; - } - - /** - * 是否扫描反色二维码(黑底白码) - * - * @param invertScan - * @return - */ - public Builder setScanInvert(boolean invertScan) { - options.scanInvert = invertScan; - return this; - } - - /** - * 设置相机变焦比率 - * - * @param cameraZoomRatio >0 建议2倍 - * @return - */ - public Builder setCameraZoomRatio(double cameraZoomRatio) { - options.cameraZoomRatio = cameraZoomRatio; - return this; - } - - public Builder setViewfinderCallback(ViewfinderCallback callback) { - options.viewfinderCallback = callback; - return this; - } - - /** - * 设置扫描框以外区域颜色值 - * - * @param color rgb - * @return - */ - public Builder setFrameOutsideColor(int color) { - options.frameOutsideColor = color; - return this; - } - - /** - * 指定编码解析二维码 - * - * @param characterSet - * @return - */ - public Builder setCharacterSet(String characterSet) { - options.characterSet = characterSet; - return this; - } - } -} diff --git a/zxinglibrary/src/main/java/com/zxing/scanner/ScannerView.java b/zxinglibrary/src/main/java/com/zxing/scanner/ScannerView.java deleted file mode 100644 index e46e116..0000000 --- a/zxinglibrary/src/main/java/com/zxing/scanner/ScannerView.java +++ /dev/null @@ -1,454 +0,0 @@ -package com.zxing.scanner; - -import android.content.Context; -import android.graphics.Bitmap; -import android.graphics.Canvas; -import android.graphics.Paint; -import android.util.AttributeSet; -import android.view.View; -import android.widget.RelativeLayout; - -import com.google.zxing.BarcodeFormat; -import com.google.zxing.Result; -import com.google.zxing.ResultPoint; -import com.zxing.scanner.camera.open.CameraFacing; -import com.zxing.scanner.common.Scanner; - -/** - * Created by hupei on 2016/7/1. - */ -public class ScannerView extends RelativeLayout { - private static final String TAG = ScannerView.class.getSimpleName(); - private CameraSurfaceView mSurfaceView; - private ViewfinderView mViewfinderView; - private BeepManager mBeepManager; - private OnScannerCompletionListener mScannerCompletionListener; - - private ScannerOptions mScannerOptions; - private ScannerOptions.Builder mScannerOptionsBuilder; - - public ScannerView(Context context) { - this(context, null); - } - - public ScannerView(Context context, AttributeSet attrs) { - this(context, attrs, 0); - } - - public ScannerView(Context context, AttributeSet attrs, int defStyle) { - super(context, attrs, defStyle); - init(context, attrs, defStyle); - } - - private void init(Context context, AttributeSet attrs, int defStyle) { - mSurfaceView = new CameraSurfaceView(context, this); - mSurfaceView.setId(android.R.id.list); - addView(mSurfaceView); - - mViewfinderView = new ViewfinderView(context, attrs); - RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(context, attrs); - layoutParams.addRule(RelativeLayout.ALIGN_TOP, mSurfaceView.getId()); - layoutParams.addRule(RelativeLayout.ALIGN_BOTTOM, mSurfaceView.getId()); - addView(mViewfinderView, layoutParams); - - mScannerOptionsBuilder = new ScannerOptions.Builder(); - mScannerOptions = mScannerOptionsBuilder.build(); - } - - public void onResume() { - mSurfaceView.onResume(mScannerOptions); - mViewfinderView.setCameraManager(mSurfaceView.getCameraManager()); - mViewfinderView.setScannerOptions(mScannerOptions); - mViewfinderView.setVisibility(mScannerOptions.isViewfinderHide() ? View.GONE : View.VISIBLE); - if (mBeepManager != null) mBeepManager.updatePrefs(); - } - - public void onPause() { - mSurfaceView.onPause(); - if (mBeepManager != null) mBeepManager.close(); - mViewfinderView.laserLineBitmapRecycle(); - } - - - /** - * A valid barcode has been found, so give an indication of success and show - * the results. - * - * @param rawResult The contents of the barcode. - * @param scaleFactor amount by which thumbnail was scaled - * @param barcode A greyscale bitmap of the camera data which was decoded. - */ - void handleDecode(Result rawResult, Bitmap barcode, float scaleFactor) { - //扫描成功 - if (mScannerCompletionListener != null) { - //转换结果 - mScannerCompletionListener.onScannerCompletion(rawResult, barcode); - } - if (mScannerOptions.getMediaResId() != 0) { - if (mBeepManager == null) { - mBeepManager = new BeepManager(getContext()); - mBeepManager.setMediaResId(mScannerOptions.getMediaResId()); - } - mBeepManager.playBeepSoundAndVibrate(); - } - - if (barcode != null && mScannerOptions.isShowQrThumbnail()) { - mViewfinderView.drawResultBitmap(barcode); - drawResultPoints(barcode, scaleFactor, rawResult); - } - } - - /** - * Superimpose a line for 1D or dots for 2D to highlight the key features of - * the barcode. - * - * @param barcode A bitmap of the captured image. - * @param scaleFactor amount by which thumbnail was scaled - * @param rawResult The decoded results which contains the points to draw. - */ - private void drawResultPoints(Bitmap barcode, float scaleFactor, Result rawResult) { - ResultPoint[] points = rawResult.getResultPoints(); - if (points != null && points.length > 0) { - Canvas canvas = new Canvas(barcode); - Paint paint = new Paint(); - paint.setColor(Scanner.color.RESULT_POINTS); - if (points.length == 2) { - paint.setStrokeWidth(4.0f); - drawLine(canvas, paint, points[0], points[1], scaleFactor); - } else if (points.length == 4 - && (rawResult.getBarcodeFormat() == BarcodeFormat.UPC_A || rawResult.getBarcodeFormat() == BarcodeFormat.EAN_13)) { - // Hacky special case -- draw two lines, for the barcode and - // metadata - drawLine(canvas, paint, points[0], points[1], scaleFactor); - drawLine(canvas, paint, points[2], points[3], scaleFactor); - } else { - paint.setStrokeWidth(10.0f); - for (ResultPoint point : points) { - if (point != null) { - canvas.drawPoint(scaleFactor * point.getX(), scaleFactor * point.getY(), paint); - } - } - } - } - } - - private static void drawLine(Canvas canvas, Paint paint, ResultPoint a, ResultPoint b, float scaleFactor) { - if (a != null && b != null) { - canvas.drawLine(scaleFactor * a.getX(), scaleFactor * a.getY(), scaleFactor * b.getX(), scaleFactor * b.getY(), paint); - } - } - - /** - * 设置扫描成功监听器 - * - * @param listener - * @return - */ - public ScannerView setOnScannerCompletionListener(OnScannerCompletionListener listener) { - this.mScannerCompletionListener = listener; - return this; - } - - public void setScannerOptions(ScannerOptions scannerOptions) { - this.mScannerOptions = scannerOptions; - } - - /** - * 切换闪光灯 - * - * @param mode true开;false关 - */ - public ScannerView toggleLight(boolean mode) { - mSurfaceView.setTorch(mode); - return this; - } - - /** - * 在经过一段延迟后重置相机以进行下一次扫描。 成功扫描过后可调用此方法立刻准备进行下次扫描 - * - * @param delayMS 毫秒 - */ - public void restartPreviewAfterDelay(long delayMS) { - mSurfaceView.restartPreviewAfterDelay(delayMS); - } - - /** - * 设置扫描线颜色 - * - * @param color - */ - @Deprecated - public ScannerView setLaserColor(int color) { - mScannerOptionsBuilder.setLaserStyle(ScannerOptions.LaserStyle.COLOR_LINE, color); - return this; - } - - /** - * 设置线形扫描线资源 - * - * @param resId resId - */ - @Deprecated - public ScannerView setLaserLineResId(int resId) { - mScannerOptionsBuilder.setLaserStyle(ScannerOptions.LaserStyle.RES_LINE, resId); - return this; - } - - /** - * 设置网格扫描线资源 - * - * @param resId resId - */ - @Deprecated - public ScannerView setLaserGridLineResId(int resId) { - mScannerOptionsBuilder.setLaserStyle(ScannerOptions.LaserStyle.RES_GRID, resId); - return this; - } - - /** - * 设置扫描线高度 - * - * @param height dp - */ - @Deprecated - public ScannerView setLaserLineHeight(int height) { - mScannerOptionsBuilder.setLaserLineHeight(height); - return this; - } - - /** - * 设置扫描框4角颜色 - * - * @param color - */ - @Deprecated - public ScannerView setLaserFrameBoundColor(int color) { - mScannerOptionsBuilder.setFrameCornerColor(color); - return this; - } - - /** - * 设置扫描框4角长度 - * - * @param length dp - */ - @Deprecated - public ScannerView setLaserFrameCornerLength(int length) { - mScannerOptionsBuilder.setFrameCornerLength(length); - return this; - } - - /** - * 设置扫描框4角宽度 - * - * @param width dp - */ - @Deprecated - public ScannerView setLaserFrameCornerWidth(int width) { - mScannerOptionsBuilder.setFrameCornerWidth(width); - return this; - } - - /** - * 设置文字颜色 - * - * @param color 文字颜色 - */ - @Deprecated - public ScannerView setDrawTextColor(int color) { - mScannerOptionsBuilder.setTipTextColor(color); - return this; - } - - /** - * 设置文字大小 - * - * @param size 文字大小 sp - */ - @Deprecated - public ScannerView setDrawTextSize(int size) { - mScannerOptionsBuilder.setTipTextSize(size); - return this; - } - - /** - * 设置文字 - * - * @param text - * @param bottom 是否在扫描框下方 - */ - @Deprecated - public ScannerView setDrawText(String text, boolean bottom) { - mScannerOptionsBuilder.setTipText(text); - mScannerOptionsBuilder.setTipTextToFrameTop(!bottom); - return this; - } - - /** - * 设置文字 - * - * @param text - * @param bottom 是否在扫描框下方 - * @param margin 离扫描框间距 dp - */ - @Deprecated - public ScannerView setDrawText(String text, boolean bottom, int margin) { - mScannerOptionsBuilder.setTipText(text); - mScannerOptionsBuilder.setTipTextToFrameTop(!bottom); - mScannerOptionsBuilder.setTipTextToFrameMargin(margin); - return this; - } - - /** - * 设置文字 - * - * @param text - * @param size 文字大小 sp - * @param color 文字颜色 - * @param bottom 是否在扫描框下方 - * @param margin 离扫描框间距 dp - */ - @Deprecated - public ScannerView setDrawText(String text, int size, int color, boolean bottom, int margin) { - mScannerOptionsBuilder.setTipText(text); - mScannerOptionsBuilder.setTipTextSize(size); - mScannerOptionsBuilder.setTipTextColor(color); - mScannerOptionsBuilder.setTipTextToFrameTop(!bottom); - mScannerOptionsBuilder.setTipTextToFrameMargin(margin); - return this; - } - - /** - * 设置扫描完成播放声音 - * - * @param resId - */ - @Deprecated - public ScannerView setMediaResId(int resId) { - mScannerOptionsBuilder.setMediaResId(resId); - return this; - } - - /** - * 设置扫描框大小 - * - * @param width dp - * @param height dp - */ - @Deprecated - public ScannerView setLaserFrameSize(int width, int height) { - mScannerOptionsBuilder.setFrameSize(width, height); - return this; - } - - /** - * 设置扫描框与屏幕距离 - * - * @param margin - */ - @Deprecated - public ScannerView setLaserFrameTopMargin(int margin) { - mScannerOptionsBuilder.setFrameTopMargin(margin); - return this; - } - - /** - * 设置扫描解码类型(二维码、一维码、商品条码) - * - * @param scanMode {@linkplain Scanner.ScanMode mode} - * @return - */ - @Deprecated - public ScannerView setScanMode(String scanMode) { - mScannerOptionsBuilder.setScanMode(scanMode); - return this; - } - - /** - * 设置扫描解码类型 - * - * @param barcodeFormat - * @return - */ - @Deprecated - public ScannerView setScanMode(BarcodeFormat... barcodeFormat) { - mScannerOptionsBuilder.setScanMode(barcodeFormat); - return this; - } - - /** - * 是否显示扫描结果缩略图 - * - * @param showResThumbnail - * @return - */ - @Deprecated - public ScannerView isShowResThumbnail(boolean showResThumbnail) { - mScannerOptionsBuilder.setCreateQrThumbnail(showResThumbnail); - return this; - } - - /** - * 设置扫描框线移动间距,每毫秒移动 moveSpeed 像素 - * - * @param moveSpeed px - * @return - */ - @Deprecated - public ScannerView setLaserMoveSpeed(int moveSpeed) { - mScannerOptionsBuilder.setLaserMoveSpeed(moveSpeed); - return this; - } - - /** - * 设置扫描摄像头,默认后置 - * - * @param cameraFacing - * @return - */ - @Deprecated - public ScannerView setCameraFacing(CameraFacing cameraFacing) { - mScannerOptionsBuilder.setCameraFacing(cameraFacing); - return this; - } - - /** - * 是否全屏扫描 - * - * @param scanFullScreen - * @return - */ - @Deprecated - public ScannerView isScanFullScreen(boolean scanFullScreen) { - mScannerOptionsBuilder.setScanFullScreen(scanFullScreen); - return this; - } - - /** - * 设置隐藏取景视图,包括文字 - * - * @param hide - * @return - */ - @Deprecated - public ScannerView isHideLaserFrame(boolean hide) { - mScannerOptionsBuilder.setViewfinderHide(hide); - return this; - } - - /** - * 是否扫描反色二维码(黑底白码) - * - * @param invertScan - * @return - */ - @Deprecated - public ScannerView isScanInvert(boolean invertScan) { - mScannerOptionsBuilder.setScanInvert(invertScan); - return this; - } - - void drawViewfinder() { - mViewfinderView.drawViewfinder(); - } -} diff --git a/zxinglibrary/src/main/java/com/zxing/scanner/ScannerViewHandler.java b/zxinglibrary/src/main/java/com/zxing/scanner/ScannerViewHandler.java deleted file mode 100644 index 4b8ae1d..0000000 --- a/zxinglibrary/src/main/java/com/zxing/scanner/ScannerViewHandler.java +++ /dev/null @@ -1,129 +0,0 @@ -/* - * Copyright (C) 2008 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.zxing.scanner; - -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.os.Bundle; -import android.os.Handler; -import android.os.Message; - -import com.google.zxing.Result; -import com.zxing.scanner.camera.CameraManager; -import com.zxing.scanner.common.Scanner; -import com.zxing.scanner.decode.DecodeThread; - -/** - * 针对扫描任务的Handler,可接收的message有启动扫描(restart_preview)、扫描成功(decode_succeeded)、扫描失败(decode_failed)等等 - * This class handles all the messaging which comprises the state machine for - * capture. - * - * @author dswitkin@google.com (Daniel Switkin) - */ -final class ScannerViewHandler extends Handler { - - public interface HandleDecodeListener { - void restartPreview(); - - void decodeSucceeded(Result rawResult, Bitmap barcode, float scaleFactor); - } - - private final DecodeThread decodeThread; - private State state; - private final CameraManager cameraManager; - private HandleDecodeListener handleDecodeListener; - - private enum State { - PREVIEW, SUCCESS, DONE - } - - ScannerViewHandler(ScannerOptions scannerOptions, CameraManager cameraManager - , HandleDecodeListener handleDecodeListener) { - this.cameraManager = cameraManager; - this.handleDecodeListener = handleDecodeListener; - //启动扫描线程 - decodeThread = new DecodeThread(cameraManager, this - , scannerOptions.getDecodeFormats(),scannerOptions.getCharacterSet() - , scannerOptions.isCreateQrThumbnail()); - - decodeThread.start(); - state = State.SUCCESS; - //开启相机预览界面 - cameraManager.startPreview(); - //将preview回调函数与decodeHandler绑定、调用viewfinderView - restartPreviewAndDecode(); - } - - @Override - public void handleMessage(Message message) { - switch (message.what) { - case Scanner.RESTART_PREVIEW: - restartPreviewAndDecode(); - break; - case Scanner.DECODE_SUCCEEDED: - state = State.SUCCESS; - Bundle bundle = message.getData(); - Bitmap barcode = null; - float scaleFactor = 1.0f; - if (bundle != null) { - byte[] compressedBitmap = bundle - .getByteArray(DecodeThread.BARCODE_BITMAP); - if (compressedBitmap != null && compressedBitmap.length > 0) { - barcode = BitmapFactory.decodeByteArray(compressedBitmap, - 0, compressedBitmap.length, null); - barcode = barcode.copy(Bitmap.Config.ARGB_8888, true); - } - scaleFactor = bundle.getFloat(DecodeThread.BARCODE_SCALED_FACTOR); - } - if (handleDecodeListener != null) - handleDecodeListener.decodeSucceeded((Result) message.obj, barcode, scaleFactor); - break; - case Scanner.DECODE_FAILED: - state = State.PREVIEW; - cameraManager.requestPreviewFrame(decodeThread.getHandler(), Scanner.DECODE); - break; - case Scanner.RETURN_SCAN_RESULT: - break; - case Scanner.LAUNCH_PRODUCT_QUERY: - break; - } - } - - public void quitSynchronously() { - state = State.DONE; - cameraManager.stopPreview(); - Message quit = Message.obtain(decodeThread.getHandler(), Scanner.QUIT); - quit.sendToTarget(); - try { - decodeThread.join(500L); - } catch (InterruptedException e) { - e.printStackTrace(); - } - - removeMessages(Scanner.DECODE_SUCCEEDED); - removeMessages(Scanner.DECODE_FAILED); - } - - private void restartPreviewAndDecode() { - if (state == State.SUCCESS) { - state = State.PREVIEW; - cameraManager.requestPreviewFrame(decodeThread.getHandler(), Scanner.DECODE); - if (handleDecodeListener != null) - handleDecodeListener.restartPreview(); - } - } -} diff --git a/zxinglibrary/src/main/java/com/zxing/scanner/ViewfinderView.java b/zxinglibrary/src/main/java/com/zxing/scanner/ViewfinderView.java deleted file mode 100644 index 8647d77..0000000 --- a/zxinglibrary/src/main/java/com/zxing/scanner/ViewfinderView.java +++ /dev/null @@ -1,358 +0,0 @@ -/* - * Copyright (C) 2008 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.zxing.scanner; - -import android.content.Context; -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.graphics.Canvas; -import android.graphics.Paint; -import android.graphics.Point; -import android.graphics.Rect; -import android.graphics.RectF; -import android.text.Layout; -import android.text.StaticLayout; -import android.text.TextPaint; -import android.util.AttributeSet; -import android.view.View; - -import com.zxing.scanner.camera.CameraManager; -import com.zxing.scanner.common.Scanner; - - -/** - * This view is overlaid on top of the camera preview. It adds the viewfinder rectangle and partial - * transparency outside it, as well as the laser scanner animation and result points. - * - * @author dswitkin@google.com (Daniel Switkin) - */ -final class ViewfinderView extends View { - - private static final int CURRENT_POINT_OPACITY = 0xA0; - private static final int POINT_SIZE = 6; - private CameraManager cameraManager; - private final Paint paint; - private Bitmap resultBitmap; - - private int animationDelay = 0; - private Bitmap laserLineBitmap; - - private int resultColor = Scanner.color.RESULT_VIEW;//扫描成功后扫描框以外区域白色 - private int laserLineTop;// 扫描线最顶端位置 - - private int laserLineHeight;//扫描线默认高度 - private int frameCornerWidth;//扫描框4角宽 - private int frameCornerLength;//扫描框4角高 - private int tipTextSize;//提示文字大小 - private int tipTextMargin;//提示文字与扫描框距离 - private ScannerOptions scannerOptions; - - public ViewfinderView(Context context, AttributeSet attrs) { - super(context, attrs); - paint = new Paint(Paint.ANTI_ALIAS_FLAG); - } - - void setCameraManager(CameraManager cameraManager) { - this.cameraManager = cameraManager; - } - - void setScannerOptions(ScannerOptions scannerOptions) { - this.scannerOptions = scannerOptions; - laserLineHeight = dp2px(scannerOptions.getLaserLineHeight()); - frameCornerWidth = dp2px(scannerOptions.getFrameCornerWidth()); - frameCornerLength = dp2px(scannerOptions.getFrameCornerLength()); - - tipTextSize = Scanner.sp2px(getContext(), scannerOptions.getTipTextSize()); - tipTextMargin = dp2px(scannerOptions.getTipTextToFrameMargin()); - } - - private int dp2px(int dp) { - return Scanner.dp2px(getContext(), dp); - } - - @Override - public void onDraw(Canvas canvas) { - if (cameraManager == null) { - return; - } - Rect frame = cameraManager.getFramingRect();//取扫描框 - //取屏幕预览 - Rect previewFrame = cameraManager.getFramingRectInPreview(); - if (frame == null || previewFrame == null) { - return; - } - //全屏不绘制扫描框以外4个区域 - if (!scannerOptions.isScanFullScreen()) { - drawMask(canvas, frame); - } - // 如果有二维码结果的Bitmap,在扫取景框内绘制不透明的result Bitmap - if (resultBitmap != null) { - paint.setAlpha(CURRENT_POINT_OPACITY); - canvas.drawBitmap(resultBitmap, null, frame, paint); - } else { - if (!scannerOptions.isFrameHide()) - drawFrame(canvas, frame);//绘制扫描框 - if (!scannerOptions.isFrameCornerHide()) - drawFrameCorner(canvas, frame);//绘制扫描框4角 - drawText(canvas, frame);// 画扫描框下面的字 - - //全屏移动扫描线 - if (scannerOptions.isLaserMoveFullScreen()) { - moveLaserSpeedFullScreen(cameraManager.getScreenResolution());//计算全屏移动位置 - drawLaserLineFullScreen(canvas, cameraManager.getScreenResolution());//绘制全屏扫描线 - } else { - drawLaserLine(canvas, frame);//绘制扫描框内扫描线 - moveLaserSpeed(frame);//计算扫描框内移动位置 - } - if (scannerOptions.getViewfinderCallback() != null) { - scannerOptions.getViewfinderCallback().onDraw(this, canvas, frame); - } - } - } - - private void moveLaserSpeed(Rect frame) { - //初始化扫描线起始点为扫描框顶部位置 - if (laserLineTop == 0) { - laserLineTop = frame.top; - } - int laserMoveSpeed = scannerOptions.getLaserLineMoveSpeed(); - // 每次刷新界面,扫描线往下移动 LASER_VELOCITY - laserLineTop += laserMoveSpeed; - if (laserLineTop >= frame.bottom) { - laserLineTop = frame.top; - } - if (animationDelay == 0) { - animationDelay = (int) ((1.0f * 1000 * laserMoveSpeed) / (frame.bottom - frame.top)); - } - - // 只刷新扫描框的内容,其他地方不刷新 - postInvalidateDelayed(animationDelay, frame.left - POINT_SIZE, frame.top - POINT_SIZE - , frame.right + POINT_SIZE, frame.bottom + POINT_SIZE); - } - - private void moveLaserSpeedFullScreen(Point point) { - //初始化扫描线起始点为顶部位置 - int laserMoveSpeed = scannerOptions.getLaserLineMoveSpeed(); - // 每次刷新界面,扫描线往下移动 LASER_VELOCITY - laserLineTop += laserMoveSpeed; - if (laserLineTop >= point.y) { - laserLineTop = 0; - } - if (animationDelay == 0) { - animationDelay = (int) ((1.0f * 1000 * laserMoveSpeed) / point.y); - } - postInvalidateDelayed(animationDelay); - } - - /** - * 画扫描框外区域 - * - * @param canvas - * @param frame - */ - private void drawMask(Canvas canvas, Rect frame) { - int width = canvas.getWidth(); - int height = canvas.getHeight(); - paint.setColor(resultBitmap != null ? resultColor : scannerOptions.getFrameOutsideColor()); - canvas.drawRect(0, 0, width, frame.top, paint); - canvas.drawRect(0, frame.top, frame.left, frame.bottom + 1, paint); - canvas.drawRect(frame.right + 1, frame.top, width, frame.bottom + 1, paint); - canvas.drawRect(0, frame.bottom + 1, width, height, paint); - } - - /** - * 绘制提示文字 - * - * @param canvas - * @param frame - */ - private void drawText(Canvas canvas, Rect frame) { - TextPaint textPaint = new TextPaint(); - textPaint.setAntiAlias(true); - textPaint.setFlags(Paint.ANTI_ALIAS_FLAG); - textPaint.setStyle(Paint.Style.FILL); - textPaint.setColor(scannerOptions.getTipTextColor()); - textPaint.setTextSize(tipTextSize); - - float x = frame.left;//文字开始位置 - //根据 drawTextGravityBottom 文字在扫描框上方还是上文,默认下方 - float y = !scannerOptions.isTipTextToFrameTop() ? frame.bottom + tipTextMargin - : frame.top - tipTextMargin; - - StaticLayout staticLayout = new StaticLayout(scannerOptions.getTipText(), textPaint, frame.width() - , Layout.Alignment.ALIGN_CENTER, 1.0f, 0, false); - canvas.save(); - canvas.translate(x, y); - staticLayout.draw(canvas); - canvas.restore(); - } - - /** - * 绘制扫描框4角 - * - * @param canvas - * @param frame - */ - private void drawFrameCorner(Canvas canvas, Rect frame) { - paint.setColor(scannerOptions.getFrameCornerColor()); - paint.setStyle(Paint.Style.FILL); - if (scannerOptions.isFrameCornerInside()) { - // 左上角,左 - canvas.drawRect(frame.left, frame.top, frame.left + frameCornerWidth, frame.top + frameCornerLength, paint); - // 左上角,上 - canvas.drawRect(frame.left, frame.top, frame.left + frameCornerLength, frame.top + frameCornerWidth, paint); - // 右上角,右 - canvas.drawRect(frame.right - frameCornerWidth, frame.top, frame.right, frame.top + frameCornerLength, paint); - // 右上角,上 - canvas.drawRect(frame.right - frameCornerLength, frame.top, frame.right, frame.top + frameCornerWidth, paint); - // 左下角,左 - canvas.drawRect(frame.left, frame.bottom - frameCornerLength, frame.left + frameCornerWidth, frame.bottom, paint); - // 左下角,下 - canvas.drawRect(frame.left, frame.bottom - frameCornerWidth, frame.left + frameCornerLength, frame.bottom, paint); - // 右下角,右 - canvas.drawRect(frame.right - frameCornerWidth, frame.bottom - frameCornerLength, frame.right, frame.bottom, paint); - // 右下角,下 - canvas.drawRect(frame.right - frameCornerLength, frame.bottom - frameCornerWidth, frame.right, frame.bottom, paint); - } else { - // 左上角 - canvas.drawRect(frame.left - frameCornerWidth, frame.top, frame.left, frame.top + frameCornerLength, paint); - canvas.drawRect(frame.left - frameCornerWidth, frame.top - frameCornerWidth, frame.left + frameCornerLength, frame.top, paint); - // 右上角 - canvas.drawRect(frame.right, frame.top, frame.right + frameCornerWidth, frame.top + frameCornerLength, paint); - canvas.drawRect(frame.right - frameCornerLength, frame.top - frameCornerWidth, frame.right + frameCornerWidth, frame.top, paint); - // 左下角 - canvas.drawRect(frame.left - frameCornerWidth, frame.bottom - frameCornerLength, frame.left, frame.bottom, paint); - canvas.drawRect(frame.left - frameCornerWidth, frame.bottom, frame.left + frameCornerLength, frame.bottom + frameCornerWidth, paint); - // 右下角 - canvas.drawRect(frame.right, frame.bottom - frameCornerLength, frame.right + frameCornerWidth, frame.bottom, paint); - canvas.drawRect(frame.right - frameCornerLength, frame.bottom, frame.right + frameCornerWidth, frame.bottom + frameCornerWidth, paint); - } - } - - /** - * 画扫描框 - * - * @param canvas - * @param frame - */ - private void drawFrame(Canvas canvas, Rect frame) { - paint.setColor(scannerOptions.getFrameStrokeColor());//扫描边框色 - paint.setStrokeWidth(scannerOptions.getFrameStrokeWidth()); - paint.setStyle(Paint.Style.STROKE); - canvas.drawRect(frame, paint); - } - - /** - * 画扫描线 - * - * @param canvas - * @param frame - */ - private void drawLaserLine(Canvas canvas, Rect frame) { - if (scannerOptions.getLaserStyle() == ScannerOptions.LaserStyle.COLOR_LINE) { - paint.setStyle(Paint.Style.FILL); - paint.setColor(scannerOptions.getLaserLineColor());// 设置扫描线颜色 - canvas.drawRect(frame.left, laserLineTop, frame.right - , laserLineTop + laserLineHeight, paint); - } else { - if (laserLineBitmap == null)//图片资源文件转为 Bitmap - laserLineBitmap = BitmapFactory.decodeResource(getResources(), scannerOptions.getLaserLineResId()); - int height = laserLineBitmap.getHeight();//取原图高 - //网格图片 - if (scannerOptions.getLaserStyle() == ScannerOptions.LaserStyle.RES_GRID) { - RectF dstRectF = new RectF(frame.left, frame.top, frame.right, laserLineTop); - Rect srcRect = new Rect(0, (int) (height - dstRectF.height()) - , laserLineBitmap.getWidth(), height); - canvas.drawBitmap(laserLineBitmap, srcRect, dstRectF, paint); - } - //线条图片 - else { - //如果没有设置线条高度,则用图片原始高度 - if (laserLineHeight == dp2px(ScannerOptions.DEFAULT_LASER_LINE_HEIGHT)) { - laserLineHeight = laserLineBitmap.getHeight() / 2; - } - Rect laserRect = new Rect(frame.left, laserLineTop, frame.right - , laserLineTop + laserLineHeight); - canvas.drawBitmap(laserLineBitmap, null, laserRect, paint); - } - } - } - - - /** - * 画全屏宽扫描线 - * - * @param canvas - * @param point - */ - private void drawLaserLineFullScreen(Canvas canvas, Point point) { - if (scannerOptions.getLaserStyle() == ScannerOptions.LaserStyle.COLOR_LINE) { - paint.setStyle(Paint.Style.FILL); - paint.setColor(scannerOptions.getLaserLineColor());// 设置扫描线颜色 - canvas.drawRect(0, laserLineTop, point.x, laserLineTop + laserLineHeight, paint); - } else { - if (laserLineBitmap == null)//图片资源文件转为 Bitmap - laserLineBitmap = BitmapFactory.decodeResource(getResources(), scannerOptions.getLaserLineResId()); - int height = laserLineBitmap.getHeight();//取原图高 - //网格图片 - if (scannerOptions.getLaserStyle() == ScannerOptions.LaserStyle.RES_GRID) { - int dstRectFTop = 0; - if (laserLineTop >= height) { - dstRectFTop = laserLineTop - height; - } - RectF dstRectF = new RectF(0, dstRectFTop, point.x, laserLineTop); - Rect srcRect = new Rect(0, (int) (height - dstRectF.height()), laserLineBitmap.getWidth(), height); - canvas.drawBitmap(laserLineBitmap, srcRect, dstRectF, paint); - } - //线条图片 - else { - //如果没有设置线条高度,则用图片原始高度 - if (laserLineHeight == dp2px(ScannerOptions.DEFAULT_LASER_LINE_HEIGHT)) { - laserLineHeight = laserLineBitmap.getHeight() / 2; - } - Rect laserRect = new Rect(0, laserLineTop, point.x, laserLineTop + laserLineHeight); - canvas.drawBitmap(laserLineBitmap, null, laserRect, paint); - } - } - } - - void drawViewfinder() { - Bitmap resultBitmap = this.resultBitmap; - this.resultBitmap = null; - if (resultBitmap != null) { - resultBitmap.recycle(); - } - invalidate(); - } - - /** - * Draw a bitmap with the result points highlighted instead of the live scanning display. - * - * @param barcode An image of the decoded barcode. - */ - void drawResultBitmap(Bitmap barcode) { - resultBitmap = barcode; - invalidate(); - } - - void laserLineBitmapRecycle() { - if (laserLineBitmap != null) { - laserLineBitmap.recycle(); - laserLineBitmap = null; - } - } -} diff --git a/zxinglibrary/src/main/java/com/zxing/scanner/camera/AutoFocusManager.java b/zxinglibrary/src/main/java/com/zxing/scanner/camera/AutoFocusManager.java deleted file mode 100644 index 02d1a07..0000000 --- a/zxinglibrary/src/main/java/com/zxing/scanner/camera/AutoFocusManager.java +++ /dev/null @@ -1,131 +0,0 @@ -/* - * Copyright (C) 2012 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.zxing.scanner.camera; - -import android.hardware.Camera; -import android.os.AsyncTask; -import android.util.Log; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.concurrent.RejectedExecutionException; - -/** - * 2017/02/21 4:35 - */ -@SuppressWarnings("deprecation") -final class AutoFocusManager implements Camera.AutoFocusCallback { - - private static final String TAG = AutoFocusManager.class.getSimpleName(); - - private static final long AUTO_FOCUS_INTERVAL_MS = 1000L; - private static final Collection<String> FOCUS_MODES_CALLING_AF; - - static { - FOCUS_MODES_CALLING_AF = new ArrayList<>(2); - FOCUS_MODES_CALLING_AF.add(Camera.Parameters.FOCUS_MODE_AUTO); - FOCUS_MODES_CALLING_AF.add(Camera.Parameters.FOCUS_MODE_MACRO); - } - - private boolean stopped; - private boolean focusing; - private final boolean useAutoFocus; - private final Camera camera; - private AsyncTask<?, ?, ?> outstandingTask; - - AutoFocusManager(Camera camera) { - this.camera = camera; - String currentFocusMode = camera.getParameters().getFocusMode(); - // 自动对焦 - useAutoFocus = true && FOCUS_MODES_CALLING_AF.contains(currentFocusMode); - //Log.i(TAG, "Current focus mode '" + currentFocusMode + "'; use auto focus? " + - // useAutoFocus); - start(); - } - - @Override - public synchronized void onAutoFocus(boolean success, Camera theCamera) { - focusing = false; - autoFocusAgainLater(); - } - - private synchronized void autoFocusAgainLater() { - if (!stopped && outstandingTask == null) { - AutoFocusTask newTask = new AutoFocusTask(); - try { - newTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); - outstandingTask = newTask; - } catch (RejectedExecutionException ree) { - Log.w(TAG, "Could not request auto focus", ree); - } - } - } - - synchronized void start() { - if (useAutoFocus) { - outstandingTask = null; - if (!stopped && !focusing) { - try { - camera.autoFocus(this); - focusing = true; - } catch (RuntimeException re) { - // Have heard RuntimeException reported in Android 4.0.x+; continue? - Log.w(TAG, "Unexpected exception while focusing", re); - // Try again later to keep cycle going - autoFocusAgainLater(); - } - } - } - } - - private synchronized void cancelOutstandingTask() { - if (outstandingTask != null) { - if (outstandingTask.getStatus() != AsyncTask.Status.FINISHED) { - outstandingTask.cancel(true); - } - outstandingTask = null; - } - } - - synchronized void stop() { - stopped = true; - if (useAutoFocus) { - cancelOutstandingTask(); - // Doesn't hurt to call this even if not focusing - try { - camera.cancelAutoFocus(); - } catch (RuntimeException re) { - // Have heard RuntimeException reported in Android 4.0.x+; continue? - Log.w(TAG, "Unexpected exception while cancelling focusing", re); - } - } - } - - private final class AutoFocusTask extends AsyncTask<Object, Object, Object> { - @Override - protected Object doInBackground(Object... voids) { - try { - Thread.sleep(AUTO_FOCUS_INTERVAL_MS); - } catch (InterruptedException e) { - // continue - } - start(); - return null; - } - } - -} diff --git a/zxinglibrary/src/main/java/com/zxing/scanner/camera/CameraConfigurationManager.java b/zxinglibrary/src/main/java/com/zxing/scanner/camera/CameraConfigurationManager.java deleted file mode 100644 index 4af25e4..0000000 --- a/zxinglibrary/src/main/java/com/zxing/scanner/camera/CameraConfigurationManager.java +++ /dev/null @@ -1,264 +0,0 @@ -/* - * Copyright (C) 2010 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.zxing.scanner.camera; - -import android.content.Context; -import android.graphics.Point; -import android.hardware.Camera; -import android.util.Log; -import android.view.Display; -import android.view.Surface; -import android.view.WindowManager; - -import com.zxing.scanner.ScannerOptions; -import com.zxing.scanner.camera.open.CameraFacing; -import com.zxing.scanner.camera.open.OpenCamera; - - -/** - * 相机辅助类,主要用于设置相机的各类参数 2017/02/21 4:35 - * A class which deals with reading, parsing, and setting the camera parameters - * which are used to configure the camera hardware. - */ -@SuppressWarnings("deprecation") -final class CameraConfigurationManager { - - private static final String TAG = "CameraConfiguration"; - private static final int FRONT_LIGHT_MODE_ON = 0; - private static final int FRONT_LIGHT_MODE_OFF = 1; - private final Context context; - // private int cwNeededRotation; - private int cwRotationFromDisplayToCamera; - // 屏幕分辨率 - private Point screenResolution; - // 相机分辨率 - private Point cameraResolution; - private Point bestPreviewSize; - // private Point previewSizeOnScreen; - private ScannerOptions scannerOptions; - - CameraConfigurationManager(Context context, ScannerOptions scannerOptions) { - this.context = context; - this.scannerOptions = scannerOptions; - } - - /** - * 计算了屏幕分辨率和当前最适合的相机像素 - * Reads, one time, values from the camera that are needed by the app. - */ - void initFromCameraParameters(OpenCamera camera) { - Camera.Parameters parameters = camera.getCamera().getParameters(); - WindowManager manager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); - Display display = manager.getDefaultDisplay(); - - int displayRotation = display.getRotation(); - int cwRotationFromNaturalToDisplay; - switch (displayRotation) { - case Surface.ROTATION_0: - cwRotationFromNaturalToDisplay = 0; - break; - case Surface.ROTATION_90: - cwRotationFromNaturalToDisplay = 90; - break; - case Surface.ROTATION_180: - cwRotationFromNaturalToDisplay = 180; - break; - case Surface.ROTATION_270: - cwRotationFromNaturalToDisplay = 270; - break; - default: - // Have seen this return incorrect values like -90 - if (displayRotation % 90 == 0) { - cwRotationFromNaturalToDisplay = (360 + displayRotation) % 360; - } else { - throw new IllegalArgumentException("Bad rotation: " + displayRotation); - } - } - Log.i(TAG, "Display at: " + cwRotationFromNaturalToDisplay); - - int cwRotationFromNaturalToCamera = camera.getOrientation(); - Log.i(TAG, "Camera at: " + cwRotationFromNaturalToCamera); - - // Still not 100% sure about this. But acts like we need to flip this: - if (camera.getFacing() == CameraFacing.FRONT) { - cwRotationFromNaturalToCamera = (360 - cwRotationFromNaturalToCamera) % 360; - Log.i(TAG, "Front camera overriden to: " + cwRotationFromNaturalToCamera); - } - - cwRotationFromDisplayToCamera = - (360 + cwRotationFromNaturalToCamera - cwRotationFromNaturalToDisplay) % 360; - Log.i(TAG, "Final display orientation: " + cwRotationFromDisplayToCamera); -// if (camera.getFacing() == CameraFacing.FRONT) { -// Log.i(TAG, "Compensating rotation for front camera"); -// cwNeededRotation = (360 - cwRotationFromDisplayToCamera) % 360; -// } else { -// cwNeededRotation = cwRotationFromDisplayToCamera; -// } -// Log.i(TAG, "Clockwise rotation from display to camera: " + cwNeededRotation); - - Point theScreenResolution = new Point(); - display.getSize(theScreenResolution); - screenResolution = theScreenResolution; - Log.i(TAG, "Screen resolution in current orientation: " + screenResolution); - - Point screenResolutionForCamera = new Point(); - screenResolutionForCamera.x = screenResolution.x; - screenResolutionForCamera.y = screenResolution.y; - if (screenResolution.x < screenResolution.y) { - screenResolutionForCamera.x = screenResolution.y; - screenResolutionForCamera.y = screenResolution.x; - } - cameraResolution = CameraConfigurationUtils.findBestPreviewSizeValue(parameters, screenResolutionForCamera); - Log.i(TAG, "Camera resolution: " + cameraResolution); - bestPreviewSize = CameraConfigurationUtils.findBestPreviewSizeValue(parameters, screenResolutionForCamera); - Log.i(TAG, "Best available preview size: " + bestPreviewSize); - -// boolean isScreenPortrait = screenResolution.x < screenResolution.y; -// boolean isPreviewSizePortrait = bestPreviewSize.x < bestPreviewSize.y; -// -// if (isScreenPortrait == isPreviewSizePortrait) { -// previewSizeOnScreen = bestPreviewSize; -// } else { -// previewSizeOnScreen = new Point(bestPreviewSize.y, bestPreviewSize.x); -// } -// Log.i(TAG, "Preview size on screen: " + previewSizeOnScreen); - } - - /** - * 读取配置设置相机的对焦模式、闪光灯模式等等 - * - * @param camera - * @param safeMode - */ - void setDesiredCameraParameters(OpenCamera camera, boolean safeMode, boolean invertScan) { - - Camera theCamera = camera.getCamera(); - Camera.Parameters parameters = theCamera.getParameters(); - - if (parameters == null) { - Log.w(TAG, "Device error: no camera parameters are available. Proceeding without " + - "configuration."); - return; - } - - if (safeMode) { - Log.w(TAG, "In camera config safe mode -- most settings will not be honored"); - } - - // 默认关闪光灯 - initializeTorch(parameters, FRONT_LIGHT_MODE_OFF, safeMode); - // 自动对焦 - boolean autoFocus = true; - // 持续对焦 - boolean disableContinuousFocus = true; - CameraConfigurationUtils.setFocus(parameters, autoFocus, disableContinuousFocus, safeMode); - - if (!safeMode) { - // 反色,扫描黑色背景上的白色条码。仅适用于部分设备。 - if (invertScan) { - CameraConfigurationUtils.setInvertColor(parameters); - } - // 不进行条形码场景匹配 - boolean barCodeSceneMode = true; - if (!barCodeSceneMode) { - CameraConfigurationUtils.setBarcodeSceneMode(parameters); - } - - // 不使用距离测量 - boolean disableMetering = true; - if (!disableMetering) { - CameraConfigurationUtils.setVideoStabilization(parameters); - CameraConfigurationUtils.setFocusArea(parameters); - CameraConfigurationUtils.setMetering(parameters); - } - } - - parameters.setPreviewSize(bestPreviewSize.x, bestPreviewSize.y); - - if (scannerOptions.getCameraZoomRatio() > 0) { - CameraConfigurationUtils.setZoom(parameters, scannerOptions.getCameraZoomRatio()); - } - - theCamera.setParameters(parameters); - theCamera.setDisplayOrientation(cwRotationFromDisplayToCamera); - - Camera.Parameters afterParameters = theCamera.getParameters(); - Camera.Size afterSize = afterParameters.getPreviewSize(); - if (afterSize != null - && (bestPreviewSize.x != afterSize.width || bestPreviewSize.y != afterSize.height)) { - bestPreviewSize.x = afterSize.width; - bestPreviewSize.y = afterSize.height; - } - } - -// Point getBestPreviewSize() { -// return bestPreviewSize; -// } - -// Point getPreviewSizeOnScreen() { -// return previewSizeOnScreen; -// } - - Point getCameraResolution() { - return cameraResolution; - } - - Point getScreenResolution() { - return screenResolution; - } - -// int getCWNeededRotation() { -// return cwNeededRotation; -// } - - boolean getTorchState(Camera camera) { - if (camera != null) { - Camera.Parameters parameters = camera.getParameters(); - if (parameters != null) { - String flashMode = camera.getParameters().getFlashMode(); - return flashMode != null - && (Camera.Parameters.FLASH_MODE_ON.equals(flashMode) - || Camera.Parameters.FLASH_MODE_TORCH - .equals(flashMode)); - } - } - return false; - } - - void setTorch(Camera camera, boolean newSetting) { - Camera.Parameters parameters = camera.getParameters(); - doSetTorch(parameters, newSetting, false); - camera.setParameters(parameters); - } - - private void initializeTorch(Camera.Parameters parameters, - int frontLightMode, boolean safeMode) { - boolean currentSetting = frontLightMode == FRONT_LIGHT_MODE_ON; - doSetTorch(parameters, currentSetting, safeMode); - } - - private void doSetTorch(Camera.Parameters parameters, boolean newSetting, - boolean safeMode) { - CameraConfigurationUtils.setTorch(parameters, newSetting); - // 不曝光 - boolean disableExposure = true; - if (!safeMode && !disableExposure) { - CameraConfigurationUtils.setBestExposure(parameters, newSetting); - } - } - -} diff --git a/zxinglibrary/src/main/java/com/zxing/scanner/camera/CameraConfigurationUtils.java b/zxinglibrary/src/main/java/com/zxing/scanner/camera/CameraConfigurationUtils.java deleted file mode 100644 index 8f62e57..0000000 --- a/zxinglibrary/src/main/java/com/zxing/scanner/camera/CameraConfigurationUtils.java +++ /dev/null @@ -1,441 +0,0 @@ -/* - * Copyright (C) 2014 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.zxing.scanner.camera; - -import android.graphics.Point; -import android.graphics.Rect; -import android.hardware.Camera; -import android.util.Log; - -import java.util.Arrays; -import java.util.Collection; -import java.util.Collections; -import java.util.List; - -/** - * Utility methods for configuring the Android camera. - * - * @author Sean Owen 2017/05/05 7:30 - */ -@SuppressWarnings("deprecation") // camera APIs -public final class CameraConfigurationUtils { - - private static final String TAG = "CameraConfiguration"; - -// private static final Pattern SEMICOLON = Pattern.compile(";"); - - private static final int MIN_PREVIEW_PIXELS = 480 * 320; // normal screen - private static final float MAX_EXPOSURE_COMPENSATION = 1.5f; - private static final float MIN_EXPOSURE_COMPENSATION = 0.0f; - private static final double MAX_ASPECT_DISTORTION = 0.15; -// private static final int MIN_FPS = 10; -// private static final int MAX_FPS = 20; - private static final int AREA_PER_1000 = 400; - - private CameraConfigurationUtils() { - } - - public static void setFocus(Camera.Parameters parameters, - boolean autoFocus, - boolean disableContinuous, - boolean safeMode) { - List<String> supportedFocusModes = parameters.getSupportedFocusModes(); - String focusMode = null; - if (autoFocus) { - if (safeMode || disableContinuous) { - focusMode = findSettableValue("focus mode", - supportedFocusModes, - Camera.Parameters.FOCUS_MODE_AUTO); - } else { - focusMode = findSettableValue("focus mode", - supportedFocusModes, - Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE, - Camera.Parameters.FOCUS_MODE_CONTINUOUS_VIDEO, - Camera.Parameters.FOCUS_MODE_AUTO); - } - } - // Maybe selected auto-focus but not available, so fall through here: - if (!safeMode && focusMode == null) { - focusMode = findSettableValue("focus mode", - supportedFocusModes, - Camera.Parameters.FOCUS_MODE_MACRO, - Camera.Parameters.FOCUS_MODE_EDOF); - } - if (focusMode != null) { - if (focusMode.equals(parameters.getFocusMode())) { - Log.i(TAG, "Focus mode already set to " + focusMode); - } else { - parameters.setFocusMode(focusMode); - } - } - } - - public static void setTorch(Camera.Parameters parameters, boolean on) { - List<String> supportedFlashModes = parameters.getSupportedFlashModes(); - String flashMode; - if (on) { - flashMode = findSettableValue("flash mode", - supportedFlashModes, - Camera.Parameters.FLASH_MODE_TORCH, - Camera.Parameters.FLASH_MODE_ON); - } else { - flashMode = findSettableValue("flash mode", - supportedFlashModes, - Camera.Parameters.FLASH_MODE_OFF); - } - if (flashMode != null) { - if (flashMode.equals(parameters.getFlashMode())) { - Log.i(TAG, "Flash mode already set to " + flashMode); - } else { - Log.i(TAG, "Setting flash mode to " + flashMode); - parameters.setFlashMode(flashMode); - } - } - } - - public static void setBestExposure(Camera.Parameters parameters, boolean lightOn) { - int minExposure = parameters.getMinExposureCompensation(); - int maxExposure = parameters.getMaxExposureCompensation(); - float step = parameters.getExposureCompensationStep(); - if ((minExposure != 0 || maxExposure != 0) && step > 0.0f) { - // Set low when light is on - float targetCompensation = lightOn ? MIN_EXPOSURE_COMPENSATION : MAX_EXPOSURE_COMPENSATION; - int compensationSteps = Math.round(targetCompensation / step); - float actualCompensation = step * compensationSteps; - // Clamp value: - compensationSteps = Math.max(Math.min(compensationSteps, maxExposure), minExposure); - if (parameters.getExposureCompensation() == compensationSteps) { - Log.i(TAG, "Exposure compensation already set to " + compensationSteps + " / " + actualCompensation); - } else { - Log.i(TAG, "Setting exposure compensation to " + compensationSteps + " / " + actualCompensation); - parameters.setExposureCompensation(compensationSteps); - } - } else { - Log.i(TAG, "Camera does not support exposure compensation"); - } - } - -// public static void setBestPreviewFPS(Camera.Parameters parameters) { -// setBestPreviewFPS(parameters, MIN_FPS, MAX_FPS); -// } - -// public static void setBestPreviewFPS(Camera.Parameters parameters, int minFPS, int maxFPS) { -// List<int[]> supportedPreviewFpsRanges = parameters.getSupportedPreviewFpsRange(); -// Log.i(TAG, "Supported FPS ranges: " + toString(supportedPreviewFpsRanges)); -// if (supportedPreviewFpsRanges != null && !supportedPreviewFpsRanges.isEmpty()) { -// int[] suitableFPSRange = null; -// for (int[] fpsRange : supportedPreviewFpsRanges) { -// int thisMin = fpsRange[Camera.Parameters.PREVIEW_FPS_MIN_INDEX]; -// int thisMax = fpsRange[Camera.Parameters.PREVIEW_FPS_MAX_INDEX]; -// if (thisMin >= minFPS * 1000 && thisMax <= maxFPS * 1000) { -// suitableFPSRange = fpsRange; -// break; -// } -// } -// if (suitableFPSRange == null) { -// Log.i(TAG, "No suitable FPS range?"); -// } else { -// int[] currentFpsRange = new int[2]; -// parameters.getPreviewFpsRange(currentFpsRange); -// if (Arrays.equals(currentFpsRange, suitableFPSRange)) { -// Log.i(TAG, "FPS range already set to " + Arrays.toString(suitableFPSRange)); -// } else { -// Log.i(TAG, "Setting FPS range to " + Arrays.toString(suitableFPSRange)); -// parameters.setPreviewFpsRange(suitableFPSRange[Camera.Parameters.PREVIEW_FPS_MIN_INDEX], -// suitableFPSRange[Camera.Parameters.PREVIEW_FPS_MAX_INDEX]); -// } -// } -// } -// } - - public static void setFocusArea(Camera.Parameters parameters) { - if (parameters.getMaxNumFocusAreas() > 0) { -// Log.i(TAG, "Old focus areas: " + toString(parameters.getFocusAreas())); - List<Camera.Area> middleArea = buildMiddleArea(AREA_PER_1000); -// Log.i(TAG, "Setting focus area to : " + toString(middleArea)); - parameters.setFocusAreas(middleArea); - } else { - Log.i(TAG, "Device does not support focus areas"); - } - } - - public static void setMetering(Camera.Parameters parameters) { - if (parameters.getMaxNumMeteringAreas() > 0) { -// Log.i(TAG, "Old metering areas: " + parameters.getMeteringAreas()); - List<Camera.Area> middleArea = buildMiddleArea(AREA_PER_1000); -// Log.i(TAG, "Setting metering area to : " + toString(middleArea)); - parameters.setMeteringAreas(middleArea); - } else { - Log.i(TAG, "Device does not support metering areas"); - } - } - - private static List<Camera.Area> buildMiddleArea(int areaPer1000) { - return Collections.singletonList( - new Camera.Area(new Rect(-areaPer1000, -areaPer1000, areaPer1000, areaPer1000), 1)); - } - - public static void setVideoStabilization(Camera.Parameters parameters) { - if (parameters.isVideoStabilizationSupported()) { - if (parameters.getVideoStabilization()) { - Log.i(TAG, "Video stabilization already enabled"); - } else { - Log.i(TAG, "Enabling video stabilization..."); - parameters.setVideoStabilization(true); - } - } else { - Log.i(TAG, "This device does not support video stabilization"); - } - } - - public static void setBarcodeSceneMode(Camera.Parameters parameters) { - if (Camera.Parameters.SCENE_MODE_BARCODE.equals(parameters.getSceneMode())) { - Log.i(TAG, "Barcode scene mode already set"); - return; - } - String sceneMode = findSettableValue("scene mode", - parameters.getSupportedSceneModes(), - Camera.Parameters.SCENE_MODE_BARCODE); - if (sceneMode != null) { - parameters.setSceneMode(sceneMode); - } - } - - public static void setZoom(Camera.Parameters parameters, double targetZoomRatio) { - if (parameters.isZoomSupported()) { - Integer zoom = indexOfClosestZoom(parameters, targetZoomRatio); - if (zoom == null) { - return; - } - if (parameters.getZoom() == zoom) { - Log.i(TAG, "Zoom is already set to " + zoom); - } else { - Log.i(TAG, "Setting zoom to " + zoom); - parameters.setZoom(zoom); - } - } else { - Log.i(TAG, "Zoom is not supported"); - } - } - - private static Integer indexOfClosestZoom(Camera.Parameters parameters, double targetZoomRatio) { - List<Integer> ratios = parameters.getZoomRatios(); - Log.i(TAG, "Zoom ratios: " + ratios); - int maxZoom = parameters.getMaxZoom(); - if (ratios == null || ratios.isEmpty() || ratios.size() != maxZoom + 1) { - Log.w(TAG, "Invalid zoom ratios!"); - return null; - } - double target100 = 100.0 * targetZoomRatio; - double smallestDiff = Double.POSITIVE_INFINITY; - int closestIndex = 0; - for (int i = 0; i < ratios.size(); i++) { - double diff = Math.abs(ratios.get(i) - target100); - if (diff < smallestDiff) { - smallestDiff = diff; - closestIndex = i; - } - } - Log.i(TAG, "Chose zoom ratio of " + (ratios.get(closestIndex) / 100.0)); - return closestIndex; - } - - public static void setInvertColor(Camera.Parameters parameters) { - if (Camera.Parameters.EFFECT_NEGATIVE.equals(parameters.getColorEffect())) { - Log.i(TAG, "Negative effect already set"); - return; - } - String colorMode = findSettableValue("color effect", - parameters.getSupportedColorEffects(), - Camera.Parameters.EFFECT_NEGATIVE); - if (colorMode != null) { - parameters.setColorEffect(colorMode); - } - } - - public static Point findBestPreviewSizeValue(Camera.Parameters parameters, Point screenResolution) { - - List<Camera.Size> rawSupportedSizes = parameters.getSupportedPreviewSizes(); - if (rawSupportedSizes == null) { - Log.w(TAG, "Device returned no supported preview sizes; using default"); - Camera.Size defaultSize = parameters.getPreviewSize(); - if (defaultSize == null) { - throw new IllegalStateException("Parameters contained no preview size!"); - } - return new Point(defaultSize.width, defaultSize.height); - } - - if (Log.isLoggable(TAG, Log.INFO)) { - StringBuilder previewSizesString = new StringBuilder(); - for (Camera.Size size : rawSupportedSizes) { - previewSizesString.append(size.width).append('x').append(size.height).append(' '); - } - Log.i(TAG, "Supported preview sizes: " + previewSizesString); - } - - double screenAspectRatio = screenResolution.x / (double) screenResolution.y; - - // Find a suitable size, with max resolution - int maxResolution = 0; - Camera.Size maxResPreviewSize = null; - for (Camera.Size size : rawSupportedSizes) { - int realWidth = size.width; - int realHeight = size.height; - int resolution = realWidth * realHeight; - if (resolution < MIN_PREVIEW_PIXELS) { - continue; - } - - boolean isCandidatePortrait = realWidth < realHeight; - int maybeFlippedWidth = isCandidatePortrait ? realHeight : realWidth; - int maybeFlippedHeight = isCandidatePortrait ? realWidth : realHeight; - double aspectRatio = maybeFlippedWidth / (double) maybeFlippedHeight; - double distortion = Math.abs(aspectRatio - screenAspectRatio); - if (distortion > MAX_ASPECT_DISTORTION) { - continue; - } - - if (maybeFlippedWidth == screenResolution.x && maybeFlippedHeight == screenResolution.y) { - Point exactPoint = new Point(realWidth, realHeight); - Log.i(TAG, "Found preview size exactly matching screen size: " + exactPoint); - return exactPoint; - } - - // Resolution is suitable; record the one with max resolution - if (resolution > maxResolution) { - maxResolution = resolution; - maxResPreviewSize = size; - } - } - - // If no exact match, use largest preview size. This was not a great idea on older devices because - // of the additional computation needed. We're likely to get here on newer Android 4+ devices, where - // the CPU is much more powerful. - if (maxResPreviewSize != null) { - Camera.Size closelySize = findCloselySize(maxResPreviewSize.width, maxResPreviewSize.height, rawSupportedSizes); - Point largestSize = new Point(closelySize.width, closelySize.height); - Log.i(TAG, "Using largest suitable preview size: " + largestSize); - return largestSize; - } - - // If there is nothing at all suitable, return current preview size - Camera.Size defaultPreview = parameters.getPreviewSize(); - if (defaultPreview == null) { - throw new IllegalStateException("Parameters contained no preview size!"); - } - Point defaultSize = new Point(defaultPreview.width, defaultPreview.height); - Log.i(TAG, "No suitable preview sizes, using default: " + defaultSize); - return defaultSize; - } - - private static String findSettableValue(String name, - Collection<String> supportedValues, - String... desiredValues) { - Log.i(TAG, "Requesting " + name + " value from among: " + Arrays.toString(desiredValues)); - Log.i(TAG, "Supported " + name + " values: " + supportedValues); - if (supportedValues != null) { - for (String desiredValue : desiredValues) { - if (supportedValues.contains(desiredValue)) { - Log.i(TAG, "Can set " + name + " to: " + desiredValue); - return desiredValue; - } - } - } - Log.i(TAG, "No supported values match"); - return null; - } - -// private static String toString(Collection<int[]> arrays) { -// if (arrays == null || arrays.isEmpty()) { -// return "[]"; -// } -// StringBuilder buffer = new StringBuilder(); -// buffer.append('['); -// Iterator<int[]> it = arrays.iterator(); -// while (it.hasNext()) { -// buffer.append(Arrays.toString(it.next())); -// if (it.hasNext()) { -// buffer.append(", "); -// } -// } -// buffer.append(']'); -// return buffer.toString(); -// } - -// private static String toString(Iterable<Camera.Area> areas) { -// if (areas == null) { -// return null; -// } -// StringBuilder result = new StringBuilder(); -// for (Camera.Area area : areas) { -// result.append(area.rect).append(':').append(area.weight).append(' '); -// } -// return result.toString(); -// } - -// public static String collectStats(Camera.Parameters parameters) { -// return collectStats(parameters.flatten()); -// } - -// public static String collectStats(CharSequence flattenedParams) { -// StringBuilder result = new StringBuilder(1000); -// -// result.append("BOARD=").append(Build.BOARD).append('\n'); -// result.append("BRAND=").append(Build.BRAND).append('\n'); -// result.append("CPU_ABI=").append(Build.CPU_ABI).append('\n'); -// result.append("DEVICE=").append(Build.DEVICE).append('\n'); -// result.append("DISPLAY=").append(Build.DISPLAY).append('\n'); -// result.append("FINGERPRINT=").append(Build.FINGERPRINT).append('\n'); -// result.append("HOST=").append(Build.HOST).append('\n'); -// result.append("ID=").append(Build.ID).append('\n'); -// result.append("MANUFACTURER=").append(Build.MANUFACTURER).append('\n'); -// result.append("MODEL=").append(Build.MODEL).append('\n'); -// result.append("PRODUCT=").append(Build.PRODUCT).append('\n'); -// result.append("TAGS=").append(Build.TAGS).append('\n'); -// result.append("TIME=").append(Build.TIME).append('\n'); -// result.append("TYPE=").append(Build.TYPE).append('\n'); -// result.append("USER=").append(Build.USER).append('\n'); -// result.append("VERSION.CODENAME=").append(Build.VERSION.CODENAME).append('\n'); -// result.append("VERSION.INCREMENTAL=").append(Build.VERSION.INCREMENTAL).append('\n'); -// result.append("VERSION.RELEASE=").append(Build.VERSION.RELEASE).append('\n'); -// result.append("VERSION.SDK_INT=").append(Build.VERSION.SDK_INT).append('\n'); -// -// if (flattenedParams != null) { -// String[] params = SEMICOLON.split(flattenedParams); -// Arrays.sort(params); -// for (String param : params) { -// result.append(param).append('\n'); -// } -// } -// -// return result.toString(); -// } - - /** - * 通过对比得到与宽高比最接近的尺寸(如果有相同尺寸,优先选择) - * - * @param surfaceWidth 需要被进行对比的原宽 - * @param surfaceHeight 需要被进行对比的原高 - * @param preSizeList 需要对比的预览尺寸列表 - * @return 得到与原宽高比例最接近的尺寸 - */ - protected static Camera.Size findCloselySize(int surfaceWidth, int surfaceHeight - , List<Camera.Size> preSizeList) { - Collections.sort(preSizeList, new SizeComparator(surfaceWidth, surfaceHeight)); - return preSizeList.get(0); - } -} diff --git a/zxinglibrary/src/main/java/com/zxing/scanner/camera/CameraManager.java b/zxinglibrary/src/main/java/com/zxing/scanner/camera/CameraManager.java deleted file mode 100644 index e455138..0000000 --- a/zxinglibrary/src/main/java/com/zxing/scanner/camera/CameraManager.java +++ /dev/null @@ -1,407 +0,0 @@ -/* - * Copyright (C) 2008 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.zxing.scanner.camera; - -import android.content.Context; -import android.content.res.Configuration; -import android.graphics.Point; -import android.graphics.Rect; -import android.hardware.Camera; -import android.os.Handler; -import android.util.Log; -import android.view.SurfaceHolder; - -import com.google.zxing.PlanarYUVLuminanceSource; -import com.zxing.scanner.ScannerOptions; -import com.zxing.scanner.camera.open.CameraFacing; -import com.zxing.scanner.camera.open.OpenCamera; -import com.zxing.scanner.camera.open.OpenCameraInterface; -import com.zxing.scanner.common.Scanner; - -import java.io.IOException; - -/** - * This object wraps the Camera service object and expects to be the only one talking to it. The - * implementation encapsulates the steps needed to take preview-sized images, which are used for - * both preview and decoding. - * - * @author dswitkin@google.com (Daniel Switkin) 2017/06/15 1:50 - */ -public final class CameraManager { - - private static final String TAG = CameraManager.class.getSimpleName(); - - private static final int MIN_FRAME_WIDTH = 240; - private static final int MIN_FRAME_HEIGHT = 240; - public static final int MAX_FRAME_WIDTH = 1200; // = 5/8 * 1920 - public static final int MAX_FRAME_HEIGHT = 675; // = 5/8 * 1080 - - private final Context context; - private final CameraConfigurationManager configManager; - private OpenCamera camera; - private AutoFocusManager autoFocusManager; - private Rect framingRect; - private Rect framingRectInPreview; - private boolean initialized; - private boolean previewing; - private int requestedCameraId = OpenCameraInterface.NO_REQUESTED_CAMERA; - private int requestedFramingRectWidth; - private int requestedFramingRectHeight; - /** - * Preview frames are delivered here, which we pass on to the registered handler. Make sure to - * clear the handler so it will only receive one message. - */ - private final PreviewCallback previewCallback; - private final int statusBarHeight;//状态栏高度 - private int laserFrameTopMargin; - private ScannerOptions scannerOptions; - - public CameraManager(Context context, ScannerOptions scannerOptions) { - this.context = context; - this.configManager = new CameraConfigurationManager(context, scannerOptions); - this.previewCallback = new PreviewCallback(configManager); - - this.statusBarHeight = getStatusBarHeight(); - this.scannerOptions = scannerOptions; - this.requestedFramingRectWidth = dp2px(scannerOptions.getFrameWidth()); - this.requestedFramingRectHeight = dp2px(scannerOptions.getFrameHeight()); - this.laserFrameTopMargin = dp2px(scannerOptions.getFrameTopMargin()); - setManualCameraId(scannerOptions.getCameraFacing() == CameraFacing.BACK ? 0 : 1); - } - - /** - * Opens the camera driver and initializes the hardware parameters. - * - * @param holder The surface object which the camera will draw preview frames into. - * @throws IOException Indicates the camera driver failed to open. - */ - public synchronized void openDriver(SurfaceHolder holder) throws IOException { - OpenCamera theCamera = camera; - if (theCamera == null) { - //获取手机背面的摄像头 - theCamera = OpenCameraInterface.open(requestedCameraId); - if (theCamera == null) { - throw new IOException("Camera.open() failed to return object from driver"); - } - camera = theCamera; - } - - if (!initialized) { - initialized = true; - configManager.initFromCameraParameters(theCamera); - if (requestedFramingRectWidth > 0 && requestedFramingRectHeight > 0) { - setManualFramingRect(requestedFramingRectWidth, requestedFramingRectHeight); - requestedFramingRectWidth = 0; - requestedFramingRectHeight = 0; - } - } - - Camera cameraObject = theCamera.getCamera(); - Camera.Parameters parameters = cameraObject.getParameters(); - String parametersFlattened = parameters == null ? null : parameters.flatten(); // Save these, temporarily - try { - configManager.setDesiredCameraParameters(theCamera, false, scannerOptions.isScanInvert()); - } catch (RuntimeException re) { - // Driver failed - Log.w(TAG, "Camera rejected parameters. Setting only minimal safe-mode parameters"); - Log.i(TAG, "Resetting to saved camera params: " + parametersFlattened); - // Reset: - if (parametersFlattened != null) { - parameters = cameraObject.getParameters(); - parameters.unflatten(parametersFlattened); - try { - cameraObject.setParameters(parameters); - configManager.setDesiredCameraParameters(theCamera, true, scannerOptions.isScanInvert()); - } catch (RuntimeException re2) { - // Well, darn. Give up - Log.w(TAG, "Camera rejected even safe-mode parameters! No configuration"); - } - } - } - //设置摄像头预览view - cameraObject.setPreviewDisplay(holder); - } - - public synchronized boolean isOpen() { - return camera != null; - } - - /** - * Closes the camera driver if still in use. - */ - public synchronized void closeDriver() { - if (camera != null) { - camera.getCamera().release(); - camera = null; - // Make sure to clear these each time we close the camera, so that any scanning rect - // requested by intent is forgotten. - framingRect = null; - framingRectInPreview = null; - } - } - - /** - * Asks the camera hardware to begin drawing preview frames to the screen. - */ - public synchronized void startPreview() { - OpenCamera theCamera = camera; - if (theCamera != null && !previewing) { - theCamera.getCamera().startPreview(); - previewing = true; - autoFocusManager = new AutoFocusManager(theCamera.getCamera()); - } - } - - /** - * Tells the camera to stop drawing preview frames. - */ - public synchronized void stopPreview() { - if (autoFocusManager != null) { - autoFocusManager.stop(); - autoFocusManager = null; - } - if (camera != null && previewing) { - camera.getCamera().stopPreview(); - previewCallback.setHandler(null, 0); - previewing = false; - } - } - - /** - * 设置闪光灯 - * - * @param newSetting if {@code true}, light should be turned on if currently off. And vice - * versa. - */ - public synchronized void setTorch(boolean newSetting) { - OpenCamera theCamera = camera; - if (theCamera != null && newSetting != configManager.getTorchState(theCamera.getCamera())) { - boolean wasAutoFocusManager = autoFocusManager != null; - if (wasAutoFocusManager) { - autoFocusManager.stop(); - autoFocusManager = null; - } - configManager.setTorch(theCamera.getCamera(), newSetting); - if (wasAutoFocusManager) { - autoFocusManager = new AutoFocusManager(theCamera.getCamera()); - autoFocusManager.start(); - } - } - } - - /** - * A single preview frame will be returned to the handler supplied. The data will arrive as - * byte[] - * in the message.obj field, with width and height encoded as message.arg1 and message.arg2, - * respectively. - * <br/> - * <p/> - * 1:将handler与preview回调函数绑定;<br/> - * 2:注册preview回调函数<br/> - * 综上,该函数的作用是当相机的预览界面准备就绪后就会调用handler向其发送传入的message - * - * @param handler The handler to send the message to. - * @param message The what field of the message to be sent. - */ - public synchronized void requestPreviewFrame(Handler handler, int message) { - OpenCamera theCamera = camera; - if (theCamera != null && previewing) { - previewCallback.setHandler(handler, message); - theCamera.getCamera().setOneShotPreviewCallback(previewCallback); - } - } - - /** - * Calculates the framing rect which the UI should draw to show the user where to place the - * barcode. This target helps with alignment as well as forces the user to hold the device - * far enough away to ensure the image will be in focus. - * - * @return The rectangle to draw on screen in window coordinates. - */ - public synchronized Rect getFramingRect() { - if (framingRect == null) { - if (camera == null) { - return null; - } - Point screenResolution = configManager.getScreenResolution(); - if (screenResolution == null) { - // Called early, before init even finished - return null; - } - int height; - int width = findDesiredDimensionInRange(screenResolution.x, MIN_FRAME_WIDTH, MAX_FRAME_WIDTH); - //竖屏则为正方形 - if (isPortrait()) { - height = width; - } else { - height = findDesiredDimensionInRange(screenResolution.y, MIN_FRAME_HEIGHT, MAX_FRAME_HEIGHT); - } - createFramingRect(width, height, screenResolution); - } - return framingRect; - } - - private static int findDesiredDimensionInRange(int resolution, int hardMin, int hardMax) { - int dim = 5 * resolution / 8; // Target 5/8 of each dimension - if (dim < hardMin) { - return hardMin; - } - if (dim > hardMax) { - return hardMax; - } - return dim; - } - - /** - * Like {@link #getFramingRect} but coordinates are in terms of the preview frame, - * not UI / screen. - * - * @return {@link Rect} expressing barcode scan area in terms of the preview size - */ - public synchronized Rect getFramingRectInPreview() { - if (framingRectInPreview == null) { - Rect framingRect = getFramingRect(); - if (framingRect == null) { - return null; - } - Rect rect = new Rect(framingRect); - Point cameraResolution = configManager.getCameraResolution(); - Point screenResolution = configManager.getScreenResolution(); - if (cameraResolution == null || screenResolution == null) { - // Called early, before init even finished - return null; - } - - //竖屏识别一维 - if (isPortrait()) { - rect.left = rect.left * cameraResolution.y / screenResolution.x; - rect.right = rect.right * cameraResolution.y / screenResolution.x; - rect.top = rect.top * cameraResolution.x / screenResolution.y; - rect.bottom = rect.bottom * cameraResolution.x / screenResolution.y; - } else { - rect.left = rect.left * cameraResolution.x / screenResolution.x; - rect.right = rect.right * cameraResolution.x / screenResolution.x; - rect.top = rect.top * cameraResolution.y / screenResolution.y; - rect.bottom = rect.bottom * cameraResolution.y / screenResolution.y; - } - framingRectInPreview = rect; - } - Log.d(TAG, "framing Rect In Preview rect: " + framingRectInPreview); - return framingRectInPreview; - } - - - /** - * Allows third party apps to specify the camera ID, rather than determine - * it automatically based on available cameras and their orientation. - * - * @param cameraId camera ID of the camera to use. A negative value means "no preference". - */ - public synchronized void setManualCameraId(int cameraId) { - requestedCameraId = cameraId; - } - - /** - * Allows third party apps to specify the scanning rectangle dimensions, rather than determine - * them automatically based on screen resolution. - * - * @param width The width in pixels to scan. - * @param height The height in pixels to scan. - */ - public synchronized void setManualFramingRect(int width, int height) { - if (initialized) { - Point screenResolution = configManager.getScreenResolution(); - if (width > screenResolution.x) { - width = screenResolution.x; - } - if (height > screenResolution.y) { - height = screenResolution.y; - } - - createFramingRect(width, height, screenResolution); - framingRectInPreview = null; - } else { - requestedFramingRectWidth = width; - requestedFramingRectHeight = height; - } - } - - private void createFramingRect(int width, int height, Point screenResolution) { - int leftOffset = (screenResolution.x - width) / 2; - int topOffset = (screenResolution.y - height) / 2; - int top = laserFrameTopMargin; - if (top == 0) - top = topOffset - statusBarHeight; - else { - top += statusBarHeight; - } - framingRect = new Rect(leftOffset, top, leftOffset + width, top + height); - Log.d(TAG, "Calculated framing rect: " + framingRect); - } - - /** - * A factory method to build the appropriate LuminanceSource object based on the format - * of the preview buffers, as described by Camera.Parameters. - * - * @param data A preview frame. - * @param width The width of the image. - * @param height The height of the image. - * @return A PlanarYUVLuminanceSource instance. - */ - public PlanarYUVLuminanceSource buildLuminanceSource(byte[] data, int width, int height) { - if (scannerOptions.isScanFullScreen()) { - return new PlanarYUVLuminanceSource(data, width, height, 0, 0, width, height, false); - } - Rect rect = getFramingRectInPreview(); - if (rect == null) { - return null; - } - // Go ahead and assume it's YUV rather than die. - return new PlanarYUVLuminanceSource(data, width, height, rect.left, rect.top, rect.width(), rect.height(), false); - } - - /** - * 获取状态栏高度 - * - * @return - */ - private int getStatusBarHeight() { - int result = 0; - int resourceId = context.getResources().getIdentifier("status_bar_height", "dimen", "android"); - if (resourceId > 0) { - result = context.getResources().getDimensionPixelSize(resourceId); - } - return result; - } - - private int dp2px(int dp) { - return Scanner.dp2px(context, dp); - } - - public boolean isPortrait() { - return context.getResources().getConfiguration().orientation == - Configuration.ORIENTATION_PORTRAIT; - } - - public Point getScreenResolution() { - return configManager.getScreenResolution(); - } - - public Point getCameraResolution() { - return configManager.getCameraResolution(); - } -} diff --git a/zxinglibrary/src/main/java/com/zxing/scanner/camera/PreviewCallback.java b/zxinglibrary/src/main/java/com/zxing/scanner/camera/PreviewCallback.java deleted file mode 100644 index b2ffc20..0000000 --- a/zxinglibrary/src/main/java/com/zxing/scanner/camera/PreviewCallback.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (C) 2010 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.zxing.scanner.camera; - -import android.graphics.Point; -import android.hardware.Camera; -import android.os.Handler; -import android.os.Message; -import android.util.Log; - -@SuppressWarnings("deprecation") -final class PreviewCallback implements Camera.PreviewCallback { - - private static final String TAG = PreviewCallback.class.getSimpleName(); - - private final CameraConfigurationManager configManager; - private Handler previewHandler; - private int previewMessage; - - PreviewCallback(CameraConfigurationManager configManager) { - this.configManager = configManager; - } - - void setHandler(Handler previewHandler, int previewMessage) { - this.previewHandler = previewHandler; - this.previewMessage = previewMessage; - } - - @Override - public void onPreviewFrame(byte[] data, Camera camera) { - Point cameraResolution = configManager.getCameraResolution(); - Handler thePreviewHandler = previewHandler; - if (cameraResolution != null && thePreviewHandler != null) { - Message message = thePreviewHandler.obtainMessage(previewMessage, cameraResolution.x, - cameraResolution.y, data); - message.sendToTarget(); - previewHandler = null; - } else { - Log.d(TAG, "Got preview callback, but no handler or resolution available"); - } - } - -} diff --git a/zxinglibrary/src/main/java/com/zxing/scanner/camera/SizeComparator.java b/zxinglibrary/src/main/java/com/zxing/scanner/camera/SizeComparator.java deleted file mode 100644 index ada8c31..0000000 --- a/zxinglibrary/src/main/java/com/zxing/scanner/camera/SizeComparator.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.zxing.scanner.camera; - -import android.hardware.Camera; - -import java.util.Comparator; - -/** - * Created by hupei on 2017/11/23. - */ - -class SizeComparator implements Comparator<Camera.Size> { - - private final int width; - private final int height; - private final float ratio; - - SizeComparator(int width, int height) { - if (width < height) { - this.width = height; - this.height = width; - } else { - this.width = width; - this.height = height; - } - this.ratio = (float) this.height / this.width; - } - - @Override - public int compare(Camera.Size size1, Camera.Size size2) { - int width1 = size1.width; - int height1 = size1.height; - int width2 = size2.width; - int height2 = size2.height; - - float ratio1 = Math.abs((float) height1 / width1 - ratio); - float ratio2 = Math.abs((float) height2 / width2 - ratio); - int result = Float.compare(ratio1, ratio2); - if (result != 0) { - return result; - } else { - int minGap1 = Math.abs(width - width1) + Math.abs(height - height1); - int minGap2 = Math.abs(width - width2) + Math.abs(height - height2); - return minGap1 - minGap2; - } - } -} \ No newline at end of file diff --git a/zxinglibrary/src/main/java/com/zxing/scanner/camera/open/CameraFacing.java b/zxinglibrary/src/main/java/com/zxing/scanner/camera/open/CameraFacing.java deleted file mode 100644 index 8fc2200..0000000 --- a/zxinglibrary/src/main/java/com/zxing/scanner/camera/open/CameraFacing.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright (C) 2015 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.zxing.scanner.camera.open; - -/** - * Enumeration of directions a camera may face: front or back. - */ -public enum CameraFacing { - - BACK, // must be value 0! - FRONT, // must be value 1! - -} diff --git a/zxinglibrary/src/main/java/com/zxing/scanner/camera/open/OpenCamera.java b/zxinglibrary/src/main/java/com/zxing/scanner/camera/open/OpenCamera.java deleted file mode 100644 index b0bf8c7..0000000 --- a/zxinglibrary/src/main/java/com/zxing/scanner/camera/open/OpenCamera.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright (C) 2015 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.zxing.scanner.camera.open; - -import android.hardware.Camera; - -/** - * Represents an open {@link Camera} and its metadata, like facing direction and orientation. - */ -@SuppressWarnings("deprecation") -public final class OpenCamera { - - private final int index; - private final Camera camera; - private final CameraFacing facing; - private final int orientation; - - public OpenCamera(int index, Camera camera, CameraFacing facing, int orientation) { - this.index = index; - this.camera = camera; - this.facing = facing; - this.orientation = orientation; - } - - public Camera getCamera() { - return camera; - } - - public CameraFacing getFacing() { - return facing; - } - - public int getOrientation() { - return orientation; - } - - @Override - public String toString() { - return "Camera #" + index + " : " + facing + ',' + orientation; - } - -} diff --git a/zxinglibrary/src/main/java/com/zxing/scanner/camera/open/OpenCameraInterface.java b/zxinglibrary/src/main/java/com/zxing/scanner/camera/open/OpenCameraInterface.java deleted file mode 100644 index bef317e..0000000 --- a/zxinglibrary/src/main/java/com/zxing/scanner/camera/open/OpenCameraInterface.java +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Copyright (C) 2012 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.zxing.scanner.camera.open; - -import android.hardware.Camera; -import android.util.Log; - -/** - * Abstraction over the {@link Camera} API that helps open them and return their metadata. - */ -@SuppressWarnings("deprecation") -public final class OpenCameraInterface { - - private static final String TAG = OpenCameraInterface.class.getName(); - - private OpenCameraInterface() { - } - - /** - * For {@link #open(int)}, means no preference for which camera to open. - */ - public static final int NO_REQUESTED_CAMERA = -1; - - /** - * Opens the requested camera with {@link Camera#open(int)}, if one exists. - * - * @param cameraId camera ID of the camera to use. A negative value - * or {@link #NO_REQUESTED_CAMERA} means "no preference", in which case a rear-facing - * camera is returned if possible or else any camera - * @return handle to {@link OpenCamera} that was opened - */ - public static OpenCamera open(int cameraId) { - - int numCameras = Camera.getNumberOfCameras(); - if (numCameras == 0) { - Log.w(TAG, "No cameras!"); - return null; - } - - boolean explicitRequest = cameraId >= 0; - - Camera.CameraInfo selectedCameraInfo = null; - int index; - if (explicitRequest) { - index = cameraId; - selectedCameraInfo = new Camera.CameraInfo(); - Camera.getCameraInfo(index, selectedCameraInfo); - } else { - index = 0; - while (index < numCameras) { - Camera.CameraInfo cameraInfo = new Camera.CameraInfo(); - Camera.getCameraInfo(index, cameraInfo); - CameraFacing reportedFacing = CameraFacing.values()[cameraInfo.facing]; - if (reportedFacing == CameraFacing.BACK) { - selectedCameraInfo = cameraInfo; - break; - } - index++; - } - } - - Camera camera; - if (index < numCameras) { - Log.i(TAG, "Opening camera #" + index); - camera = Camera.open(index); - } else { - if (explicitRequest) { - Log.w(TAG, "Requested camera does not exist: " + cameraId); - camera = null; - } else { - Log.i(TAG, "No camera facing " + CameraFacing.BACK + "; returning camera #0"); - camera = Camera.open(0); - selectedCameraInfo = new Camera.CameraInfo(); - Camera.getCameraInfo(0, selectedCameraInfo); - } - } - - if (camera == null) { - return null; - } - return new OpenCamera(index, camera, CameraFacing.values()[selectedCameraInfo.facing], - selectedCameraInfo.orientation); - } - -} diff --git a/zxinglibrary/src/main/java/com/zxing/scanner/common/Scanner.java b/zxinglibrary/src/main/java/com/zxing/scanner/common/Scanner.java deleted file mode 100644 index 00fac0b..0000000 --- a/zxinglibrary/src/main/java/com/zxing/scanner/common/Scanner.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.zxing.scanner.common; - -import android.content.Context; -import android.util.TypedValue; - -import com.google.zxing.Result; -import com.google.zxing.client.result.ParsedResult; -import com.google.zxing.client.result.ResultParser; - -/** - * Created by hupei on 2016/7/1. - */ -public final class Scanner { - public static final int RESTART_PREVIEW = 0; - public static final int DECODE_SUCCEEDED = 1; - public static final int DECODE_FAILED = 2; - public static final int RETURN_SCAN_RESULT = 3; - public static final int LAUNCH_PRODUCT_QUERY = 4; - public static final int DECODE = 5; - public static final int QUIT = 6; - - public static class color { - public static final int VIEWFINDER_MASK = 0x60000000; - public static final int RESULT_VIEW = 0xb0000000; - public static final int VIEWFINDER_LASER = 0xff00ff00; - public static final int POSSIBLE_RESULT_POINTS = 0xc0ffbd21; - public static final int RESULT_POINTS = 0xc099cc00; - } - - public static class Scan { - public static final String ACTION = "com.mylhyl.zxing.scanner.client.android.SCAN"; - - public static final String RESULT = "SCAN_RESULT"; - } - - public static class ScanMode { - - /** - * Decode only UPC and EAN barcodes. This is the right choice for shopping apps which get - * prices, reviews, etc. for products. - */ - public static final String PRODUCT_MODE = "PRODUCT_MODE"; - - /** - * Decode only 1D barcodes. - */ - public static final String ONE_D_MODE = "ONE_D_MODE"; - - /** - * Decode only QR codes. - */ - public static final String QR_CODE_MODE = "QR_CODE"; - - /** - * Decode only Data Matrix codes. - */ - public static final String DATA_MATRIX_MODE = "DATA_MATRIX_MODE"; - } - - public static ParsedResult parseResult(Result rawResult) { - if (rawResult == null) return null; - return ResultParser.parseResult(rawResult); - } - - public static int dp2px(Context context, float dpValue) { - return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dpValue - , context.getResources().getDisplayMetrics()); - } - - public static int sp2px(Context context, float spValue) { - return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, spValue - , context.getResources().getDisplayMetrics()); - } -} diff --git a/zxinglibrary/src/main/java/com/zxing/scanner/decode/BitmapLuminanceSource.java b/zxinglibrary/src/main/java/com/zxing/scanner/decode/BitmapLuminanceSource.java deleted file mode 100644 index f84c69b..0000000 --- a/zxinglibrary/src/main/java/com/zxing/scanner/decode/BitmapLuminanceSource.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.zxing.scanner.decode; - -import android.graphics.Bitmap; - -import com.google.zxing.LuminanceSource; - -/** - * - * 解析Bitmap LuminanceSource - */ -public class BitmapLuminanceSource extends LuminanceSource { - - private byte bitmapPixels[]; - - public BitmapLuminanceSource(Bitmap bitmap) { - super(bitmap.getWidth(), bitmap.getHeight()); - - // 首先,要取得该图片的像素数组内容 - int[] data = new int[bitmap.getWidth() * bitmap.getHeight()]; - this.bitmapPixels = new byte[bitmap.getWidth() * bitmap.getHeight()]; - bitmap.getPixels(data, 0, getWidth(), 0, 0, getWidth(), getHeight()); - - // 将int数组转换为byte数组,也就是取像素值中蓝色值部分作为辨析内容 - for (int i = 0; i < data.length; i++) { - this.bitmapPixels[i] = (byte) data[i]; - } - } - - @Override - public byte[] getMatrix() { - // 返回我们生成好的像素数据 - return bitmapPixels; - } - - @Override - public byte[] getRow(int y, byte[] row) { - // 这里要得到指定行的像素数据 - System.arraycopy(bitmapPixels, y * getWidth(), row, 0, getWidth()); - return row; - } -} diff --git a/zxinglibrary/src/main/java/com/zxing/scanner/decode/DecodeFormatManager.java b/zxinglibrary/src/main/java/com/zxing/scanner/decode/DecodeFormatManager.java deleted file mode 100644 index 67cc04f..0000000 --- a/zxinglibrary/src/main/java/com/zxing/scanner/decode/DecodeFormatManager.java +++ /dev/null @@ -1,77 +0,0 @@ -package com.zxing.scanner.decode; - -import android.text.TextUtils; - -import com.google.zxing.BarcodeFormat; -import com.zxing.scanner.common.Scanner; - -import java.util.EnumSet; -import java.util.HashMap; -import java.util.Map; -import java.util.Set; - -/** - * Created by hupei on 2017/7/7. - */ - -public final class DecodeFormatManager { - - static final Set<BarcodeFormat> PRODUCT_FORMATS; - static final Set<BarcodeFormat> INDUSTRIAL_FORMATS; - private static final Set<BarcodeFormat> ONE_D_FORMATS; - static final Set<BarcodeFormat> QR_CODE_FORMATS = EnumSet.of(BarcodeFormat.QR_CODE); - static final Set<BarcodeFormat> DATA_MATRIX_FORMATS = EnumSet.of(BarcodeFormat.DATA_MATRIX); - - static { - PRODUCT_FORMATS = EnumSet.of( - BarcodeFormat.UPC_A, - BarcodeFormat.UPC_E, - BarcodeFormat.EAN_13, - BarcodeFormat.EAN_8, - BarcodeFormat.RSS_14, - BarcodeFormat.RSS_EXPANDED); - INDUSTRIAL_FORMATS = EnumSet.of( - BarcodeFormat.CODE_39, - BarcodeFormat.CODE_93, - BarcodeFormat.CODE_128, - BarcodeFormat.ITF, - BarcodeFormat.CODABAR); - ONE_D_FORMATS = EnumSet.copyOf(PRODUCT_FORMATS); - ONE_D_FORMATS.addAll(INDUSTRIAL_FORMATS); - } - - private static final Map<String, Set<BarcodeFormat>> FORMATS_FOR_MODE; - - static { - FORMATS_FOR_MODE = new HashMap<>(); - FORMATS_FOR_MODE.put(Scanner.ScanMode.ONE_D_MODE, ONE_D_FORMATS); - FORMATS_FOR_MODE.put(Scanner.ScanMode.PRODUCT_MODE, PRODUCT_FORMATS); - FORMATS_FOR_MODE.put(Scanner.ScanMode.QR_CODE_MODE, QR_CODE_FORMATS); - FORMATS_FOR_MODE.put(Scanner.ScanMode.DATA_MATRIX_MODE, DATA_MATRIX_FORMATS); - } - - private DecodeFormatManager() { - } - - public static Set<BarcodeFormat> parseDecodeFormats(BarcodeFormat... scanFormats) { - if (scanFormats != null) { - Set<BarcodeFormat> formats = EnumSet.noneOf(BarcodeFormat.class); - try { - for (BarcodeFormat format : scanFormats) { - formats.add(format); - } - return formats; - } catch (IllegalArgumentException iae) { - // ignore it then - } - } - return null; - } - - public static Set<BarcodeFormat> parseDecodeFormats(String decodeMode) { - if (!TextUtils.isEmpty(decodeMode)) { - return FORMATS_FOR_MODE.get(decodeMode); - } - return null; - } -} diff --git a/zxinglibrary/src/main/java/com/zxing/scanner/decode/DecodeHandler.java b/zxinglibrary/src/main/java/com/zxing/scanner/decode/DecodeHandler.java deleted file mode 100644 index df231a8..0000000 --- a/zxinglibrary/src/main/java/com/zxing/scanner/decode/DecodeHandler.java +++ /dev/null @@ -1,140 +0,0 @@ -/* - * Copyright (C) 2010 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.zxing.scanner.decode; - -import android.graphics.Bitmap; -import android.os.Bundle; -import android.os.Handler; -import android.os.Looper; -import android.os.Message; - -import com.google.zxing.BinaryBitmap; -import com.google.zxing.DecodeHintType; -import com.google.zxing.MultiFormatReader; -import com.google.zxing.PlanarYUVLuminanceSource; -import com.google.zxing.ReaderException; -import com.google.zxing.Result; -import com.google.zxing.common.GlobalHistogramBinarizer; -import com.zxing.scanner.camera.CameraManager; -import com.zxing.scanner.common.Scanner; - -import java.io.ByteArrayOutputStream; -import java.util.Map; - -final class DecodeHandler extends Handler { - - private final CameraManager cameraManager; - private final Handler scannerViewHandler; - private final MultiFormatReader multiFormatReader; - private boolean running = true; - private boolean bundleThumbnail = false; - - DecodeHandler(CameraManager cameraManager, Handler scannerViewHandler, - Map<DecodeHintType, Object> hints, boolean bundleThumbnail) { - this.cameraManager = cameraManager; - this.scannerViewHandler = scannerViewHandler; - this.bundleThumbnail = bundleThumbnail; - multiFormatReader = new MultiFormatReader(); - multiFormatReader.setHints(hints); - } - - @Override - public void handleMessage(Message message) { - if (message == null || !running) { - return; - } - switch (message.what) { - case Scanner.DECODE: - decode((byte[]) message.obj, message.arg1, message.arg2); - break; - case Scanner.QUIT: - running = false; - Looper.myLooper().quit(); - break; - } - } - - /** - * 捕捉画面并解码<br/> - * Decode the data within the viewfinder rectangle, and time how long it - * took. For efficiency, reuse the same reader objects from one decode to - * the next. - * - * @param data The YUV preview frame. - * @param width The width of the preview frame. - * @param height The height of the preview frame. - */ - private void decode(byte[] data, int width, int height) { - //竖屏识别一维 - if (cameraManager.isPortrait()) { - byte[] rotatedData = new byte[data.length]; - for (int y = 0; y < height; y++) { - for (int x = 0; x < width; x++) - rotatedData[x * height + height - y - 1] = data[x + y * width]; - } - int tmp = width; - width = height; - height = tmp; - data = rotatedData; - } - Result rawResult = null; - PlanarYUVLuminanceSource source = cameraManager.buildLuminanceSource(data, width, height); - if (source != null) { - BinaryBitmap bitmap = new BinaryBitmap(new GlobalHistogramBinarizer(source)); - try { - rawResult = multiFormatReader.decodeWithState(bitmap); - } catch (ReaderException re) { - // continue - } finally { - multiFormatReader.reset(); - } - } - - Handler handler = scannerViewHandler; - if (rawResult != null) { - if (handler != null) { - //会向 ScannerViewHandler 发消息 - Message message = Message.obtain(handler, Scanner.DECODE_SUCCEEDED, rawResult); - Bundle bundle = new Bundle(); - if (bundleThumbnail) - bundleThumbnail(source, bundle); - message.setData(bundle); - message.sendToTarget(); - } - } else { - if (handler != null) { - Message message = Message.obtain(handler, Scanner.DECODE_FAILED); - message.sendToTarget(); - } - } - } - - private static void bundleThumbnail(PlanarYUVLuminanceSource source, - Bundle bundle) { - int[] pixels = source.renderThumbnail(); - int width = source.getThumbnailWidth(); - int height = source.getThumbnailHeight(); - Bitmap bitmap = Bitmap.createBitmap(pixels, 0, width, width, height, - Bitmap.Config.ARGB_8888); - ByteArrayOutputStream out = new ByteArrayOutputStream(); - bitmap.compress(Bitmap.CompressFormat.JPEG, 50, out); - bundle.putByteArray(DecodeThread.BARCODE_BITMAP, out.toByteArray()); - bundle.putFloat(DecodeThread.BARCODE_SCALED_FACTOR, (float) width - / source.getWidth()); - } - -} diff --git a/zxinglibrary/src/main/java/com/zxing/scanner/decode/DecodeImgCallback.java b/zxinglibrary/src/main/java/com/zxing/scanner/decode/DecodeImgCallback.java deleted file mode 100644 index a7d8346..0000000 --- a/zxinglibrary/src/main/java/com/zxing/scanner/decode/DecodeImgCallback.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.zxing.scanner.decode; - -/** - * Created by yzq on 2017/10/18. - * - * 解析图片的回调 - */ - -public interface DecodeImgCallback { - public void onImageDecodeSuccess(String result); - - public void onImageDecodeFailed(); -} diff --git a/zxinglibrary/src/main/java/com/zxing/scanner/decode/DecodeImgThread.java b/zxinglibrary/src/main/java/com/zxing/scanner/decode/DecodeImgThread.java deleted file mode 100644 index 048b848..0000000 --- a/zxinglibrary/src/main/java/com/zxing/scanner/decode/DecodeImgThread.java +++ /dev/null @@ -1,122 +0,0 @@ -package com.zxing.scanner.decode; - -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.util.Log; - -import com.google.zxing.BarcodeFormat; -import com.google.zxing.BinaryBitmap; -import com.google.zxing.DecodeHintType; -import com.google.zxing.MultiFormatReader; -import com.google.zxing.Result; -import com.google.zxing.common.HybridBinarizer; - -import java.util.ArrayList; -import java.util.EnumMap; -import java.util.Hashtable; -import java.util.List; -import java.util.Map; -import java.util.Vector; - -public class DecodeImgThread extends Thread { - public static final Map<DecodeHintType, Object> HINTS = new EnumMap<>(DecodeHintType.class); - static { - List<BarcodeFormat> formats = new ArrayList<BarcodeFormat>(); - formats.add(BarcodeFormat.QR_CODE); - HINTS.put(DecodeHintType.POSSIBLE_FORMATS, formats); - HINTS.put(DecodeHintType.CHARACTER_SET, "utf-8"); - } - // - private Bitmap scanBitmap; - /*回调*/ - private DecodeImgCallback callback; - - public DecodeImgThread(String imgPath, DecodeImgCallback callback) { - this.scanBitmap = getBitmap(imgPath,400,400); - this.callback = callback; - } - - public DecodeImgThread(Bitmap bitmap, DecodeImgCallback callback) { - this.scanBitmap = bitmap; - this.callback = callback; - } - - - @Override - public void run() { - super.run(); - if (scanBitmap == null || callback == null) { - return; - } - MultiFormatReader multiFormatReader = new MultiFormatReader(); - // 解码的参数 - Hashtable<DecodeHintType, Object> hints = new Hashtable<>(2); - // 可以解析的编码类型 - Vector<BarcodeFormat> decodeFormats = new Vector<>(); - if (decodeFormats == null || decodeFormats.isEmpty()) { - decodeFormats = new Vector<>(); - // 扫描的类型 一维码和二维码 - decodeFormats.addAll(DecodeFormatManager.QR_CODE_FORMATS); - decodeFormats.addAll(DecodeFormatManager.DATA_MATRIX_FORMATS); - } - hints.put(DecodeHintType.POSSIBLE_FORMATS, decodeFormats); - // 设置解析的字符编码格式为UTF8 - hints.put(DecodeHintType.CHARACTER_SET, "UTF8"); - // 设置解析配置参数 - multiFormatReader.setHints(hints); - // 开始对图像资源解码 - Result rawResult = null; - try { - rawResult = multiFormatReader.decodeWithState(new BinaryBitmap(new HybridBinarizer(new BitmapLuminanceSource(scanBitmap)))); - Log.i("解析结果", rawResult.getText()); - } catch (Exception e) { - e.printStackTrace(); - } - if (rawResult != null) { - callback.onImageDecodeSuccess(rawResult.getText()); - } else { - callback.onImageDecodeFailed(); - } - } - - - - /** - * 根据路径获取图片 - * - * @param filePath 文件路径 - * @param maxWidth 图片最大宽度 - * @param maxHeight 图片最大高度 - * @return bitmap - */ - public static Bitmap getBitmap(final String filePath, final int maxWidth, final int maxHeight) { - BitmapFactory.Options options = new BitmapFactory.Options(); - options.inJustDecodeBounds = true; - BitmapFactory.decodeFile(filePath, options); - options.inSampleSize = calculateInSampleSize(options, maxWidth, maxHeight); - options.inJustDecodeBounds = false; - return BitmapFactory.decodeFile(filePath, options); - } - - - /** - * Return the sample size. - * - * @param options The options. - * @param maxWidth The maximum width. - * @param maxHeight The maximum height. - * @return the sample size - */ - private static int calculateInSampleSize(final BitmapFactory.Options options, - final int maxWidth, - final int maxHeight) { - int height = options.outHeight; - int width = options.outWidth; - int inSampleSize = 1; - while ((width >>= 1) >= maxWidth && (height >>= 1) >= maxHeight) { - inSampleSize <<= 1; - } - return inSampleSize; - } - -} diff --git a/zxinglibrary/src/main/java/com/zxing/scanner/decode/DecodeThread.java b/zxinglibrary/src/main/java/com/zxing/scanner/decode/DecodeThread.java deleted file mode 100644 index 16d2e3c..0000000 --- a/zxinglibrary/src/main/java/com/zxing/scanner/decode/DecodeThread.java +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Copyright (C) 2008 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.zxing.scanner.decode; - -import android.os.Handler; -import android.os.Looper; -import android.util.Log; - -import com.google.zxing.BarcodeFormat; -import com.google.zxing.DecodeHintType; -import com.zxing.scanner.camera.CameraManager; - -import java.util.Collection; -import java.util.EnumMap; -import java.util.EnumSet; -import java.util.Map; -import java.util.concurrent.CountDownLatch; - -/** - * This thread does all the heavy lifting of decoding the images. - * - * @author dswitkin@google.com (Daniel Switkin) - */ -public final class DecodeThread extends Thread { - - public static final String BARCODE_BITMAP = "barcode_bitmap"; - public static final String BARCODE_SCALED_FACTOR = "barcode_scaled_factor"; - - private final CameraManager cameraManager; - private final Handler scannerViewHandler; - private final Map<DecodeHintType, Object> hints; - private final CountDownLatch handlerInitLatch; - private DecodeHandler handler; - private boolean bundleThumbnail = false; - - public DecodeThread(CameraManager cameraManager, Handler scannerViewHandler, - Collection<BarcodeFormat> decodeFormats, String characterSet - , boolean bundleThumbnail) { - this.cameraManager = cameraManager; - this.scannerViewHandler = scannerViewHandler; - this.bundleThumbnail = bundleThumbnail; - handlerInitLatch = new CountDownLatch(1); - - hints = new EnumMap<>(DecodeHintType.class); - - // The prefs can't change while the thread is running, so pick them up - // once here. - if (decodeFormats == null || decodeFormats.isEmpty()) { - - decodeFormats = EnumSet.noneOf(BarcodeFormat.class); - // 一维码:商品 - boolean decode1DProduct = true; - if (decode1DProduct) { - decodeFormats.addAll(DecodeFormatManager.PRODUCT_FORMATS); - } - // 一维码:工业 - boolean decode1DIndustrial = true; - if (decode1DIndustrial) { - decodeFormats.addAll(DecodeFormatManager.INDUSTRIAL_FORMATS); - } - // 二维码 - boolean decodeQR = true; - if (decodeQR) { - decodeFormats.addAll(DecodeFormatManager.QR_CODE_FORMATS); - } - // Data Matrix - boolean decodeDataMatrix = true; - if (decodeDataMatrix) { - decodeFormats.addAll(DecodeFormatManager.DATA_MATRIX_FORMATS); - } - } - hints.put(DecodeHintType.POSSIBLE_FORMATS, decodeFormats); - if (characterSet != null) { - hints.put(DecodeHintType.CHARACTER_SET, characterSet); - } - Log.i("DecodeThread", "Hints: " + hints); - } - - public Handler getHandler() { - try { - handlerInitLatch.await(); - } catch (InterruptedException ie) { - // continue? - } - return handler; - } - - @Override - public void run() { - Looper.prepare(); - handler = new DecodeHandler(cameraManager, scannerViewHandler, hints, bundleThumbnail); - handlerInitLatch.countDown(); - Looper.loop(); - } - -} diff --git a/zxinglibrary/src/main/java/com/zxing/scanner/decode/QRDecode.java b/zxinglibrary/src/main/java/com/zxing/scanner/decode/QRDecode.java deleted file mode 100644 index 11331be..0000000 --- a/zxinglibrary/src/main/java/com/zxing/scanner/decode/QRDecode.java +++ /dev/null @@ -1,116 +0,0 @@ -package com.zxing.scanner.decode; - -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; - -import com.google.zxing.BarcodeFormat; -import com.google.zxing.BinaryBitmap; -import com.google.zxing.ChecksumException; -import com.google.zxing.DecodeHintType; -import com.google.zxing.FormatException; -import com.google.zxing.NotFoundException; -import com.google.zxing.RGBLuminanceSource; -import com.google.zxing.Result; -import com.google.zxing.common.GlobalHistogramBinarizer; -import com.google.zxing.qrcode.QRCodeReader; -import com.zxing.scanner.OnScannerCompletionListener; -import com.zxing.scanner.camera.CameraManager; - -import java.io.FileNotFoundException; -import java.util.ArrayList; -import java.util.EnumMap; -import java.util.List; -import java.util.Map; - -/** - * Created by hupei on 2016/7/7. - */ -public final class QRDecode { - public static final Map<DecodeHintType, Object> HINTS = new EnumMap<>(DecodeHintType.class); - static { - List<BarcodeFormat> formats = new ArrayList<BarcodeFormat>(); - formats.add(BarcodeFormat.QR_CODE); - HINTS.put(DecodeHintType.POSSIBLE_FORMATS, formats); - HINTS.put(DecodeHintType.CHARACTER_SET, "utf-8"); - } - - private QRDecode() { - } - - /** - * 解析二维码图片 - * @param picturePath - * @param listener - * @return - */ - public static void decodeQR(String picturePath, OnScannerCompletionListener listener) { - try { - decodeQR(loadBitmap(picturePath), listener); - } catch (FileNotFoundException e) { - e.printStackTrace(); - } - } - - /** - * 解析二维码图片 - * - * @param srcBitmap - * @param listener - * @return - */ - public static void decodeQR(Bitmap srcBitmap, final OnScannerCompletionListener listener) { - Result result = null; - if (srcBitmap != null) { - int width = srcBitmap.getWidth(); - int height = srcBitmap.getHeight(); - int[] pixels = new int[width * height]; - srcBitmap.getPixels(pixels, 0, width, 0, 0, width, height); - //新建一个RGBLuminanceSource对象 - RGBLuminanceSource source = new RGBLuminanceSource(width, height, pixels); - //将图片转换成二进制图片 - BinaryBitmap binaryBitmap = new BinaryBitmap(new GlobalHistogramBinarizer(source)); - QRCodeReader reader = new QRCodeReader();//初始化解析对象 - try { - result = reader.decode(binaryBitmap, HINTS);//开始解析 - } catch (NotFoundException e) { - e.printStackTrace(); - } catch (ChecksumException e) { - e.printStackTrace(); - } catch (FormatException e) { - e.printStackTrace(); - } - } - if (listener != null) { - listener.onScannerCompletion(result, srcBitmap); - } - } - - private static Bitmap loadBitmap(String picturePath) throws FileNotFoundException { - BitmapFactory.Options opt = new BitmapFactory.Options(); - opt.inJustDecodeBounds = true; - Bitmap bitmap = BitmapFactory.decodeFile(picturePath, opt); - // 获取到这个图片的原始宽度和高度 - int picWidth = opt.outWidth; - int picHeight = opt.outHeight; - // 获取画布中间方框的宽度和高度 - int screenWidth = CameraManager.MAX_FRAME_WIDTH; - int screenHeight = CameraManager.MAX_FRAME_HEIGHT; - // isSampleSize是表示对图片的缩放程度,比如值为2图片的宽度和高度都变为以前的1/2 - opt.inSampleSize = 1; - // 根据屏的大小和图片大小计算出缩放比例 - if (picWidth > picHeight) { - if (picWidth > screenWidth) - opt.inSampleSize = picWidth / screenWidth; - } else { - if (picHeight > screenHeight) - opt.inSampleSize = picHeight / screenHeight; - } - // 生成有像素经过缩放了的bitmap - opt.inJustDecodeBounds = false; - bitmap = BitmapFactory.decodeFile(picturePath, opt); - if (bitmap == null) { - throw new FileNotFoundException("Couldn't open " + picturePath); - } - return bitmap; - } -} diff --git a/zxinglibrary/src/main/java/com/zxing/scanner/encode/ContactEncoder.java b/zxinglibrary/src/main/java/com/zxing/scanner/encode/ContactEncoder.java deleted file mode 100644 index 47799f4..0000000 --- a/zxinglibrary/src/main/java/com/zxing/scanner/encode/ContactEncoder.java +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Copyright (C) 2011 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.zxing.scanner.encode; - -import java.util.Collection; -import java.util.HashSet; -import java.util.List; - -/** - * Implementations encode according to some scheme for encoding contact information, like VCard or - * MECARD. - * - * @author Sean Owen - */ -abstract class ContactEncoder { - - /** - * @return first, the best effort encoding of all data in the appropriate format; second, a - * display-appropriate version of the contact information - */ - abstract String[] encode(List<String> names, - String organization, - List<String> addresses, - List<String> phones, - List<String> phoneTypes, - List<String> emails, - List<String> urls, - String note); - - /** - * @return null if s is null or empty, or result of s.trim() otherwise - */ - static String trim(String s) { - if (s == null) { - return null; - } - String result = s.trim(); - return result.isEmpty() ? null : result; - } - - static void append(StringBuilder newContents, - StringBuilder newDisplayContents, - String prefix, - String value, - Formatter fieldFormatter, - char terminator) { - String trimmed = trim(value); - if (trimmed != null) { - newContents.append(prefix).append(fieldFormatter.format(trimmed, 0)).append(terminator); - newDisplayContents.append(trimmed).append('\n'); - } - } - - static void appendUpToUnique(StringBuilder newContents, - StringBuilder newDisplayContents, - String prefix, - List<String> values, - int max, - Formatter displayFormatter, - Formatter fieldFormatter, - char terminator) { - if (values == null) { - return; - } - int count = 0; - Collection<String> uniques = new HashSet<>(2); - for (int i = 0; i < values.size(); i++) { - String value = values.get(i); - String trimmed = trim(value); - if (trimmed != null && !trimmed.isEmpty() && !uniques.contains(trimmed)) { - newContents.append(prefix).append(fieldFormatter.format(trimmed, i)).append(terminator); - CharSequence display = displayFormatter == null ? trimmed : displayFormatter.format(trimmed, i); - newDisplayContents.append(display).append('\n'); - if (++count == max) { - break; - } - uniques.add(trimmed); - } - } - } - -} diff --git a/zxinglibrary/src/main/java/com/zxing/scanner/encode/Formatter.java b/zxinglibrary/src/main/java/com/zxing/scanner/encode/Formatter.java deleted file mode 100644 index 029eda0..0000000 --- a/zxinglibrary/src/main/java/com/zxing/scanner/encode/Formatter.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright (C) 2011 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.zxing.scanner.encode; - -/** - * Encapsulates some simple formatting logic, to aid refactoring in {@link ContactEncoder}. - * - * @author Sean Owen - */ -interface Formatter { - - /** - * @param value value to format - * @param index index of value in a list of values to be formatted - * @return formatted value - */ - CharSequence format(CharSequence value, int index); - -} diff --git a/zxinglibrary/src/main/java/com/zxing/scanner/encode/MECARDContactEncoder.java b/zxinglibrary/src/main/java/com/zxing/scanner/encode/MECARDContactEncoder.java deleted file mode 100644 index a88efc6..0000000 --- a/zxinglibrary/src/main/java/com/zxing/scanner/encode/MECARDContactEncoder.java +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Copyright (C) 2011 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.zxing.scanner.encode; - -import android.telephony.PhoneNumberUtils; - -import java.util.List; -import java.util.regex.Pattern; - -/** - * Encodes contact information according to the MECARD format. - * - * @author Sean Owen - */ -final class MECARDContactEncoder extends ContactEncoder { - - private static final char TERMINATOR = ';'; - - @Override - public String[] encode(List<String> names, - String organization, - List<String> addresses, - List<String> phones, - List<String> phoneTypes, - List<String> emails, - List<String> urls, - String note) { - StringBuilder newContents = new StringBuilder(100); - newContents.append("MECARD:"); - - StringBuilder newDisplayContents = new StringBuilder(100); - - Formatter fieldFormatter = new MECARDFieldFormatter(); - - appendUpToUnique(newContents, newDisplayContents, "N", names, 1, new - MECARDNameDisplayFormatter(), fieldFormatter, TERMINATOR); - - append(newContents, newDisplayContents, "ORG", organization, fieldFormatter, TERMINATOR); - - appendUpToUnique(newContents, newDisplayContents, "ADR", addresses, 1, null, fieldFormatter, TERMINATOR); - - appendUpToUnique(newContents, newDisplayContents, "TEL", phones, Integer.MAX_VALUE, - new MECARDTelDisplayFormatter(), fieldFormatter, TERMINATOR); - - appendUpToUnique(newContents, newDisplayContents, "EMAIL", emails, Integer.MAX_VALUE, null, - fieldFormatter, TERMINATOR); - - appendUpToUnique(newContents, newDisplayContents, "URL", urls, Integer.MAX_VALUE, null, - fieldFormatter, TERMINATOR); - - append(newContents, newDisplayContents, "NOTE", note, fieldFormatter, TERMINATOR); - - newContents.append(';'); - - return new String[]{newContents.toString(), newDisplayContents.toString()}; - } - - private static class MECARDFieldFormatter implements Formatter { - private static final Pattern RESERVED_MECARD_CHARS = Pattern.compile("([\\\\:;])"); - private static final Pattern NEWLINE = Pattern.compile("\\n"); - - @Override - public CharSequence format(CharSequence value, int index) { - return ':' + NEWLINE.matcher(RESERVED_MECARD_CHARS.matcher(value).replaceAll("\\\\$1")).replaceAll(""); - } - } - - private static class MECARDTelDisplayFormatter implements Formatter { - private static final Pattern NOT_DIGITS = Pattern.compile("[^0-9]+"); - - @Override - public CharSequence format(CharSequence value, int index) { - return NOT_DIGITS.matcher(PhoneNumberUtils.formatNumber(value.toString())).replaceAll(""); - } - } - - private static class MECARDNameDisplayFormatter implements Formatter { - private static final Pattern COMMA = Pattern.compile(","); - - @Override - public CharSequence format(CharSequence value, int index) { - return COMMA.matcher(value).replaceAll(""); - } - } - -} diff --git a/zxinglibrary/src/main/java/com/zxing/scanner/encode/ParserUriToVCard.java b/zxinglibrary/src/main/java/com/zxing/scanner/encode/ParserUriToVCard.java deleted file mode 100644 index 0d1f8ed..0000000 --- a/zxinglibrary/src/main/java/com/zxing/scanner/encode/ParserUriToVCard.java +++ /dev/null @@ -1,149 +0,0 @@ -package com.zxing.scanner.encode; - -import android.content.ContentResolver; -import android.content.Context; -import android.database.Cursor; -import android.net.Uri; -import android.os.Bundle; -import android.provider.BaseColumns; -import android.provider.ContactsContract; - -/** - * Created by hupei on 2016/8/25. - */ -public class ParserUriToVCard { - - public static final String URL_KEY = "URL_KEY"; - public static final String NOTE_KEY = "NOTE_KEY"; - - public static final String[] PHONE_KEYS = { - ContactsContract.Intents.Insert.PHONE, - ContactsContract.Intents.Insert.SECONDARY_PHONE, - ContactsContract.Intents.Insert.TERTIARY_PHONE - }; - - public static final String[] PHONE_TYPE_KEYS = { - ContactsContract.Intents.Insert.PHONE_TYPE, - ContactsContract.Intents.Insert.SECONDARY_PHONE_TYPE, - ContactsContract.Intents.Insert.TERTIARY_PHONE_TYPE - }; - - public static final String[] EMAIL_KEYS = { - ContactsContract.Intents.Insert.EMAIL, - ContactsContract.Intents.Insert.SECONDARY_EMAIL, - ContactsContract.Intents.Insert.TERTIARY_EMAIL - }; - - public ParserUriToVCard() { - } - - public Bundle parserUri(Context context, Uri contactUri) { - if (context == null || contactUri == null) return null; - ContentResolver resolver = context.getContentResolver(); - Cursor cursor; - try { - cursor = resolver.query(contactUri, null, null, null, null); - } catch (IllegalArgumentException ignored) { - return null; - } - if (cursor == null) return null; - - String id; - String name; - boolean hasPhone; - try { - if (!cursor.moveToFirst()) return null; - - id = cursor.getString(cursor.getColumnIndex(BaseColumns._ID)); - name = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); - hasPhone = cursor.getInt(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER)) > 0; - - } finally { - cursor.close(); - } - - Bundle bundle = new Bundle(); - if (name != null && !name.isEmpty()) { - bundle.putString(ContactsContract.Intents.Insert.NAME, massageContactData(name)); - } - - if (hasPhone) { - Cursor phonesCursor = resolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, - null, - ContactsContract.CommonDataKinds.Phone.CONTACT_ID + '=' + id, - null, - null); - if (phonesCursor != null) { - try { - int foundPhone = 0; - int phonesNumberColumn = phonesCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER); - int phoneTypeColumn = phonesCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE); - while (phonesCursor.moveToNext() && foundPhone < PHONE_KEYS.length) { - String number = phonesCursor.getString(phonesNumberColumn); - if (number != null && !number.isEmpty()) { - bundle.putString(PHONE_KEYS[foundPhone], massageContactData(number)); - } - int type = phonesCursor.getInt(phoneTypeColumn); - bundle.putInt(PHONE_TYPE_KEYS[foundPhone], type); - foundPhone++; - } - } finally { - phonesCursor.close(); - } - } - } - - Cursor methodsCursor = resolver.query(ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_URI, - null, - ContactsContract.CommonDataKinds.StructuredPostal.CONTACT_ID + '=' + id, - null, - null); - if (methodsCursor != null) { - try { - if (methodsCursor.moveToNext()) { - String data = methodsCursor.getString( - methodsCursor.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.FORMATTED_ADDRESS)); - if (data != null && !data.isEmpty()) { - bundle.putString(ContactsContract.Intents.Insert.POSTAL, massageContactData(data)); - } - } - } finally { - methodsCursor.close(); - } - } - - Cursor emailCursor = resolver.query(ContactsContract.CommonDataKinds.Email.CONTENT_URI, - null, - ContactsContract.CommonDataKinds.Email.CONTACT_ID + '=' + id, - null, - null); - if (emailCursor != null) { - try { - int foundEmail = 0; - int emailColumn = emailCursor.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA); - while (emailCursor.moveToNext() && foundEmail < EMAIL_KEYS.length) { - String email = emailCursor.getString(emailColumn); - if (email != null && !email.isEmpty()) { - bundle.putString(EMAIL_KEYS[foundEmail], massageContactData(email)); - } - foundEmail++; - } - } finally { - emailCursor.close(); - } - } - if (bundle.isEmpty()) return null; - return bundle; - } - - - private static String massageContactData(String data) { - if (data.indexOf('\n') >= 0) { - data = data.replace("\n", " "); - } - if (data.indexOf('\r') >= 0) { - data = data.replace("\r", " "); - } - return data; - } -} diff --git a/zxinglibrary/src/main/java/com/zxing/scanner/encode/QRCodeEncoder.java b/zxinglibrary/src/main/java/com/zxing/scanner/encode/QRCodeEncoder.java deleted file mode 100644 index 6630c0d..0000000 --- a/zxinglibrary/src/main/java/com/zxing/scanner/encode/QRCodeEncoder.java +++ /dev/null @@ -1,336 +0,0 @@ -/* - * Copyright (C) 2008 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.zxing.scanner.encode; - -import android.content.Context; -import android.graphics.Bitmap; -import android.graphics.Canvas; -import android.graphics.Point; -import android.net.Uri; -import android.os.Bundle; -import android.provider.ContactsContract; -import android.view.Display; -import android.view.WindowManager; - -import com.google.zxing.BarcodeFormat; -import com.google.zxing.EncodeHintType; -import com.google.zxing.MultiFormatWriter; -import com.google.zxing.WriterException; -import com.google.zxing.common.BitMatrix; -import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.EnumMap; -import java.util.List; -import java.util.Map; - -/** - * This class does the work of decoding the user's request and extracting all - * the data to be encoded in a barcode. - * - * @author dswitkin@google.com (Daniel Switkin) - */ -final class QRCodeEncoder { - - private static final int WHITE = 0xFFFFFFFF; - private static final int BLACK = 0xFF000000; - - private Context context; - private QREncode.Builder encodeBuild; - - QRCodeEncoder(QREncode.Builder build, Context context) { - this.context = context; - this.encodeBuild = build; - if (encodeBuild.getColor() == 0) encodeBuild.setColor(BLACK); - - // This assumes the view is full screen, which is a good assumption - if (encodeBuild.getSize() == 0) { - int smallerDimension = getSmallerDimension(context.getApplicationContext()); - encodeBuild.setSize(smallerDimension); - } - Bitmap logoBitmap = encodeBuild.getLogoBitmap(); - if (logoBitmap != null) { - int logoSize = Math.min(logoBitmap.getWidth(), logoBitmap.getHeight()) / 2; - if (encodeBuild.getLogoSize() > 0 && encodeBuild.getLogoSize() < logoSize) { - logoSize = encodeBuild.getLogoSize(); - } - encodeBuild.setLogoBitmap(logoBitmap, logoSize); - } - encodeContentsFromZXing(build); - } - - private void encodeContentsFromZXing(QREncode.Builder build) { - if (build.getBarcodeFormat() == null - || build.getBarcodeFormat() == BarcodeFormat.QR_CODE) { - build.setBarcodeFormat(BarcodeFormat.QR_CODE); - encodeQRCodeContents(build); - } - } - - private void encodeQRCodeContents(QREncode.Builder build) { - switch (build.getParsedResultType()) { - case WIFI: - encodeBuild.setEncodeContents(build.getContents()); - break; - - case CALENDAR: - encodeBuild.setEncodeContents(build.getContents()); - break; - - case ISBN: - encodeBuild.setEncodeContents(build.getContents()); - break; - - case PRODUCT: - encodeBuild.setEncodeContents(build.getContents()); - break; - - case VIN: - encodeBuild.setEncodeContents(build.getContents()); - break; - - case URI: - encodeBuild.setEncodeContents(build.getContents()); - break; - - case TEXT: - encodeBuild.setEncodeContents(build.getContents()); - break; - - case EMAIL_ADDRESS: - encodeBuild.setEncodeContents("mailto:" + build.getContents()); - break; - - case TEL: - encodeBuild.setEncodeContents("tel:" + build.getContents()); - break; - - case SMS: - encodeBuild.setEncodeContents("sms:" + build.getContents()); - break; - case ADDRESSBOOK: - Bundle contactBundle = null; - //uri解析 - Uri addressBookUri = build.getAddressBookUri(); - if (addressBookUri != null) - contactBundle = new ParserUriToVCard().parserUri(context, addressBookUri); - //Bundle解析 - if ((contactBundle != null && contactBundle.isEmpty()) || contactBundle == null) - contactBundle = build.getBundle(); - if (contactBundle != null) { - String name = contactBundle.getString(ContactsContract.Intents.Insert.NAME); - String organization = contactBundle - .getString(ContactsContract.Intents.Insert.COMPANY); - String address = contactBundle.getString(ContactsContract.Intents.Insert - .POSTAL); - List<String> phones = getAllBundleValues(contactBundle, ParserUriToVCard - .PHONE_KEYS); - List<String> phoneTypes = getAllBundleValues(contactBundle, ParserUriToVCard - .PHONE_TYPE_KEYS); - List<String> emails = getAllBundleValues(contactBundle, ParserUriToVCard - .EMAIL_KEYS); - String url = contactBundle.getString(ParserUriToVCard.URL_KEY); - List<String> urls = url == null ? null : Collections.singletonList(url); - String note = contactBundle.getString(ParserUriToVCard.NOTE_KEY); - ContactEncoder encoder = build.isUseVCard() ? - new VCardContactEncoder() : new MECARDContactEncoder(); - String[] encoded = encoder.encode(Collections.singletonList(name), organization, - Collections.singletonList(address), phones, phoneTypes, emails, urls, - note); - // Make sure we've encoded at least one field. - if (!encoded[1].isEmpty()) { - encodeBuild.setEncodeContents(encoded[0]); - } - } - break; - case GEO: - Bundle locationBundle = build.getBundle(); - if (locationBundle != null) { - float latitude = locationBundle.getFloat("LAT", Float.MAX_VALUE); - float longitude = locationBundle.getFloat("LONG", Float.MAX_VALUE); - if (latitude != Float.MAX_VALUE && longitude != Float.MAX_VALUE) { - encodeBuild.setEncodeContents("geo:" + latitude + ',' + longitude); - } - } - break; - } - } - - private static List<String> getAllBundleValues(Bundle bundle, String[] keys) { - List<String> values = new ArrayList<>(keys.length); - for (String key : keys) { - Object value = bundle.get(key); - values.add(value == null ? null : value.toString()); - } - return values; - } - - Bitmap encodeAsBitmap() throws WriterException { - String content = encodeBuild.getEncodeContents(); - BarcodeFormat barcodeFormat = encodeBuild.getBarcodeFormat(); - int qrColor = encodeBuild.getColor(); - int size = encodeBuild.getSize(); - Bitmap logoBitmap = encodeBuild.getLogoBitmap(); - if (logoBitmap != null) - return encodeAsBitmap(content, barcodeFormat, qrColor, size, - logoBitmap, encodeBuild.getLogoSize()); - return encodeAsBitmap(content, barcodeFormat, qrColor, size); - } - - private Bitmap encodeAsBitmap(String content, BarcodeFormat barcodeFormat, int qrColor, - int size) throws - WriterException { - if (content == null) { - return null; - } - - Map<EncodeHintType, Object> hints = new EnumMap<>(EncodeHintType.class); - hints.put(EncodeHintType.CHARACTER_SET, "UTF-8"); - hints.put(EncodeHintType.MARGIN, encodeBuild.getMargin()); - BitMatrix result; - try { - result = new MultiFormatWriter().encode(content, barcodeFormat, size, size, hints); - } catch (IllegalArgumentException iae) { - // Unsupported format - return null; - } - int width = result.getWidth(); - int height = result.getHeight(); - int[] pixels = new int[width * height]; - for (int y = 0; y < height; y++) { - int offset = y * width; - for (int x = 0; x < width; x++) { - // 处理二维码颜色 - if (result.get(x, y)) { - int[] colors = encodeBuild.getColors(); - if (colors != null) { - if (x < size / 2 && y < size / 2) { - pixels[y * size + x] = colors[0];// 左上 - } else if (x < size / 2 && y > size / 2) { - pixels[y * size + x] = colors[1];// 左下 - } else if (x > size / 2 && y > size / 2) { - pixels[y * size + x] = colors[2];// 右下 - } else { - pixels[y * size + x] = colors[3];// 右上 - } - } else { - pixels[offset + x] = qrColor; - } - } else { - pixels[offset + x] = WHITE; - } - } - } - - Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); - bitmap.setPixels(pixels, 0, width, 0, 0, width, height); - return bitmap; - } - - private Bitmap encodeAsBitmap(String content, BarcodeFormat barcodeFormat, int qrColor, - int size, Bitmap logoBitmap, int logoSize) throws - WriterException { - if (content == null) { - return null; - } - Map<EncodeHintType, Object> hints = new EnumMap<>(EncodeHintType.class); - hints.put(EncodeHintType.CHARACTER_SET, "utf-8"); - hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);// 容错率 - hints.put(EncodeHintType.MARGIN, encodeBuild.getMargin()); // default is 4 - - BitMatrix result; - try { - result = new MultiFormatWriter().encode(content, barcodeFormat, size, size, hints); - } catch (IllegalArgumentException iae) { - // Unsupported format - return null; - } - int width = result.getWidth(); - int height = result.getHeight(); - int halfW = width / 2; - int halfH = height / 2; - int[] pixels = new int[width * height]; - for (int y = 0; y < height; y++) { - int offset = y * width; - for (int x = 0; x < width; x++) { - if (x > halfW - logoSize && x < halfW + logoSize && y > halfH - logoSize - && y < halfH + logoSize) { - pixels[y * width + x] = logoBitmap.getPixel(x - halfW + logoSize, y - halfH - + logoSize); - } else { - // 处理二维码颜色 - if (result.get(x, y)) { - int[] colors = encodeBuild.getColors(); - if (colors != null) { - if (x < size / 2 && y < size / 2) { - pixels[y * size + x] = colors[0];// 左上 - } else if (x < size / 2 && y > size / 2) { - pixels[y * size + x] = colors[1];// 左下 - } else if (x > size / 2 && y > size / 2) { - pixels[y * size + x] = colors[2];// 右下 - } else { - pixels[y * size + x] = colors[3];// 右上 - } - } else { - pixels[offset + x] = qrColor; - } - } else { - pixels[offset + x] = WHITE; - } - } - } - } - - Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); - bitmap.setPixels(pixels, 0, width, 0, 0, width, height); - if (encodeBuild.getQrBackground() != null) { - return addBackground(bitmap, encodeBuild.getQrBackground()); - } - return bitmap; - } - - private static int getSmallerDimension(Context context) { - WindowManager manager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); - Display display = manager.getDefaultDisplay(); - Point displaySize = new Point(); - display.getSize(displaySize); - int width = displaySize.x; - int height = displaySize.y; - int smallerDimension = width < height ? width : height; - smallerDimension = smallerDimension * 7 / 8; - return smallerDimension; - } - - private static Bitmap addBackground(Bitmap qrBitmap, Bitmap background) { - int bgWidth = background.getWidth(); - int bgHeight = background.getHeight(); - int fgWidth = qrBitmap.getWidth(); - int fgHeight = qrBitmap.getHeight(); - Bitmap bitmap = Bitmap.createBitmap(bgWidth, bgHeight, Bitmap.Config.ARGB_8888); - Canvas canvas = new Canvas(bitmap); - canvas.drawBitmap(background, 0, 0, null); - //二维码在背景图中间 - float left = (bgWidth - fgWidth) / 2; - float top = (bgHeight - fgHeight) / 2; - canvas.drawBitmap(qrBitmap, left, top, null); -// canvas.save(Canvas.ALL_SAVE_FLAG); - canvas.save(); - canvas.restore(); - return bitmap; - } -} diff --git a/zxinglibrary/src/main/java/com/zxing/scanner/encode/QREncode.java b/zxinglibrary/src/main/java/com/zxing/scanner/encode/QREncode.java deleted file mode 100644 index a9635ba..0000000 --- a/zxinglibrary/src/main/java/com/zxing/scanner/encode/QREncode.java +++ /dev/null @@ -1,340 +0,0 @@ -/* - * Copyright (C) 2008 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.zxing.scanner.encode; - -import android.content.Context; -import android.graphics.Bitmap; -import android.net.Uri; -import android.os.Bundle; - -import com.google.zxing.BarcodeFormat; -import com.google.zxing.WriterException; -import com.google.zxing.client.result.ParsedResultType; - -/** - * This class encodes data from an Intent into a QR code, and then displays it - * full screen so that another person can scan it with their device. - * - * @author dswitkin@google.com (Daniel Switkin) - */ -public final class QREncode { - private QRCodeEncoder mQRCodeEncoder; - - private QREncode() { - } - - private QREncode(QRCodeEncoder codeEncoder) { - this.mQRCodeEncoder = codeEncoder; - } - - /** - * {@linkplain Builder#build()} () QREncode.Builder().build()} - * - * @return - */ - public Bitmap encodeAsBitmap() { - try { - return mQRCodeEncoder.encodeAsBitmap(); - } catch (WriterException e) { - e.printStackTrace(); - } - return null; - } - - /** - * @param codeEncoder {@linkplain Builder#buildDeprecated()} () QREncode.Builder() - * .buildDeprecated()} - * @return - */ - @Deprecated - public static Bitmap encodeQR(QRCodeEncoder codeEncoder) { - try { - return codeEncoder.encodeAsBitmap(); - } catch (WriterException e) { - e.printStackTrace(); - } - return null; - } - - public static class Builder { - - private Context context; - BarcodeFormat barcodeFormat; - private ParsedResultType parsedResultType = ParsedResultType.TEXT; - private Bundle bundle; - private String contents;//原内容 - private String encodeContents;//编码内容 - private int color;//颜色 - private int[] colors; - private Uri addressBookUri; - private boolean useVCard = true; - private int size; - private Bitmap logoBitmap; - private int logoSize; - private Bitmap qrBackground; - private int margin = 4; - - public Builder(Context context) { - this.context = context; - } - - BarcodeFormat getBarcodeFormat() { - return barcodeFormat; - } - - Builder setBarcodeFormat(BarcodeFormat barcodeFormat) { - this.barcodeFormat = barcodeFormat; - return this; - } - - ParsedResultType getParsedResultType() { - return parsedResultType; - } - - /** - * 设置二维码类型 - * - * @param parsedResultType {@linkplain ParsedResultType ParsedResultType} - * @return - */ - public Builder setParsedResultType(ParsedResultType parsedResultType) { - this.parsedResultType = parsedResultType; - return this; - } - - Uri getAddressBookUri() { - return addressBookUri; - } - - /** - * 设置联系人Uri - * - * @param addressBookUri - */ - public Builder setAddressBookUri(Uri addressBookUri) { - this.addressBookUri = addressBookUri; - return this; - } - - Bundle getBundle() { - return bundle; - } - - /** - * 设置内容,当 ParsedResultType 是 ADDRESSBOOK 、GEO 类型 - * - * @param bundle - * @return - */ - public Builder setBundle(Bundle bundle) { - this.bundle = bundle; - return this; - } - - String getContents() { - return contents; - } - - /** - * 二维码内容 - * - * @param contents tel、email等不需要前缀 - * @return - */ - public Builder setContents(String contents) { - this.contents = contents; - return this; - } - - String getEncodeContents() { - return encodeContents; - } - - Builder setEncodeContents(String encodeContents) { - this.encodeContents = encodeContents; - return this; - } - - int getColor() { - return color; - } - - /** - * 设置二维码颜色 - * - * @param color - * @return - */ - public Builder setColor(int color) { - this.color = color; - return this; - } - - int[] getColors() { - return colors; - } - - /** - * 设置二维码颜色 - * - * @param leftTop 左上 - * @param leftBottom 左下 - * @param rightBottom 右下 - * @param rightTop 右上 - * @return - */ - public Builder setColors(int leftTop, int leftBottom, int rightBottom, int rightTop) { - this.colors = null; - this.colors = new int[4]; - this.colors[0] = leftTop; - this.colors[1] = leftBottom; - this.colors[2] = rightBottom; - this.colors[3] = rightTop; - return this; - } - - boolean isUseVCard() { - return useVCard; - } - - /** - * 设置vCard格式,默认true - * - * @param useVCard - * @return - */ - public Builder setUseVCard(boolean useVCard) { - this.useVCard = useVCard; - return this; - } - - /** - * 二维码大小 - * - * @param size - * @return - */ - public Builder setSize(int size) { - this.size = size; - return this; - } - - int getSize() { - return size; - } - - /** - * 二维码中间的logo - * - * @param logoBitmap - * @return - */ - public Builder setLogoBitmap(Bitmap logoBitmap) { - this.logoBitmap = logoBitmap; - return this; - } - - /** - * 二维码中间的logo,logoSize不能大于 Math.min(logoBitmap.getWidth(), logoBitmap.getHeight()) - * - * @param logoBitmap - * @param logoSize - * @return - */ - public Builder setLogoBitmap(Bitmap logoBitmap, int logoSize) { - this.logoBitmap = logoBitmap; - this.logoSize = logoSize; - return this; - } - - Bitmap getLogoBitmap() { - return logoBitmap; - } - - int getLogoSize() { - return logoSize; - } - - /** - * 设置二维码背景 - * - * @param background - * @return - */ - public Builder setQrBackground(Bitmap background) { - this.qrBackground = background; - return this; - } - - Bitmap getQrBackground() { - return qrBackground; - } - - /** - * 设置二维码边框 - * - * @param margin 范围值:0-4 - * @return - */ - public Builder setMargin(int margin) { - this.margin = margin; - return this; - } - - int getMargin() { - return margin; - } - - /** - * @return - * @deprecated {@link #build()} - */ - @Deprecated - public QRCodeEncoder buildDeprecated() { - checkParams(); - QRCodeEncoder qrCodeEncoder = new QRCodeEncoder(this, context.getApplicationContext()); - return qrCodeEncoder; - } - - public QREncode build() { - checkParams(); - QRCodeEncoder qrCodeEncoder = new QRCodeEncoder(this, context.getApplicationContext()); - return new QREncode(qrCodeEncoder); - } - - private void checkParams() { - if (context == null) - throw new IllegalArgumentException("context no found..."); - if (parsedResultType == null) { - throw new IllegalArgumentException("parsedResultType no found..."); - } - if (parsedResultType != ParsedResultType.ADDRESSBOOK && parsedResultType != - ParsedResultType.GEO && contents == null) { - throw new IllegalArgumentException("parsedResultType not" + - " ParsedResultType.ADDRESSBOOK and ParsedResultType.GEO, contents no " + - "found..."); - } - if ((parsedResultType == ParsedResultType.ADDRESSBOOK || parsedResultType == - ParsedResultType.GEO) - && bundle == null && addressBookUri == null) { - throw new IllegalArgumentException("parsedResultType yes" + - " ParsedResultType.ADDRESSBOOK or ParsedResultType.GEO, bundle and " + - "addressBookUri no found..."); - } - } - } -} diff --git a/zxinglibrary/src/main/java/com/zxing/scanner/encode/VCardContactEncoder.java b/zxinglibrary/src/main/java/com/zxing/scanner/encode/VCardContactEncoder.java deleted file mode 100644 index 93fbe41..0000000 --- a/zxinglibrary/src/main/java/com/zxing/scanner/encode/VCardContactEncoder.java +++ /dev/null @@ -1,155 +0,0 @@ -/* - * Copyright (C) 2011 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.zxing.scanner.encode; - -import android.provider.ContactsContract; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; - -/** - * Encodes contact information according to the vCard format. - * - * @author Sean Owen - */ -final class VCardContactEncoder extends ContactEncoder { - - private static final char TERMINATOR = '\n'; - - @Override - public String[] encode(List<String> names, - String organization, - List<String> addresses, - List<String> phones, - List<String> phoneTypes, - List<String> emails, - List<String> urls, - String note) { - StringBuilder newContents = new StringBuilder(100); - newContents.append("BEGIN:VCARD").append(TERMINATOR); - newContents.append("VERSION:3.0").append(TERMINATOR); - - StringBuilder newDisplayContents = new StringBuilder(100); - - Formatter fieldFormatter = new VCardFieldFormatter(); - - appendUpToUnique(newContents, newDisplayContents, "N", names, 1, null, fieldFormatter, TERMINATOR); - - append(newContents, newDisplayContents, "ORG", organization, fieldFormatter, TERMINATOR); - - appendUpToUnique(newContents, newDisplayContents, "ADR", addresses, 1, null, fieldFormatter, TERMINATOR); - - List<Map<String,Set<String>>> phoneMetadata = buildPhoneMetadata(phones, phoneTypes); - appendUpToUnique(newContents, newDisplayContents, "TEL", phones, Integer.MAX_VALUE, - new VCardTelDisplayFormatter(phoneMetadata), - new VCardFieldFormatter(phoneMetadata), TERMINATOR); - - appendUpToUnique(newContents, newDisplayContents, "EMAIL", emails, Integer.MAX_VALUE, null, - fieldFormatter, TERMINATOR); - - appendUpToUnique(newContents, newDisplayContents, "URL", urls, Integer.MAX_VALUE, null, - fieldFormatter, TERMINATOR); - - append(newContents, newDisplayContents, "NOTE", note, fieldFormatter, TERMINATOR); - - newContents.append("END:VCARD").append(TERMINATOR); - - return new String[] { newContents.toString(), newDisplayContents.toString() }; - } - - private static List<Map<String,Set<String>>> buildPhoneMetadata(Collection<String> phones, List<String> phoneTypes) { - if (phoneTypes == null || phoneTypes.isEmpty()) { - return null; - } - List<Map<String,Set<String>>> metadataForIndex = new ArrayList<>(); - for (int i = 0; i < phones.size(); i++) { - if (phoneTypes.size() <= i) { - metadataForIndex.add(null); - } else { - Map<String,Set<String>> metadata = new HashMap<>(); - metadataForIndex.add(metadata); - Set<String> typeTokens = new HashSet<>(); - metadata.put("TYPE", typeTokens); - String typeString = phoneTypes.get(i); - Integer androidType = maybeIntValue(typeString); - if (androidType == null) { - typeTokens.add(typeString); - } else { - String purpose = vCardPurposeLabelForAndroidType(androidType); - String context = vCardContextLabelForAndroidType(androidType); - if (purpose != null) { - typeTokens.add(purpose); - } - if (context != null) { - typeTokens.add(context); - } - } - } - } - return metadataForIndex; - } - - private static Integer maybeIntValue(String value) { - try { - return Integer.valueOf(value); - } catch (NumberFormatException nfe) { - return null; - } - } - - private static String vCardPurposeLabelForAndroidType(int androidType) { - switch (androidType) { - case ContactsContract.CommonDataKinds.Phone.TYPE_FAX_HOME: - case ContactsContract.CommonDataKinds.Phone.TYPE_FAX_WORK: - case ContactsContract.CommonDataKinds.Phone.TYPE_OTHER_FAX: - return "fax"; - case ContactsContract.CommonDataKinds.Phone.TYPE_PAGER: - case ContactsContract.CommonDataKinds.Phone.TYPE_WORK_PAGER: - return "pager"; - case ContactsContract.CommonDataKinds.Phone.TYPE_TTY_TDD: - return "textphone"; - case ContactsContract.CommonDataKinds.Phone.TYPE_MMS: - return "text"; - default: - return null; - } - } - - private static String vCardContextLabelForAndroidType(int androidType) { - switch (androidType) { - case ContactsContract.CommonDataKinds.Phone.TYPE_HOME: - case ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE: - case ContactsContract.CommonDataKinds.Phone.TYPE_FAX_HOME: - case ContactsContract.CommonDataKinds.Phone.TYPE_PAGER: - return "home"; - case ContactsContract.CommonDataKinds.Phone.TYPE_COMPANY_MAIN: - case ContactsContract.CommonDataKinds.Phone.TYPE_WORK: - case ContactsContract.CommonDataKinds.Phone.TYPE_WORK_MOBILE: - case ContactsContract.CommonDataKinds.Phone.TYPE_FAX_WORK: - case ContactsContract.CommonDataKinds.Phone.TYPE_WORK_PAGER: - return "work"; - default: - return null; - } - } - -} diff --git a/zxinglibrary/src/main/java/com/zxing/scanner/encode/VCardFieldFormatter.java b/zxinglibrary/src/main/java/com/zxing/scanner/encode/VCardFieldFormatter.java deleted file mode 100644 index 11469ba..0000000 --- a/zxinglibrary/src/main/java/com/zxing/scanner/encode/VCardFieldFormatter.java +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright (C) 2014 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.zxing.scanner.encode; - -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.regex.Pattern; - -/** - * @author Sean Owen - */ -final class VCardFieldFormatter implements Formatter { - - private static final Pattern RESERVED_VCARD_CHARS = Pattern.compile("([\\\\,;])"); - private static final Pattern NEWLINE = Pattern.compile("\\n"); - - private final List<Map<String,Set<String>>> metadataForIndex; - - VCardFieldFormatter() { - this(null); - } - - VCardFieldFormatter(List<Map<String,Set<String>>> metadataForIndex) { - this.metadataForIndex = metadataForIndex; - } - - @Override - public CharSequence format(CharSequence value, int index) { - value = RESERVED_VCARD_CHARS.matcher(value).replaceAll("\\\\$1"); - value = NEWLINE.matcher(value).replaceAll(""); - Map<String,Set<String>> metadata = - metadataForIndex == null || metadataForIndex.size() <= index ? null : metadataForIndex.get(index); - value = formatMetadata(value, metadata); - return value; - } - - private static CharSequence formatMetadata(CharSequence value, Map<String,Set<String>> metadata) { - StringBuilder withMetadata = new StringBuilder(); - if (metadata != null) { - for (Map.Entry<String,Set<String>> metadatum : metadata.entrySet()) { - Set<String> values = metadatum.getValue(); - if (values == null || values.isEmpty()) { - continue; - } - withMetadata.append(';').append(metadatum.getKey()).append('='); - if (values.size() > 1) { - withMetadata.append('"'); - } - Iterator<String> valuesIt = values.iterator(); - withMetadata.append(valuesIt.next()); - while (valuesIt.hasNext()) { - withMetadata.append(',').append(valuesIt.next()); - } - if (values.size() > 1) { - withMetadata.append('"'); - } - } - } - withMetadata.append(':').append(value); - return withMetadata; - } - -} diff --git a/zxinglibrary/src/main/java/com/zxing/scanner/encode/VCardTelDisplayFormatter.java b/zxinglibrary/src/main/java/com/zxing/scanner/encode/VCardTelDisplayFormatter.java deleted file mode 100644 index 36f26ef..0000000 --- a/zxinglibrary/src/main/java/com/zxing/scanner/encode/VCardTelDisplayFormatter.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright (C) 2014 ZXing authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.zxing.scanner.encode; - -import android.telephony.PhoneNumberUtils; - -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Set; - -/** - * @author Sean Owen - */ -final class VCardTelDisplayFormatter implements Formatter { - - private final List<Map<String,Set<String>>> metadataForIndex; - - VCardTelDisplayFormatter() { - this(null); - } - - VCardTelDisplayFormatter(List<Map<String,Set<String>>> metadataForIndex) { - this.metadataForIndex = metadataForIndex; - } - - @Override - public CharSequence format(CharSequence value, int index) { - value = PhoneNumberUtils.formatNumber(value.toString()); - Map<String,Set<String>> metadata = - metadataForIndex == null || metadataForIndex.size() <= index ? null : metadataForIndex.get(index); - value = formatMetadata(value, metadata); - return value; - } - - private static CharSequence formatMetadata(CharSequence value, Map<String,Set<String>> metadata) { - if (metadata == null || metadata.isEmpty()) { - return value; - } - StringBuilder withMetadata = new StringBuilder(); - for (Map.Entry<String,Set<String>> metadatum : metadata.entrySet()) { - Set<String> values = metadatum.getValue(); - if (values == null || values.isEmpty()) { - continue; - } - Iterator<String> valuesIt = values.iterator(); - withMetadata.append(valuesIt.next()); - while (valuesIt.hasNext()) { - withMetadata.append(',').append(valuesIt.next()); - } - } - if (withMetadata.length() > 0) { - withMetadata.append(' '); - } - withMetadata.append(value); - return withMetadata; - } - -} diff --git a/zxinglibrary/src/main/java/com/zxing/scanner/result/AddressBookResult.java b/zxinglibrary/src/main/java/com/zxing/scanner/result/AddressBookResult.java deleted file mode 100644 index ab45685..0000000 --- a/zxinglibrary/src/main/java/com/zxing/scanner/result/AddressBookResult.java +++ /dev/null @@ -1,108 +0,0 @@ -package com.zxing.scanner.result; - -import com.google.zxing.client.result.AddressBookParsedResult; - -/** - * Created by hupei on 2016/8/12. - */ -public class AddressBookResult extends Result { - private final String[] names; - private final String[] nicknames; - private final String pronunciation; - private final String[] phoneNumbers; - private final String[] phoneTypes; - private final String[] emails; - private final String[] emailTypes; - private final String instantMessenger; - private final String note; - private final String[] addresses; - private final String[] addressTypes; - private final String org; - private final String birthday; - private final String title; - private final String[] urls; - private final String[] geo; - - public AddressBookResult(AddressBookParsedResult addressBookParsedResult) { - this.names = addressBookParsedResult.getNames(); - this.nicknames = addressBookParsedResult.getNicknames(); - this.pronunciation = addressBookParsedResult.getPronunciation(); - this.phoneNumbers = addressBookParsedResult.getPhoneNumbers(); - this.phoneTypes = addressBookParsedResult.getPhoneTypes(); - this.emails = addressBookParsedResult.getEmails(); - this.emailTypes = addressBookParsedResult.getEmailTypes(); - this.instantMessenger = addressBookParsedResult.getInstantMessenger(); - this.note = addressBookParsedResult.getNote(); - this.addresses = addressBookParsedResult.getAddresses(); - this.addressTypes = addressBookParsedResult.getAddressTypes(); - this.org = addressBookParsedResult.getOrg(); - this.birthday = addressBookParsedResult.getBirthday(); - this.title = addressBookParsedResult.getTitle(); - this.urls = addressBookParsedResult.getURLs(); - this.geo = addressBookParsedResult.getGeo(); - } - - public String[] getNames() { - return names; - } - - public String[] getNicknames() { - return nicknames; - } - - public String getPronunciation() { - return pronunciation; - } - - public String[] getPhoneNumbers() { - return phoneNumbers; - } - - public String[] getPhoneTypes() { - return phoneTypes; - } - - public String[] getEmails() { - return emails; - } - - public String[] getEmailTypes() { - return emailTypes; - } - - public String getInstantMessenger() { - return instantMessenger; - } - - public String getNote() { - return note; - } - - public String[] getAddresses() { - return addresses; - } - - public String[] getAddressTypes() { - return addressTypes; - } - - public String getOrg() { - return org; - } - - public String getBirthday() { - return birthday; - } - - public String getTitle() { - return title; - } - - public String[] getUrls() { - return urls; - } - - public String[] getGeo() { - return geo; - } -} diff --git a/zxinglibrary/src/main/java/com/zxing/scanner/result/GeoResult.java b/zxinglibrary/src/main/java/com/zxing/scanner/result/GeoResult.java deleted file mode 100644 index 803bda9..0000000 --- a/zxinglibrary/src/main/java/com/zxing/scanner/result/GeoResult.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.zxing.scanner.result; - -import com.google.zxing.client.result.GeoParsedResult; - -/** - * Created by hupei on 2016/8/12. - */ -public class GeoResult extends Result { - private final double latitude; - private final double longitude; - private final double altitude; - private final String query; - - public GeoResult(GeoParsedResult geoParsedResult) { - this.latitude = geoParsedResult.getLatitude(); - this.longitude = geoParsedResult.getLongitude(); - this.altitude = geoParsedResult.getAltitude(); - this.query = geoParsedResult.getQuery(); - } - - public double getLatitude() { - return latitude; - } - - public double getLongitude() { - return longitude; - } - - public double getAltitude() { - return altitude; - } - - public String getQuery() { - return query; - } -} diff --git a/zxinglibrary/src/main/java/com/zxing/scanner/result/ISBNResult.java b/zxinglibrary/src/main/java/com/zxing/scanner/result/ISBNResult.java deleted file mode 100644 index 1eb1013..0000000 --- a/zxinglibrary/src/main/java/com/zxing/scanner/result/ISBNResult.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.zxing.scanner.result; - -import com.google.zxing.client.result.ISBNParsedResult; - -/** - * Created by hupei on 2016/8/12. - */ -public class ISBNResult extends Result { - private final String isbn; - - public ISBNResult(ISBNParsedResult isbnParsedResult) { - this.isbn = isbnParsedResult.getISBN(); - } - - public String getISBN() { - return isbn; - } -} diff --git a/zxinglibrary/src/main/java/com/zxing/scanner/result/ProductResult.java b/zxinglibrary/src/main/java/com/zxing/scanner/result/ProductResult.java deleted file mode 100644 index bd1ffc5..0000000 --- a/zxinglibrary/src/main/java/com/zxing/scanner/result/ProductResult.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.zxing.scanner.result; - -import com.google.zxing.client.result.ProductParsedResult; - -/** - * Created by hupei on 2016/8/12. - */ -public class ProductResult extends Result { - private final String productID; - private final String normalizedProductID; - - public ProductResult(ProductParsedResult productParsedResult) { - this.productID = productParsedResult.getProductID(); - this.normalizedProductID = productParsedResult.getNormalizedProductID(); - } - - public String getProductID() { - return productID; - } - - public String getNormalizedProductID() { - return normalizedProductID; - } -} diff --git a/zxinglibrary/src/main/java/com/zxing/scanner/result/Result.java b/zxinglibrary/src/main/java/com/zxing/scanner/result/Result.java deleted file mode 100644 index cf858ad..0000000 --- a/zxinglibrary/src/main/java/com/zxing/scanner/result/Result.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.zxing.scanner.result; - -import java.io.Serializable; - -/** - * Created by hupei on 2016/8/12. - */ -class Result implements Serializable { -} diff --git a/zxinglibrary/src/main/java/com/zxing/scanner/result/SMSResult.java b/zxinglibrary/src/main/java/com/zxing/scanner/result/SMSResult.java deleted file mode 100644 index b69e283..0000000 --- a/zxinglibrary/src/main/java/com/zxing/scanner/result/SMSResult.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.zxing.scanner.result; - -import com.google.zxing.client.result.SMSParsedResult; - -/** - * Created by hupei on 2016/8/12. - */ -public class SMSResult extends Result { - private final String[] numbers; - private final String[] vias; - private final String subject; - private final String body; - - public SMSResult(SMSParsedResult smsParsedResult) { - this.numbers = smsParsedResult.getNumbers(); - this.vias = smsParsedResult.getVias(); - this.subject = smsParsedResult.getSubject(); - this.body = smsParsedResult.getBody(); - } - - public String[] getNumbers() { - return numbers; - } - - public String[] getVias() { - return vias; - } - - public String getSubject() { - return subject; - } - - public String getBody() { - return body; - } -} diff --git a/zxinglibrary/src/main/java/com/zxing/scanner/result/TelResult.java b/zxinglibrary/src/main/java/com/zxing/scanner/result/TelResult.java deleted file mode 100644 index caae5fe..0000000 --- a/zxinglibrary/src/main/java/com/zxing/scanner/result/TelResult.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.zxing.scanner.result; - -import com.google.zxing.client.result.TelParsedResult; - -/** - * Created by hupei on 2016/8/12. - */ -public class TelResult extends Result { - private final String number; - private final String telURI; - private final String title; - - public TelResult(TelParsedResult telParsedResult) { - this.number = telParsedResult.getNumber(); - this.telURI = telParsedResult.getTelURI(); - this.title = telParsedResult.getTitle(); - } - - public String getNumber() { - return number; - } - - public String getTelURI() { - return telURI; - } - - public String getTitle() { - return title; - } -} diff --git a/zxinglibrary/src/main/java/com/zxing/scanner/result/TextResult.java b/zxinglibrary/src/main/java/com/zxing/scanner/result/TextResult.java deleted file mode 100644 index 87a2531..0000000 --- a/zxinglibrary/src/main/java/com/zxing/scanner/result/TextResult.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.zxing.scanner.result; - -import com.google.zxing.client.result.TextParsedResult; - -/** - * Created by hupei on 2016/8/12. - */ -public class TextResult extends Result { - private final String text; - private final String language; - - public TextResult(TextParsedResult textParsedResult) { - this.text = textParsedResult.getText(); - this.language = textParsedResult.getLanguage(); - } - - public String getText() { - return text; - } - - public String getLanguage() { - return language; - } -} diff --git a/zxinglibrary/src/main/java/com/zxing/scanner/result/URIResult.java b/zxinglibrary/src/main/java/com/zxing/scanner/result/URIResult.java deleted file mode 100644 index fc31072..0000000 --- a/zxinglibrary/src/main/java/com/zxing/scanner/result/URIResult.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.zxing.scanner.result; - -import com.google.zxing.client.result.URIParsedResult; - -/** - * Created by hupei on 2016/8/12. - */ -public class URIResult extends Result { - private final String uri; - private final String title; - - public URIResult(URIParsedResult uriParsedResult) { - this.uri = uriParsedResult.getURI(); - this.title = uriParsedResult.getTitle(); - } - - public String getUri() { - return uri; - } - - public String getTitle() { - return title; - } -} diff --git a/zxinglibrary/src/test/java/face/live/com/zxinglibrary/ExampleUnitTest.java b/zxinglibrary/src/test/java/face/live/com/zxinglibrary/ExampleUnitTest.java deleted file mode 100644 index 10770a3..0000000 --- a/zxinglibrary/src/test/java/face/live/com/zxinglibrary/ExampleUnitTest.java +++ /dev/null @@ -1,17 +0,0 @@ -package face.live.com.zxinglibrary; - -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 -- Gitblit v1.7.1