当前位置: 首页 > news >正文

娄底工程建设有限公司网站wordpress代码高亮插件张戈

娄底工程建设有限公司网站,wordpress代码高亮插件张戈,杭州网站设计公司,宣传网站建设的意义Android中简单封装Livedata工具类 前言#xff1a; 之前讲解过livedata和viewmodel的简单使用#xff0c;也封装过room工具类#xff0c;本文是对livedata的简单封装和使用#xff0c;先是封装了一个简单的工具类#xff0c;然后实现了一个倒计时工具类的封装. 1.LiveD…Android中简单封装Livedata工具类 前言 之前讲解过livedata和viewmodel的简单使用也封装过room工具类本文是对livedata的简单封装和使用先是封装了一个简单的工具类然后实现了一个倒计时工具类的封装. 1.LiveDataHelper工具类 package com.example.livedatautilsdemo.helper;import androidx.annotation.NonNull; import androidx.lifecycle.LifecycleOwner; import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.Observer;import java.util.Map; import java.util.WeakHashMap;/*** author: njb* date: 2023/7/31 0:10* desc:*/ public class LiveDataHelperTextends MutableLiveData {private final WeakHashMapObserverT, Boolean mObservers new WeakHashMap();Overridepublic void observe(NonNull LifecycleOwner owner, NonNull Observer observer) {mObservers.put((ObserverT) observer, true);super.observe(owner, observer);}Overridepublic void removeObserver(NonNull Observer observer) {mObservers.remove(observer);super.removeObserver(observer);}Overridepublic void removeObservers(NonNull LifecycleOwner owner) {mObservers.clear();super.removeObservers(owner);}public void setValue(Object value) {for (Map.EntryObserverT, Boolean entry : mObservers.entrySet()) {if (entry.getValue()) {entry.setValue(false);entry.getKey().onChanged((T) value);}}}public void call() {setValue(null);} }2.简单使用 private LiveDataHelperString mLiveDataHelper new LiveDataHelper();Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initView();initData();initTime();}private void initView() {tvName findViewById(R.id.textview);tvTime findViewById(R.id.tvTime);}private void initData() {mLiveDataHelper.observe(this, new ObserverString() {Overridepublic void onChanged(String name) {Log.d(LiveDataDemo, onChanged: name);}});tvName.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View view) {String newName NewName new Random().nextInt(100);mLiveDataHelper.setValue(newName);Log.d(LiveDataDemo, onClick: newName);tvName.setText(String.format(名称发生变化%s, newName));}});}3.布局代码 ?xml version1.0 encodingutf-8? androidx.constraintlayout.widget.ConstraintLayout xmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:apphttp://schemas.android.com/apk/res-autoxmlns:toolshttp://schemas.android.com/toolsandroid:layout_widthmatch_parentandroid:layout_heightmatch_parenttools:context.MainActivityTextViewandroid:idid/textviewandroid:layout_width200dpandroid:layout_height60dpandroid:textHello World!android:backgroundcolor/design_default_color_primaryandroid:textSize20spandroid:textColorcolor/whiteandroid:focusabletrueandroid:gravitycenterapp:layout_constraintBottom_toBottomOfparentapp:layout_constraintEnd_toEndOfparentapp:layout_constraintStart_toStartOfparentapp:layout_constraintTop_toTopOfparent /TextViewandroid:idid/tvTimeandroid:layout_width200dpandroid:layout_height60dpandroid:backgroundcolor/design_default_color_primaryandroid:texttimerandroid:textSize20spandroid:textColorcolor/whiteandroid:focusabletrueandroid:gravitycenterapp:layout_constraintEnd_toEndOfparentapp:layout_constraintStart_toStartOfparentapp:layout_constraintTop_toBottomOfid/textviewandroid:layout_marginTop20dp//androidx.constraintlayout.widget.ConstraintLayout4.实现效果如下 5.封装一个倒计时工具类 package com.example.livedatautilsdemo.helper;import android.os.CountDownTimer;import androidx.lifecycle.MutableLiveData;/*** author: njb* date: 2023/8/6 23:37* desc:*/ public class LiveDataTimeHelper extends MutableLiveDataLong {private CountDownTimer countDownTimer;public void startCountDown(long millisInFuture, long countDownInterval) {countDownTimer new CountDownTimer(millisInFuture, countDownInterval) {Overridepublic void onTick(long millisUntilFinished) {setValue(millisUntilFinished / 1000);}Overridepublic void onFinish() {setValue(0L);}};countDownTimer.start();}public void stopCountDown() {if (countDownTimer ! null) {countDownTimer.cancel();}}Overrideprotected void onInactive() {super.onInactive();stopCountDown();} }6.倒计时Viewmodel: package com.example.livedatautilsdemo.viewmodel;import android.os.Handler; import android.os.Looper; import android.util.Log;import androidx.lifecycle.LiveData; import androidx.lifecycle.ViewModel;import com.example.livedatautilsdemo.helper.LiveDataHelper; import com.example.livedatautilsdemo.helper.LiveDataTimeHelper;import java.util.Timer; import java.util.TimerTask;/*** author: njb* date: 2023/8/2 23:40* desc:*/ public class TimerLiveDataViewModel extends ViewModel {private LiveDataTimeHelper liveDataHelper;public LiveDataTimeHelper getCurrentSecondLiveData() {if (liveDataHelper null) {liveDataHelper new LiveDataTimeHelper();}return liveDataHelper;}public void startTiming(int seconds) {if (liveDataHelper ! null) {liveDataHelper.startCountDown(seconds * 1000, 1000);}}public void stopTiming() {if (liveDataHelper ! null) {liveDataHelper.stopCountDown();}}Overrideprotected void onCleared() {super.onCleared();stopTiming();} }7.简单使用 package com.example.livedatautilsdemo.viewmodel;import android.os.Handler; import android.os.Looper; import android.util.Log;import androidx.lifecycle.LiveData; import androidx.lifecycle.ViewModel;import com.example.livedatautilsdemo.helper.LiveDataHelper; import com.example.livedatautilsdemo.helper.LiveDataTimeHelper;import java.util.Timer; import java.util.TimerTask;/*** author: njb* date: 2023/8/2 23:40* desc:*/ public class TimerLiveDataViewModel extends ViewModel {private LiveDataTimeHelper liveDataHelper;public LiveDataTimeHelper getCurrentSecondLiveData() {if (liveDataHelper null) {liveDataHelper new LiveDataTimeHelper();}return liveDataHelper;}public void startTiming(int seconds) {if (liveDataHelper ! null) {liveDataHelper.startCountDown(seconds * 1000, 1000);}}public void stopTiming() {if (liveDataHelper ! null) {liveDataHelper.stopCountDown();}}Overrideprotected void onCleared() {super.onCleared();stopTiming();} }8.实现效果如下 9.项目源码如下 https://gitee.com/jackning_admin/live-data-utils-demo
http://www.zqtcl.cn/news/460354/

相关文章:

  • 学到什么程度可以做网站网站维护的要求包括
  • 泉州网站设计平台南阳响应式网站
  • 阿里云 企业网站选哪种推广普通话的文字内容
  • 广州市南沙建设局网站中山建网站咨询电话
  • 怎么创建网站快捷方式网络服务器搭建配置与管理 下载
  • 现在什么类型网站没有人做wordpress get_categories()
  • 石家庄网站推广优化闲鱼网络营销方式
  • 精诚时代 网站谁做的北京网站设计必看刻
  • 长沙网站排名报价企业管理培训课程网课
  • 怎样做婚庆网站外贸网站怎么注册
  • 网站设计制作公司推荐自己做商务网站有什么利弊
  • 传媒网站杨浦网站建设哪家好
  • 500m主机空间能做视频网站吗做中文网站的公司
  • 网站建设规划模板公司网站建设论文
  • p2p网站开发的内容广东世纪达建设集团有限公司官方网站
  • 网站基本建设是什么o元做网站
  • 南昌做购物网站的公司mc做弊端网站
  • 汕头制作网站推荐文化建设五大工程
  • 公司购物网站备案遵义市乡村街道建设投诉网站
  • ps做景观有哪些素材网站网站推广软文
  • 医疗类网站备案dw网页设计期末作业源代码
  • 网站建设开发合同别具光芒 Flash互动网站设计
  • app导航网站建设多少钱网页游戏破解版
  • 布吉做棋牌网站建设哪家服务好青海做高端网站建设的公司
  • 邙山郑州网站建设好看手机网站推荐
  • 北京建设网官方网站外贸wordpress收款插件
  • 网站关键词进前三响应式手机网站模版
  • 网站采集来源制作好网站
  • 哪个网站有工笔教程免费物流公司网站模板
  • 网站怎么做才有收录西安建设工程信息网人员查询