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

开发网站需要多少人企业网站建设遵循的原则

开发网站需要多少人,企业网站建设遵循的原则,自己制作的网站上传到服务器后怎么原来的网页没有变,天元建设集团有限公司上班时间文章目录 前言一、效果展示二、代码实现1.UI布局2.SlotAdapter2.SlotsActivity 总结 前言 slots游戏#xff1a; Slots游戏是一种极具流行度的赌博和娱乐形式#xff0c;通常被称为老虎机或水果机。它们在赌场、线上游戏平台和手机应用中广泛存在。一般这类游戏都使用Unity… 文章目录 前言一、效果展示二、代码实现1.UI布局2.SlotAdapter2.SlotsActivity 总结 前言 slots游戏 Slots游戏是一种极具流行度的赌博和娱乐形式通常被称为老虎机或水果机。它们在赌场、线上游戏平台和手机应用中广泛存在。一般这类游戏都使用Unity和Cocos2d-x两个常见的游戏引擎去开发的下面介绍下 Android 原生代码实现Slots 旋转动画。 一、效果展示 二、代码实现 1.UI布局 先考虑如何让控件达到滑动旋转的效果Android 中有许多具备滑动效果的控件其中一些常见的包括RecyclerView、ListView、GridView、ViewPager、ScrollView等都具备滑动效果。 Slots游戏滑动的效果我选择使用RecyclerView来实现这个滑动动画效果。 创建SlotsActivity的xml布局activity_slots最外层LinearLayout里面上半部分是五个RecyclerView组成下半部分是两个按钮Button一个点击执行单次滑动另一个则是连续滑动的按钮。 ?xml version1.0 encodingutf-8? layout xmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:toolshttp://schemas.android.com/toolstools:ignoreMissingDefaultResourcedata/dataLinearLayoutandroid:layout_widthmatch_parentandroid:orientationverticalandroid:layout_heightmatch_parentLinearLayoutandroid:layout_widthmatch_parentandroid:orientationhorizontalandroid:layout_weight1android:layout_height0dpandroidx.recyclerview.widget.RecyclerViewandroid:idid/recycler_1android:layout_width0dpandroid:layout_weight1android:layout_heightmatch_parent /androidx.recyclerview.widget.RecyclerViewandroid:idid/recycler_2android:layout_width0dpandroid:layout_weight1android:layout_heightmatch_parent /androidx.recyclerview.widget.RecyclerViewandroid:idid/recycler_3android:layout_width0dpandroid:layout_weight1android:layout_heightmatch_parent /androidx.recyclerview.widget.RecyclerViewandroid:idid/recycler_4android:layout_width0dpandroid:layout_weight1android:layout_heightmatch_parent /androidx.recyclerview.widget.RecyclerViewandroid:idid/recycler_5android:layout_width0dpandroid:layout_weight1android:layout_heightmatch_parent //LinearLayoutCheckBoxandroid:idid/is_checkandroid:text是否向上滑动android:layout_marginTop10dpandroid:layout_marginStart10dpandroid:textSize20spandroid:visibilitygoneandroid:layout_widthwrap_contentandroid:layout_height50dp /LinearLayoutandroid:orientationhorizontalandroid:gravitycenterandroid:layout_marginTop20dpandroid:layout_marginBottom30dpandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentButtonandroid:idid/startButton_downandroid:layout_marginStart10dpandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:layout_gravitycenter_horizontalandroid:textAllCapsfalseandroid:textstring/single_slide /Buttonandroid:idid/startButton_upandroid:layout_marginStart50dpandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:layout_gravitycenter_horizontalandroid:textAllCapsfalseandroid:textstring/continuous_slide //LinearLayout/LinearLayout/layout创建一个名为layout_recycler_item的xml文件用作RecyclerView的xml布局。 ?xml version1.0 encodingutf-8? LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidandroid:layout_widthmatch_parentxmlns:apphttp://schemas.android.com/apk/res-autoandroid:layout_marginTop20dpandroid:orientationverticalandroid:gravitycenterandroid:layout_height80dpImageViewandroid:idid/imageandroid:layout_marginStart20dpandroid:layout_marginEnd20dpandroid:srcmipmap/icon_orangeandroid:layout_widthmatch_parentandroid:layout_heightmatch_parent/ /LinearLayout2.SlotAdapter 先创建文件RecyclerView的适配器SlotAdapterlist 列表存放的是五个icon素材。这里适配器是继承了BaseRecyclerViewAdapterHelper高效的使用RecyclerView应对项目中的常见需求的Adapter在onBindViewHolder方法中获取到ImageView控件的id后直接利用随机数获取list 素材进行设置。同时getItemCount方法我们需要设置无限大Int.MAX_VALUE确保列表中的数据能够一直滑动。 class SlotAdapter : BaseQuickAdapterSlotBean, ViewHolder(){private var list arrayListOf(R.mipmap.icon_peach,R.mipmap.icon_cherrie,R.mipmap.icon_seven,R.mipmap.icon_lemon,R.mipmap.icon_orange)override fun onBindViewHolder(holder: ViewHolder, position: Int, item: SlotBean?) {val image holder.itemView.findViewByIdImageView(R.id.image)val randomNumber Random.nextInt(5) // 生成0到5之间的随机整数item?.type randomNumberval id list[randomNumber]image.setImageResource(id)}override fun getItemCount(items: ListSlotBean): Int {return Int.MAX_VALUE}override fun onCreateViewHolder(context: Context,parent: ViewGroup,viewType: Int): ViewHolder {return QuickViewHolder(R.layout.layout_recycler_item, parent)} }2.SlotsActivity 在SlotsActivity中初始化RecyclerView以及点击事件监听 override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)mDataBinding DataBindingUtil.setContentView(this, R.layout.activity_slots)init()}private fun init() {mDataBinding.startButtonDown.setOnClickListener {startSlide(0)}mDataBinding.startButtonUp.setOnClickListener {if (mDataBinding.startButtonUp.text.equals(resources.getString(R.string.continuous_slide))){continuous truemDataBinding.startButtonUp.text resources.getString(R.string.continuous_slide_stop)startSlide(0)}else{mDataBinding.startButtonUp.text resources.getString(R.string.continuous_slide)continuous false}}initRecycler()}在初始化initRecycler()方法中创建适配器进行关联并且设置RecyclerView禁止用户手动触摸滑动事件同时将RecyclerView的初始位置都设置在中间位置。isScrolling变量则用来控制当前是否处于滑动状态代码可以看见关于滑动监听我只监听了最后一个RecyclerView的事件其他四个RecyclerView都没有进行监听设置因为滑动的顺序案例内我是从左边第一个开始滑动到右边第五个结束。如果是随机滑动顺序的话则需要监听最后一个开始滑动的RecyclerView的滚动事件来进行下一次的滑动。 private fun initRecycler() {val slotAdapter SlotAdapter()mDataBinding.recycler1.layoutManager LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false)mDataBinding.recycler1.adapter slotAdaptermDataBinding.recycler1.setOnTouchListener { p0, p1 - true }//禁止用户手动触摸滑动mDataBinding.recycler1.scrollToPosition(Int.MAX_VALUE / 2) // 初始位置val slotAdapter2 SlotAdapter()mDataBinding.recycler2.layoutManager LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false)mDataBinding.recycler2.adapter slotAdapter2mDataBinding.recycler2.setOnTouchListener { p0, p1 - true }mDataBinding.recycler2.scrollToPosition(Int.MAX_VALUE / 2)val slotAdapter3 SlotAdapter()mDataBinding.recycler3.layoutManager LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false)mDataBinding.recycler3.adapter slotAdapter3mDataBinding.recycler3.setOnTouchListener { p0, p1 - true }mDataBinding.recycler3.scrollToPosition(Int.MAX_VALUE / 2)val slotAdapter4 SlotAdapter()mDataBinding.recycler4.layoutManager LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false)mDataBinding.recycler4.adapter slotAdapter4mDataBinding.recycler4.setOnTouchListener { p0, p1 - true }mDataBinding.recycler4.scrollToPosition(Int.MAX_VALUE / 2)val slotAdapter5 SlotAdapter()mDataBinding.recycler5.layoutManager LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false)mDataBinding.recycler5.adapter slotAdapter5mDataBinding.recycler5.setOnTouchListener { p0, p1 - true }mDataBinding.recycler5.scrollToPosition(Int.MAX_VALUE / 2)// 添加滚动监来控制按钮可点击状态mDataBinding.recycler5.addOnScrollListener(object : RecyclerView.OnScrollListener() {override fun onScrollStateChanged(recyclerView: RecyclerView, newState: Int) {super.onScrollStateChanged(recyclerView, newState)// 检查RecyclerView是否正在滚动val isScrolling newState ! RecyclerView.SCROLL_STATE_IDLE // startItemAnim(isScrolling,recyclerView)if (continuous){if(!isScrolling){//只有滑动停止的时候才进行下一次滑动startSlide(1000)}}else{// 单次滑动设置按钮的可点击状态mDataBinding.startButtonDown.isEnabled !isScrolling}}})}调用startSlide()方法开始滑动关键的smoothScrollDownwards()方法内其中calculateSpeedPerPixel 函数用于计算每个像素的滚动速度而 calculateTimeForScrolling 函数用于计算滚动所需的时间。accelerationFactor则是加速因子影响着滑动的速度。最后启动平滑滚动。 fun startSlide(time:Long){handler.postDelayed({smoothScrollDownwards(mDataBinding.recycler1, 180f)smoothScrollDownwards(mDataBinding.recycler2, 210f)smoothScrollDownwards(mDataBinding.recycler3, 230f)smoothScrollDownwards(mDataBinding.recycler4, 250f)smoothScrollDownwards(mDataBinding.recycler5, 270f)},time)}private fun smoothScrollDownwards(recyclerView: RecyclerView, speed: Float) {val layoutManager recyclerView.layoutManager as LinearLayoutManager?layoutManager?.let {val firstVisiblePosition it.findFirstVisibleItemPosition()val smoothScroller object : LinearSmoothScroller(recyclerView.context) {override fun calculateSpeedPerPixel(displayMetrics: DisplayMetrics?): Float {return speed / displayMetrics?.densityDpi!!}override fun calculateTimeForScrolling(dx: Int): Int {val initialTime super.calculateTimeForScrolling(dx)return (initialTime / accelerationFactor).toInt()}}val checked mDataBinding.isCheck.isCheckedsmoothScroller.targetPosition if (checked) firstVisiblePosition number else firstVisiblePosition- number// 设置滚动的目标位置layoutManager.startSmoothScroll(smoothScroller) // 启动平滑滚动}}整个核心代码的实现到这里就已经完全ok了下面附上SlotsActivity的完整代码参考 package com.example.demo.activityimport android.annotation.SuppressLint import android.os.Bundle import android.os.Handler import android.os.Looper import android.util.DisplayMetrics import android.util.Log import android.widget.ImageView import androidx.appcompat.app.AppCompatActivity import androidx.databinding.DataBindingUtil import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearSmoothScroller import androidx.recyclerview.widget.RecyclerView import com.example.demo.R import com.example.demo.adapter.SlotAdapter import com.example.demo.databinding.ActivitySlotsBinding import com.example.demo.utils.AnimationUtil/*** ClassName SlotsActivity* Description Slots Game* Author lmf* Date 2023/9/20 16:32* Version 1.0*/ class SlotsActivity:AppCompatActivity() {private final val TAG SlotsActivityprivate lateinit var mDataBinding:ActivitySlotsBindingprivate val number 20//列表每次滑动的数量private val accelerationFactor 2f //滑动加速因子private var continuous false //是否持续滚动private val handler Handler(Looper.getMainLooper())override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)mDataBinding DataBindingUtil.setContentView(this, R.layout.activity_slots)init()}private fun init() {mDataBinding.startButtonDown.setOnClickListener {startSlide(0)}mDataBinding.startButtonUp.setOnClickListener {if (mDataBinding.startButtonUp.text.equals(resources.getString(R.string.continuous_slide))){continuous truemDataBinding.startButtonUp.text resources.getString(R.string.continuous_slide_stop)startSlide(0)}else{mDataBinding.startButtonUp.text resources.getString(R.string.continuous_slide)continuous false}}initRecycler()}/**** param recyclerView* param speed 滚动速度每像素毫秒*/private fun smoothScrollDownwards(recyclerView: RecyclerView, speed: Float) {val layoutManager recyclerView.layoutManager as LinearLayoutManager?layoutManager?.let {val firstVisiblePosition it.findFirstVisibleItemPosition()val smoothScroller object : LinearSmoothScroller(recyclerView.context) {override fun calculateSpeedPerPixel(displayMetrics: DisplayMetrics?): Float {return speed / displayMetrics?.densityDpi!!}override fun calculateTimeForScrolling(dx: Int): Int {val initialTime super.calculateTimeForScrolling(dx)return (initialTime / accelerationFactor).toInt()}}val checked mDataBinding.isCheck.isCheckedsmoothScroller.targetPosition if (checked) firstVisiblePosition number else firstVisiblePosition- number// 设置滚动的目标位置layoutManager.startSmoothScroll(smoothScroller) // 启动平滑滚动}}//初始化列表SuppressLint(ClickableViewAccessibility)private fun initRecycler() {val slotAdapter SlotAdapter()mDataBinding.recycler1.layoutManager LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false)mDataBinding.recycler1.adapter slotAdaptermDataBinding.recycler1.setOnTouchListener { p0, p1 - true }//禁止用户手动触摸滑动mDataBinding.recycler1.scrollToPosition(Int.MAX_VALUE / 2) // 初始位置val slotAdapter2 SlotAdapter()mDataBinding.recycler2.layoutManager LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false)mDataBinding.recycler2.adapter slotAdapter2mDataBinding.recycler2.setOnTouchListener { p0, p1 - true }mDataBinding.recycler2.scrollToPosition(Int.MAX_VALUE / 2)val slotAdapter3 SlotAdapter()mDataBinding.recycler3.layoutManager LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false)mDataBinding.recycler3.adapter slotAdapter3mDataBinding.recycler3.setOnTouchListener { p0, p1 - true }mDataBinding.recycler3.scrollToPosition(Int.MAX_VALUE / 2)val slotAdapter4 SlotAdapter()mDataBinding.recycler4.layoutManager LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false)mDataBinding.recycler4.adapter slotAdapter4mDataBinding.recycler4.setOnTouchListener { p0, p1 - true }mDataBinding.recycler4.scrollToPosition(Int.MAX_VALUE / 2)val slotAdapter5 SlotAdapter()mDataBinding.recycler5.layoutManager LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false)mDataBinding.recycler5.adapter slotAdapter5mDataBinding.recycler5.setOnTouchListener { p0, p1 - true }mDataBinding.recycler5.scrollToPosition(Int.MAX_VALUE / 2)// 添加滚动监来控制按钮可点击状态mDataBinding.recycler5.addOnScrollListener(object : RecyclerView.OnScrollListener() {override fun onScrollStateChanged(recyclerView: RecyclerView, newState: Int) {super.onScrollStateChanged(recyclerView, newState)// 检查RecyclerView是否正在滚动val isScrolling newState ! RecyclerView.SCROLL_STATE_IDLE // startItemAnim(isScrolling,recyclerView)if (continuous){if(!isScrolling){//只有滑动停止的时候才进行下一次滑动startSlide(1000)}}else{// 单次滑动设置按钮的可点击状态mDataBinding.startButtonDown.isEnabled !isScrolling}}})}//调用开始滑动动画fun startSlide(time:Long){handler.postDelayed({smoothScrollDownwards(mDataBinding.recycler1, 180f)smoothScrollDownwards(mDataBinding.recycler2, 210f)smoothScrollDownwards(mDataBinding.recycler3, 230f)smoothScrollDownwards(mDataBinding.recycler4, 250f)smoothScrollDownwards(mDataBinding.recycler5, 270f)},time)} }总结 以上就是Android 实现 Slots 的游戏旋转效果的全部内容了本文仅仅简单介绍了仿Slots游戏的旋转效果真正的Slots 游戏涉及到每次滑动的得分情况处理以及更加复杂的动画特效展示。
http://www.hkea.cn/news/14268543/

相关文章:

  • 2017年做网站维护总结php做视频网站
  • 工信部网站原来是wordpress会员插件
  • 客户评价 网站电脑做网站服务器教程
  • 移动端开发框架驻马店网站seo
  • 搭建网站一个服务器和域名化工企业常用推广网站
  • 咸阳网站建设专业公司公司里开发app的叫什么
  • gg服务器租用网站企业网页制作心得
  • 电脑做网站服务器改端口做网站国内好的服务器
  • 快速整站优化南阳网站优化费用
  • 哪些网站做舆情分析中国网站访问量排行
  • 开源项目网站怎么做 带视频网络搭建及应用技能大赛 试题与答案
  • 如何快速建网站运营电商是做什么的
  • 网站上的文章做参考文献个人怎么开网站
  • 高端网站开发网站建设的前端用什么编程
  • 海南住房和城乡建设部网站广州网站建设工作室招聘
  • 嘉定网站设计网站空间和虚拟主机
  • 南昌英文网站建设深圳网站建设李天亮
  • 常州高端网站定制公司城乡建设部网站首页
  • 企业自助建站系统怎么建cms建站系统哪个好
  • 甘肃省城乡建设局网站网站运维
  • 昆山设计网站的公司四川建设银行手机银行下载官方网站
  • seo如何做网站建设房产网站推广
  • 乔拓云智能建站官网登录入口郴州网约车
  • 如何做网站推广自己产品手机app软件下载安装
  • 视频网站用什么做网页制作基本代码
  • 网站搭建招标方案查看网站被百度收录
  • 简述网站建设及维护全过程外贸网站推广平台蓝颜seo牛
  • 烟台怎么做网站如何做自己网站
  • 订单网站模板wap网站制作开发公司
  • wordpress 多站点开启网络设计方法有哪些