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

广西兴业县建设局网站深圳设计公司

广西兴业县建设局网站,深圳设计公司,我国好的室内设计公司排名,网站建设放入什么会计科目前言 这个月#xff0c;说实话#xff0c;有忙有闲#xff0c;经历了一次病痛的洗礼#xff0c;才认识到了只有好好的生活#xff0c;认真的对待自己的身体#xff0c;才能更好的去工作#xff0c;没有了身体的支撑#xff0c;什么工作都只能是纸老虎#xff0c;不攻自…前言 这个月说实话有忙有闲经历了一次病痛的洗礼才认识到了只有好好的生活认真的对待自己的身体才能更好的去工作没有了身体的支撑什么工作都只能是纸老虎不攻自破。在这里也祝愿大家在生活中好好对待自己身体第一工作第二。 为什么要写这个app 群里的一个哥们前几天晚上给我看了一下一个app我粗略看了下界面(还没运行下载他给我发的)我看了一下感觉挺不错的当时心里一热哈哈这不是挺简单的么几天就搞完了但是当我去下载的时候看到了30-40MB的大小我惊呆了要知道一个淘宝才那么大。哈哈不过还是被这个界面吸引了而且里面的内容也挺不错的大多关于心理方面的。那就自己模仿一下吧顺带的自己去学习一下,因为这个app涉及到的知识点挺多(即时通讯、直播、视屏播放、第三方登录)想着自己就慢慢的写然后去学习一下会用到的知识伴随着这样的想法就有了这个MyHearts项目。 几个小知识点 一、进入到主界面可以看到下方的几个Tab键原本想着是用FragmentTabhost实现但是看到中间的那个Tab键和其他的按键是不同等高度的而且这个还是有动画效果的后面想着如果用framelayout覆盖在上面应该是可以实现的但是动画呢这个时候想到之前用到的帧动画想必这个帧动画也是可以实现的然后自己就去试了试结果还真给实现了对于程序这东西来说当别人问这个能不能实现我在这个地方加一个字段、加个方法可以实现么我想说的就是既然已经想到了那就试一下呗行了就证明方法可以不行证明需要找其他的方法最重要的是动手写程序程序不是问出来的而是一句一句代码积累出来的。 ?xml version1.0 encodingutf-8? animation-list xmlns:androidhttp://schemas.android.com/apk/res/androidandroid:oneshotfalseitemandroid:drawablemipmap/main_layout_center_image_1android:duration100/itemandroid:drawablemipmap/main_layout_center_image_2android:duration100/itemandroid:drawablemipmap/main_layout_center_image_3android:duration100/itemandroid:drawablemipmap/main_layout_center_image_4android:duration100/itemandroid:drawablemipmap/main_layout_center_image_5android:duration100/itemandroid:drawablemipmap/main_layout_center_image_6android:duration100/itemandroid:drawablemipmap/main_layout_center_image_7android:duration100/itemandroid:drawablemipmap/main_layout_center_image_8android:duration100/itemandroid:drawablemipmap/main_layout_center_image_9android:duration100///这里并没有写完可以直接去代码里面查看最后会附上git地址/animation-list 在代码中这样就可以执行动画了 // 获取ImageView上的动画背景AnimationDrawable spinnerImg (AnimationDrawable) mIvImg.getBackground();// 开始动画spinnerImg.start(); 这样就可以实现直播和life动画的切换了。 二、心事界面的图片展示之前在用postman(用于接口调试的值得推荐)请求数据接口的时候看到里面有个photos字段并不是所有的item都有这个字段而且里面个数不一但都是一个图片地址想着应该是类似于qq空间发表说说的附带的图片。自己想着用RecyclerView实现因为这个是很好实现的但是我在看到okgo(本项目的网络请求框架支持Rx挺不错的)项目中他的项目也有这个类似的功能用到的就是NineGridView(https://github.com/jeasonlzy/NineGridView),okgo这个项目也是这位大神写的。这个也是很简单使用的他是在ViewGroup的基础上自定义的。用法也是很简单如下 //也就是用户发朋友圈的那种,添加图片ListString images bean.getPhotos();if (images ! null) {for (String image : images) {//ImageInfo 是他的实体类,用于image的地址ImageInfo info new ImageInfo();info.setThumbnailUrl(image);info.setBigImageUrl(image);imageInfo.add(info);}}holder.mPhotoRecycler.setAdapter(new NineGridViewClickAdapter(mContext, imageInfo));if (images ! null images.size() 1) {//如果用户只发了一张图片的话,就设置图片的宽和高holder.mPhotoRecycler.setSingleImageSize(300);holder.mPhotoRecycler.setSingleImageRatio(1);//holder.mPhotoRecycler.setSingleImageRatio(images.get(0).width * 1.0f / images.get(0).height);} 实现的结果如下 三、二级评论列表这个我一直想不到好的解决办法(在我脑海里一直以为有更好的方法)这里我就是用的item里面嵌套一个RecyclerView得到的comment list然后在进行item分配。如果有好的请告知。谢谢啦。这里就看下代码也没什么可写的无非就是RecyclerView嵌套RecyclerView ListCommentsBean comments bean.getComments();if (comments ! null comments.size() 0) {CommentAdapter adapter new CommentAdapter(comments);holder.mCommentRe.setVisibility(View.VISIBLE);holder.mCommentRecycler.setLayoutManager(new LinearLayoutManager(mContext));// holder.mCommentRecycler.addItemDecoration(new DividerItemDecoration(mContext//,DividerItemDecoration.VERTICAL_LIST));holder.mCommentRecycler.setItemAnimator(new DefaultItemAnimator());holder.mCommentRecycler.setAdapter(adapter);} 对于评论里面的回复和被回复者为了便于区分我这里使用到了SpanableString。类似于下面 CommentsBean bean mCommentsBeen.get(position);//评论用户String profileName bean.getName();//被回复者 如果为空 默认回复发帖者String replayName bean.getReplyToUserName();StringBuffer sb new StringBuffer();sb.append(profileName);sb.append( );String replay mContext.getResources().getString(R.string.replay_comment);if (!replayName.equals()) { //判断是否有被回复的,没有就是默认发帖者sb.append(replay);sb.append(replayName);}String commentContent bean.getContent();sb.append(commentContent);// String result ;SpannableString msp new SpannableString(sb.toString());//对评论者进行颜色配置msp.setSpan(new ForegroundColorSpan(Color.BLUE), 0,profileName.length(),Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//如果有被回复的对象那么被回复的对象也要进行颜色配置if (!replayName.equals()) {int start profileName.length() 3;int end start replayName.length();msp.setSpan(new ForegroundColorSpan(Color.BLUE), start, end,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);}//这个地方要直接设置成msp 不能用msp.toString() 要不然没有样式holder.mTvCommentContent.setText(msp);效果图大家可以git代码去运行一下。四、之前用到左滑出菜单栏第一个是Draglayout但是这个存在冲突滑动不是很流畅自己后面换到了git上的一个仿QQ5.2的但是和自己app里面的轮播(从左向右滑动的时候会带出左侧边栏还有就是心事界面的Tablayout也是存在同样的方式后面自己想到了应该是用到的ViewPager滑动事件的问题就想着之前用到的就重写了ViewPager然后处理了一些逻辑基本解决了冲突)代码如下 /*** 事件分发请求父控件是否拦截* p/* 1、右滑而且是第一个页面需要父控件拦截* p/* 2、左滑而且当前的页面是最后一个页面需要父控件拦截* p/* 3、上下滑动需要父控件拦截** param ev* return*/Overridepublic boolean dispatchTouchEvent(MotionEvent ev) {/*** 用getParent()去请求请求父控件是否不要拦截滑动事件*/switch (ev.getAction()) {case MotionEvent.ACTION_DOWN://先去让父控件不要拦截这样才可能走到ACTION_MOVE方法调用getParent().requestDisallowInterceptTouchEvent(true);/*** 拿到刚开始按下的时候的坐标*/startX (int) ev.getRawX();startY (int) ev.getRawY();break;case MotionEvent.ACTION_MOVE:/*** 获取到移动之后的坐标*/int endX (int) ev.getRawX();int endY (int) ev.getRawY();//左右滑动if (Math.abs(endX - startX) Math.abs(endY - startY)) {if (endX startX) {//右滑//获取到第一个 需要父控件拦截if (getCurrentItem() 0) {getParent().requestDisallowInterceptTouchEvent(false);}} else if (endX startX) {//左滑//获取到最后一个// 需要父控件拦截if (getCurrentItem() getAdapter().getCount() - 1) {getParent().requestDisallowInterceptTouchEvent(false);}}} else {//上下滑动getParent().requestDisallowInterceptTouchEvent(false);}break;default:break;}return super.dispatchTouchEvent(ev);} 哈哈最后还是换成了DrawerLayout不存在了滑动的冲突BUG了Drawerlayout默认划出是覆盖在主界面上的这里为了模仿的比较像就重写了一些逻辑hongyang大神的博客中有介绍 mDrawerLayout.setDrawerListener(new DrawerLayout.DrawerListener() {Overridepublic void onDrawerSlide(View drawerView, float slideOffset) {View mContent mDrawerLayout.getChildAt(0);View mMenu drawerView;float scale 1 - slideOffset;float rightScale 0.8f scale * 0.2f;if (drawerView.getTag().equals(LEFT)){float leftScale 1 - 0.3f * scale;ViewHelper.setScaleX(mMenu, leftScale);ViewHelper.setScaleY(mMenu, leftScale);ViewHelper.setAlpha(mMenu, 0.6f 0.4f * (1 - scale));ViewHelper.setTranslationX(mContent,mMenu.getMeasuredWidth() * (1 - scale));ViewHelper.setPivotX(mContent, 0);ViewHelper.setPivotY(mContent,mContent.getMeasuredHeight() / 2);mContent.invalidate();ViewHelper.setScaleX(mContent, rightScale);ViewHelper.setScaleY(mContent, rightScale);} else{ViewHelper.setTranslationX(mContent,-mMenu.getMeasuredWidth() * slideOffset);ViewHelper.setPivotX(mContent, mContent.getMeasuredWidth());ViewHelper.setPivotY(mContent,mContent.getMeasuredHeight() / 2);mContent.invalidate();ViewHelper.setScaleX(mContent, rightScale);ViewHelper.setScaleY(mContent, rightScale);}}Overridepublic void onDrawerOpened(View drawerView) {}Overridepublic void onDrawerClosed(View drawerView) {mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, Gravity.RIGHT);}Overridepublic void onDrawerStateChanged(int newState) {}}); 到这里基本上就没什么知识点了(因为自己也写的不是很好,加上自己的水平有限)后面增加新功能了在做补充。最后上传几张效果图 代码传送门如果感觉还不错欢迎star下转载于:https://www.cnblogs.com/android-blogs/p/6006598.html
http://www.huolong8.cn/news/403597/

相关文章:

  • 四川省工程建设管理协会网站wordpress使用步骤
  • 做下载网站佛山做外贸网站的公司吗
  • 有没有转门做乐器演奏的网站做服装公司需要什么网站
  • 网站报备之后如何建设网站wordpress图片分页插件下载
  • 网站开发素材有什么好看的网站资源
  • 258网站建设WordPress仿百度百家主题
  • 个人做的网站能备案吗如何策划网站
  • 河北邢台官方网站自己做网站赚钱吗
  • 移动端网站怎么做seo关键词优化公司如何选择
  • 一个网站是如何知道是谁来访问wordpress 代码执行
  • 舵落口网站建设做 58 那样的网站
  • 网站开发用户需求说明书wordpress支持的视频格式
  • 电子商城网站开发怎样制作wordpress手机主题
  • 塑胶原料 东莞网站建设包头手机网站制作
  • 南昌媒体网站建设口碑推荐网站系统架构设计
  • 网站开发费计入什么科目合适设计工作室一年收入
  • 网站如何做邮箱订阅昆明网站建设哪个公司好
  • 模板网站是什么意思安徽省博物馆网站建设
  • 银川建立网站上海工商查询网
  • 计量检测网站平台建设方案WordPress获取用户的标签
  • 深圳网站设..wordpress网站如何引流
  • 一 网站开发体会上海最新资讯
  • 惠民卡看电影怎么用seo是如何优化
  • 做app的网站莱芜0634技术支持 宿州网站建设
  • 张店网站建二手房网站建设及推广方案
  • 商贸公司网站建设极致发烧网站换了域名还被k站不
  • 中医院网站模板墨刀怎么做网站
  • 中国做视频网站有哪些阿里巴巴建设电子商务网站目的
  • 潮州住房和城乡建设局网站自己做qq代刷网站要钱吗
  • 佛山建站模板厂家江西seo推广方案