精华内容
下载资源
问答
  • 仿微信朋友圈红色数字提醒 / Imitation WeChat friends remind red Numbers
  • 你的朋友圈是不是经常被某些人的鸡汤文、装*图充斥着,直接屏蔽不看他的朋友圈也不是良策,现在好了,微信官方上线了朋友圈屏蔽提醒功能,对于朋友圈内发信息过于频繁的用户,,尤其是消息中经常出现美女图片、鸡汤...

      你的朋友圈是不是经常被某些人的鸡汤文、装*图充斥着,直接屏蔽不看他的朋友圈也不是良策,现在好了,微信官方上线了朋友圈屏蔽提醒功能,对于朋友圈内发信息过于频繁的用户,,尤其是消息中经常出现美女图片、鸡汤、“卖”等内容,微信官方将会在消息下方出现“若对他的内容不感兴趣,可轻触此处设置权限”的提示。

    朋友圈屏蔽提醒功能:若对他的内容不感兴趣,可轻触此处设置权限

      除了这条提示外,在朋友圈长按用户头像时,会直接出现“设置朋友圈权限”、“举报”、“取消”等选项(苹果和安卓设备的弹出内容略有差异),进一步方便用户随手屏蔽不想看到的内容和用户。

      朋友圈屏蔽提醒功能,不仅有可能缓解用户备受朋友圈小广告困扰的问题,更是在表明自己的态度:虽然我也开始发广告了,但是不代表什么广告都可以发到朋友圈的。

    转载于:https://www.cnblogs.com/ytkah/p/5652165.html

    展开全文
  • BadgeView-仿微信朋友圈数字提醒功能

    千次阅读 2016-09-08 09:53:41
     数字提醒大家肯定都见识过。QQ、微信等app中如果有消息或者提醒的时候,就会展现给用户一个红点或者带有数字的点。前段时间微信上流行把自己的头像换成带有数字提醒的头像,让那些有强迫症的人真是抓狂。 ...

    转载请注明出处:http://blog.csdn.net/sky_pjf/article/details/52468147

        数字提醒大家肯定都见识过。QQ、微信等app中如果有消息或者提醒的时候,就会展现给用户一个红点或者带有数字的点。前段时间微信上流行把自己的头像换成带有数字提醒的头像,让那些有强迫症的人真是抓狂。


    下面我们就看一下怎么在自己的app中实现这种效果。

        开发者当然可以自己用相对布局来实现这样的效果。一个还好,但是多了呢!就会很繁琐。GitHub上有一个开源的第三方控件,叫做BadgeView。使用它可以很方面的实现想要的效果。

        先来怎么使用,简单的三行代码就可以实现数字提醒:

    [java] view plain copy
     在CODE上查看代码片派生到我的代码片
    1. BadgeView badgeView = new BadgeView(this);  
    2. badgeView.setTargetView(textView);  
    3. badgeView.setBadgeCount(3);  
       看一下badgeview中常用的方法:

    1. setTargetView(View) --> 设置哪个控件显示数字提醒,参数就是一个view对象

    2. setBadgeCount(int) --> 设置提醒的数字

    3. setBadgeGravity(Gravity) --> 设置badgeview的显示位置

    4. setBackgroundColor() --> 设置badgeview的背景色,当然还可以设置背景图片

    5. setBackgroundResource() --> 设置背景图片

    6. setTypeface() --> 设置显示的字体

    7. setShadowLayer() --> 设置字体的阴影


      

    public class BadgeView extends TextView {
    
        private boolean mHideOnNull = true;
    
        public BadgeView(Context context) {
            this(context, null);
        }
    
        public BadgeView(Context context, AttributeSet attrs) {
            this(context, attrs, android.R.attr.textViewStyle);
        }
    
        public BadgeView(Context context, AttributeSet attrs, int defStyle) {
            super(context, attrs, defStyle);
    
            init();
        }
    
        private void init() {
            if (!(getLayoutParams() instanceof LayoutParams)) {
                LayoutParams layoutParams =
                        new LayoutParams(
                                android.view.ViewGroup.LayoutParams.WRAP_CONTENT,
                                android.view.ViewGroup.LayoutParams.WRAP_CONTENT,
                                Gravity.RIGHT | Gravity.TOP);
                setLayoutParams(layoutParams);
            }
    
            // set default font
            setTextColor(Color.WHITE);
            setTypeface(Typeface.DEFAULT_BOLD);
            setTextSize(TypedValue.COMPLEX_UNIT_SP, 11);
            setPadding(dip2Px(5), dip2Px(1), dip2Px(5), dip2Px(1));
    
            // set default background
            setBackground(9, Color.parseColor("#d3321b"));
    
            setGravity(Gravity.CENTER);
    
            // default values
            setHideOnNull(true);
            setBadgeCount(0);
        }
    
        public void setBackground(int dipRadius, int badgeColor) {
            int radius = dip2Px(dipRadius);
            float[] radiusArray = new float[] { radius, radius, radius, radius, radius, radius, radius, radius };
    
            RoundRectShape roundRect = new RoundRectShape(radiusArray, null, null);
            ShapeDrawable bgDrawable = new ShapeDrawable(roundRect);
            bgDrawable.getPaint().setColor(badgeColor);
            setBackground(bgDrawable);
        }
    
        /**
         * @return Returns true if view is hidden on badge value 0 or null;
         */
        public boolean isHideOnNull() {
            return mHideOnNull;
        }
    
        /**
         * @param hideOnNull the hideOnNull to set
         */
        public void setHideOnNull(boolean hideOnNull) {
            mHideOnNull = hideOnNull;
            setText(getText());
        }
    
        /*
         * (non-Javadoc)
         * 
         * @see android.widget.TextView#setText(java.lang.CharSequence, android.widget.TextView.BufferType)
         */
        @Override
        public void setText(CharSequence text, BufferType type) {
            if (isHideOnNull() && (text == null || text.toString().equalsIgnoreCase("0"))) {
                setVisibility(View.GONE);
            } else {
                setVisibility(View.VISIBLE);
            }
            super.setText(text, type);
        }
    
        public void setBadgeCount(int count) {
            setText(String.valueOf(count));
        }
    
        public Integer getBadgeCount() {
            if (getText() == null) {
                return null;
            }
    
            String text = getText().toString();
            try {
                return Integer.parseInt(text);
            } catch (NumberFormatException e) {
                return null;
            }
        }
    
        public void setBadgeGravity(int gravity) {
            FrameLayout.LayoutParams params = (LayoutParams) getLayoutParams();
            params.gravity = gravity;
            setLayoutParams(params);
        }
    
        public int getBadgeGravity() {
            FrameLayout.LayoutParams params = (LayoutParams) getLayoutParams();
            return params.gravity;
        }
    
        public void setBadgeMargin(int dipMargin) {
            setBadgeMargin(dipMargin, dipMargin, dipMargin, dipMargin);
        }
    
        public void setBadgeMargin(int leftDipMargin, int topDipMargin, int rightDipMargin, int bottomDipMargin) {
            FrameLayout.LayoutParams params = (LayoutParams) getLayoutParams();
            params.leftMargin = dip2Px(leftDipMargin);
            params.topMargin = dip2Px(topDipMargin);
            params.rightMargin = dip2Px(rightDipMargin);
            params.bottomMargin = dip2Px(bottomDipMargin);
            setLayoutParams(params);
        }
    
        public int[] getBadgeMargin() {
            FrameLayout.LayoutParams params = (LayoutParams) getLayoutParams();
            return new int[] { params.leftMargin, params.topMargin, params.rightMargin, params.bottomMargin };
        }
    
        public void incrementBadgeCount(int increment) {
            Integer count = getBadgeCount();
            if (count == null) {
                setBadgeCount(increment);
            } else {
                setBadgeCount(increment + count);
            }
        }
    
        public void decrementBadgeCount(int decrement) {
            incrementBadgeCount(-decrement);
        }
    
        /*
         * Attach the BadgeView to the TabWidget
         * 
         * @param target the TabWidget to attach the BadgeView
         * 
         * @param tabIndex index of the tab
         */
        public void setTargetView(TabWidget target, int tabIndex) {
            View tabView = target.getChildTabViewAt(tabIndex);
            setTargetView(tabView);
        }
    
        /*
         * Attach the BadgeView to the target view
         * 
         * @param target the view to attach the BadgeView
         */
        public void setTargetView(View target) {
            if (getParent() != null) {
                ((ViewGroup) getParent()).removeView(this);
            }
    
            if (target == null) {
                return;
            }
    
            if (target.getParent() instanceof FrameLayout) {
                ((FrameLayout) target.getParent()).addView(this);
    
            } else if (target.getParent() instanceof ViewGroup) {
                // use a new Framelayout container for adding badge
                ViewGroup parentContainer = (ViewGroup) target.getParent();
                int groupIndex = parentContainer.indexOfChild(target);
                parentContainer.removeView(target);
    
                FrameLayout badgeContainer = new FrameLayout(getContext());
                ViewGroup.LayoutParams parentLayoutParams = target.getLayoutParams();
    
                badgeContainer.setLayoutParams(parentLayoutParams);
                target.setLayoutParams(new ViewGroup.LayoutParams(
                        ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
    
                parentContainer.addView(badgeContainer, groupIndex, parentLayoutParams);
                badgeContainer.addView(target);
    
                badgeContainer.addView(this);
            } else if (target.getParent() == null) {
                Log.e(getClass().getSimpleName(), "ParentView is needed");
            }
    
        }
    
        /*
         * converts dip to px
         */
        private int dip2Px(float dip) {
            return (int) (dip * getContext().getResources().getDisplayMetrics().density + 0.5f);
        }
    }


    源码下载:

    Github

    展开全文
  • 新京报讯(记者 刘洋)用昵称卖货、网聊达成消费、售后服务难保障……3·15消费者权益日即将到来,面对日益兴起的朋友圈“微商”以及随之而来的消费纠纷,今天上午,北京朝阳法院通报三起“朋友圈购物”的典型案例,...
        

    新京报讯(记者 刘洋)用昵称卖货、网聊达成消费、售后服务难保障……3·15消费者权益日即将到来,面对日益兴起的朋友圈“微商”以及随之而来的消费纠纷,今天上午,北京朝阳法院通报三起“朋友圈购物”的典型案例,并支招消费者在朋友圈购物时应注意的事项。

    案例1:

    用昵称卖货 维权主体难确定

    蒋先生通过朋友介绍认识微信名为“亲爱的辣白菜”的人为好友,该卖家经常通过微信朋友圈发布化妆品、女士皮包等海外代购信息。蒋先生即于2017年4日9日向其购买了某奢侈品品牌皮包,支付货款2万元,卖家承诺4月13日给蒋先生发货。但卖家却在4月12日通知蒋先生其货物被机场海关暂扣,并以此为理由,一年多时间过去了,“亲爱的辣白菜”仍未向蒋先生交付货物,蒋先生遂诉至法院。

    据朝阳法院法官王菁璐介绍,立案时,蒋先生仅知晓卖家名为韩某,无法提供韩某的身份证号,亦不知晓韩某是否为“亲爱的辣白菜”的真实姓名。经审理查明,蒋先生提供的韩某的电话号码不是韩某所有,“亲爱的辣白菜”也并非微信实名认证用户。根据民事诉讼法第一百一十九条规定,起诉必须要有明确的被告,在蒋先生无法提供韩某身份证号的情况下,该案的被告并不明确,在法院释明后,蒋先生无奈撤回起诉。

    对此,王菁璐表示,买卖双方真实身份是诚信交易进行的充分要件,尤其是微商,确认卖家的真实身份至关重要。买家可以在首次购物时要求卖家提供身份证照片及微信支付管理页面中实名认证中心显示的信息截屏,经比对验证身份信息。实名认证中心显示的信息中已将姓名及身份证号码的一部分隐去,但只要确定卖家微信是经过实名认证的,即使买家不掌握卖家的身份证完整信息也可以在诉讼中申请法院调取微信账号持有人的真实身份信息。

    案例2:

    购物聊天记录删除 证据难保存

    庄先生以其妻子在澳洲留学为由,进行宣传,称可以进行代购。李先生在其处先后购买苹果手机2台,苹果笔记本电脑1台,男士服装多件等物品,共计货款3万元。之后庄先生一直未予发货,无奈李先生诉至法院。

    经法院审理查明,李先生与庄先生的买卖合同通过微信聊天达成,李先生因之前删除过与庄先生的聊天故无法提供聊天记录的原始载体,只能提供曾经的聊天页面截图。根据法律规定,当事人对自己提出的诉讼请求所依据的事实或者反驳对方诉讼请求所依据的事实,应当提供证据加以证明,当事人未能提供证据或者证据不足以证明其事实主张的,由负有举证证明责任的当事人承担不利的后果。在庄先生未到庭应诉确认的情况下,法院对李先生提供的微信聊天记录真实性无法确认。李先生需承担因其举证不能所带来的不利后果,其诉讼请求难以获得法院支持。

    王菁璐表示,首先消费者应当妥善保存与卖家的聊天记录,避免误删。另外,微信记录通常因为手机程序清理缓存而不复存在。在此法官提示买家在与微信卖家沟通时尽量通过文字约定交易细节,微信语音并不利于作为证据使用,也难以导出备案,而通过微信发送的图片则会因为微信程序清理缓存而丢失。如遇到卖家发送语音信息时,消费者可以要求卖家发送文字信息,或者自己用文字重复对方语音的内容来获得对方确认,从而保存证据。

    案例3:

    微信达成交易 售后服务难保障

    席女士通过微信向高先生支付2万元购买戒指一个,收货后发现戒面形状有问题,是水平面不是圆弧形,双方协商不成,席女士诉至法院要求适用《消费者权益保护法》“七天无理由退换货”的规定,退货退款。高先生答辩称,双方仅通过微信交易,涉案的商品系其自案外人处购买,再通过其微信朋友圈对相应的商品重新标价进行出售,其并不是《消费者权益保护法》中规定的经营者,并不适用该法。

    该案中,法院综合双方当事人提交的证据认定高先生多次通过微信朋友圈销售翡翠制品、赚取差价作为利润、出售商品时不披露其商品来源等事实,认定高先生系《消费者权益保护法》规定的经营者,应当承担“七天无理由退换货”的义务。“席女士的权益虽然得到了维护,但是个案证据成为了决定胜败的关键,其他消费者是否能像席女士一样幸运则难以预料。”王菁璐说,目前大型网络购物平台均按照法律规定支持7天无理由退换货,并通过顾客评价、支付平台暂缓支付款项、平台客服介入等手段倒逼卖家提高售后服务。朋友圈购物则没有健全的售后服务体系。

    对此,王菁璐认为,消费者不妨在付款前多说几句,与卖家自行约定售后条款,例如7天无理由退换货、假货赔偿条款、逾期发货违约金等等。只要上述约定不违反法律规定,并在聊天记录中能够清晰展现,仍有可能被法院作为买卖双方的约定予以确认,从而有力地保障消费者的权益。

    新京报记者 刘洋 编辑 程磊

    校对 郭利琴

    展开全文
  • 之前有朋友问我点赞功能咋实现?其实和评论类似,都是点赞成功后请求点赞接口,然后拼接数据,刷新本地列表.如果点赞成功,把当前用户加入到点赞列表数据中,如果取消点赞就把当前用户从点赞列表移除,然后刷新...

    之前有朋友问我消息提醒咋实现,我一直没有整理出来,今天就放出来.微信朋友圈的消息提醒就是收到朋友的评论后背景底部显示消息条数和评论用户,顶部是一张相册背景和当前用户昵称头像。

    1.消息提醒的布局如下:

    <?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">
    
        <ImageView
            android:id="@+id/iv_bg"
            android:layout_width="0dp"
            android:layout_height="@dimen/public_200dp"
            android:background="@mipmap/ic_pic"
            android:scaleType="centerCrop"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toTopOf="parent" />
    
        <androidx.cardview.widget.CardView
            android:id="@+id/cl_user"
            android:layout_width="@dimen/public_60dp"
            android:layout_height="@dimen/public_60dp"
            android:layout_marginRight="@dimen/public_20dp"
            app:cardCornerRadius="@dimen/public_5dp"
            app:cardElevation="0dp"
            app:layout_constraintBottom_toBottomOf="@+id/iv_bg"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/iv_bg">
    
            <ImageView
                android:id="@+id/iv_user"
                android:layout_width="@dimen/public_60dp"
                android:layout_height="@dimen/public_60dp"
                android:background="@drawable/nim_avatar_default"
                android:scaleType="fitXY"
                tools:ignore="MissingConstraints" />
        </androidx.cardview.widget.CardView>
    
    
        <TextView
            android:id="@+id/tv_name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginRight="@dimen/public_10dp"
            android:ellipsize="end"
            android:maxLines="1"
            android:paddingTop="@dimen/public_5dp"
            android:shadowColor="#999666"
            android:shadowDx="3"
            android:shadowDy="3"
            android:shadowRadius="1"
            android:textColor="#ffffff"
            android:textSize="@dimen/text_size_14sp"
            app:layout_constraintRight_toLeftOf="@+id/cl_user"
            app:layout_constraintTop_toTopOf="@+id/cl_user"
            android:text="今天很开心" />
    
        <androidx.constraintlayout.widget.ConstraintLayout
            android:id="@+id/cl_message"
            android:layout_width="@dimen/public_140dp"
            android:layout_height="@dimen/public_40dp"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="@dimen/public_10dp"
            android:layout_marginBottom="10dp"
            android:background="@drawable/message_bg"
            android:paddingLeft="@dimen/public_10dp"
            android:paddingRight="@dimen/public_10dp"
            android:visibility="gone"
            app:layout_constraintLeft_toRightOf="parent"
            app:layout_constraintRight_toLeftOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/cl_user">
    
            <ImageView
                android:id="@+id/message_avatar"
                android:layout_width="30dp"
                android:layout_height="30dp"
                android:src="@drawable/nim_avatar_default"
                app:layout_constraintBottom_toTopOf="parent"
                app:layout_constraintTop_toBottomOf="parent" />
    
            <TextView
                android:id="@+id/message_detail"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="@dimen/public_6dp"
                android:text=""
                android:textColor="@color/white"
                android:textSize="@dimen/text_size_14sp"
                app:layout_constraintBottom_toTopOf="parent"
                app:layout_constraintLeft_toRightOf="@+id/message_avatar"
                app:layout_constraintTop_toBottomOf="parent" />
        </androidx.constraintlayout.widget.ConstraintLayout>
    
        <androidx.constraintlayout.widget.ConstraintLayout
            android:id="@+id/cl_photo"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:paddingLeft="@dimen/public_20dp"
            android:paddingTop="@dimen/public_10dp"
            android:paddingBottom="@dimen/public_10dp"
            android:visibility="gone"
            app:layout_constraintTop_toBottomOf="@+id/cl_message">
    
            <TextView
                android:id="@+id/tv_time"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:gravity="center_vertical"
                android:text="今天"
                android:textColor="@color/black"
                android:textSize="24sp"
                android:textStyle="bold" />
    
            <ImageView
                android:id="@+id/iv_photo"
                android:layout_width="@dimen/public_75dp"
                android:layout_height="@dimen/public_75dp"
                android:layout_marginLeft="@dimen/public_12dp"
                android:src="@mipmap/icon_photo"
                app:layout_constraintLeft_toRightOf="@+id/tv_time"
                app:layout_constraintTop_toTopOf="@+id/tv_time" />
        </androidx.constraintlayout.widget.ConstraintLayout>
    
    </androidx.constraintlayout.widget.ConstraintLayout>

    2.布局截图:

    3.Activity代码:

    /**
     * 设置adapter
     */
    private void initAdapter() {
        View headCircle = LayoutInflater.from(MainActivity.this).inflate(R.layout.item_circle_head, null);
        initHead(headCircle);
        circleAdapter = new CircleAdapter(dataBeans, imageWatcher, llComment, etComment, this);
        layoutManger = new ScrollSpeedLinearLayoutManger(this);
        recyclerView.setLayoutManager(layoutManger);
        layoutManger.setSpeedSlow();
        circleAdapter.addHeaderView(headCircle);
        recyclerView.addItemDecoration(new SpaceDecoration(this));
        recyclerView.setAdapter(circleAdapter);
    }
    /**
     * 初始化消息提醒布局
     * @param headCircle
     */
    private void initHead(View headCircle) {
        ivBg = headCircle.findViewById(R.id.iv_bg);
        ivUser = headCircle.findViewById(R.id.iv_user);
        tvName = headCircle.findViewById(R.id.tv_name);
        clMessage = headCircle.findViewById(R.id.cl_message);
        ivMessage = headCircle.findViewById(R.id.message_avatar);
        tvMessage = headCircle.findViewById(R.id.message_detail);
        ivBg.setOnClickListener(this);
        ivUser.setOnClickListener(this);
    //这里是调用接口数据,本例子写的假数据,小伙伴们可以根据自己需求来写,在拍照或者点击用户头像去个人中心在返回朋友圈列表时要   刷新消息提醒数据,用rxbus或者onActivityResult都可以。
        clMessage.setVisibility(View.VISIBLE);
        tvMessage.setText("10条新信息");
    }
    

    4.实现的完整效果图如下:

    5.以上就是实现仿微信朋友圈的消息提醒功能,主要是布局和收到消息后刷新列表,后面会实现图片选择和拍照发送朋友圈功能。欢迎小伙伴们前来谈论,给出更好的方案,我加以改正.

    项目源码地址:https://gitee.com/jackning_admin/ExpandTextView

    展开全文
  • [size=18px][b]#净网2019# [url=https://weibo.com/ttarticle/p/show?id=2309404337884529337990]【紧急提醒:这些千万别"晒"到朋友圈!】[/url][/b] 不少父母喜欢在网上分享孩子照片,也有不少朋友喜欢在朋友圈...
  • 测试面试题-如何测试朋友圈

    千次阅读 2019-07-23 16:31:14
    相信玩过微信朋友圈儿的人大家应该都知道它: a.发、删朋友圈,看朋友圈, b.发送的朋友圈的类型(图、文、图文混合、图文小视频混合等) ...还有其他:比如朋友圈更新提醒、只允许朋友看我半年内的朋友圈。 1.我...
  • 前段时间,在公众号文章下面留言的时候,会显示“留言对朋友可见,留言被公众号筛选后,将对所有人可见”,并且,“朋友留言”会排在“精选留言”前面。就此功能的更新,微信官方表示,是为了进一步增强了公众号留言...
  • 微信朋友圈产品分析

    2014-04-05 23:47:31
    朋友圈”一切围绕着图片展开。拍摄图片,上传图片,分享图片,探讨图片,并试图将以图片塑造生活的理念传递给每一位朋友。 常规功能与相册功能的衔接: 上传图片之后的下一步动作是什么?添加文字,上传更多图片,...
  • 凌晨 12 点多,电脑端微信突然弹出一个对话框,提醒微信有新版本,我看了一下,竟然支持朋友圈和视频号了,爽歪歪。 于是,我赶紧下载了一波,体验了一下,感觉还不错。 朋友圈的入口非常容易找,在左侧边栏上面 ...
  • 终于来了,继电脑刷微信朋友圈之后,微信终于支持电脑发朋友圈啦,此次更新会对大家有何影响呢,赶紧来看看! 昨天,微信团队发布微信 3.1.0 for Mac 内测版本 更新功能:支持发表朋友圈和浏览朋友圈相册 此次更新...
  • 了解到,这次视频号全面升级开放卡片形式分享朋友圈功能之后,视频号转发朋友圈,不再以之前的图文链接形式展现,而是直接以大卡片形式展现曝光,可以跟普通朋友圈一样快速编辑,支持添加位置、提醒谁看和谁可以看,...
  • 今天微信最新版本,也就是IOS版本微信更新后,提供了朋友圈可删除评论的功能. 有时候开开心心发个朋友圈,总有那么一两条回复,让人心里看着别别扭扭。此前,用户是无法删除好友评论的,面对不喜欢的评论,只能选择...
  • 总是听到很多朋友在问微信朋友圈营销技巧都有哪些,其实技巧还是比较多的;在我们日常生活当中微信已经成为了我们不可分割的一部分,不管是你工作当中还是与朋友交流当中都会用到它,今天我们就来为大家介绍一下吧。 ...
  • 朋友圈点赞点用例的设计点 1.界面是否美观 2.是否符合设计 3.点赞是否实时显示结果 4.点赞后展示的是不是自己的昵称 5.点赞后是否能取消 6.取消后重新点赞 7.点赞后其他共同好友点赞,是否有消息提醒 8.点赞...
  • 最近公司在开发周报系统,周报中需要像朋友圈一样具有@ 人的功能,在周保中可以输入@XXX,发布后需要给XXX发送消息提醒(xxx在某周周报中@ 了您,请点击链接查看) 2. 设计思路 前端在监控到需要输入“@” 符号并...
  • 经典的生日感言文案朋友圈句子 每个人的生日都是特别的那一天,那一天的到来似乎在提醒你有些东西要开始改变啦!今天小编就给大家分享一下生日感言,希望大家来阅读哦! 生日感言1 1、请接受我的礼物,它带给你温存...
  • 前期在敲代码之前,需要着重分析一下整个微信朋友圈界面的实现方案,这可能是本篇文章的核心所在了(PS:这里特别提醒一下广大开发者,在实现某一个功能前,请务必确定一个实现方案,可能实现的方案千千万,这就需要...
  • 只要你的朋友圈有一位IDC销售 你就能不出门看尽万里风景 他们大概是中国地理学得最好的一群人 因为长期在外奔波 他们能告诉你哪里网络好 哪个城市好玩 哪个地方好吃 他们也是一群风趣幽默的人 隐藏段子手 一个个表情...
  • 前两天,只要打开微信,你很可能发现自己的朋友圈被刷屏了。一夜之间好像大家都在玩儿性格测试,在一张黑色的图片中,五颜六色的文字显示这是位“文艺青年”或者已经“完美主义晚期”。但当很多人想再测测自己的...
  • 微信重大更新,mac版可刷朋友圈!可以看,可以评论!微信Mac电脑版是官方推出的针对Mac用户设计的客户端产品,Mac上有六亿多...还是提醒一下,M1 芯片的 Mac 上安装内测版微信 3.0,在朋友圈、聊天窗口打开外链时可能
  • 最近公司面试时,时不时...题目:请详述如何测试朋友圈 TIPS: 在回答问题之前,想提醒大家一句,面试官不是资深IT人士,因此回答问题要简洁易懂。即便他是你未来的上司,或是正好是资深软件测试工程师,也要做到...
  • “有事微信语音聊天,没事刷刷朋友圈!” 微信就是那么火爆。常刷微信朋友圈,渐渐刷出了几大江湖门派,你是属于什么类型呢?赶紧来瞧瞧吧!温馨提醒:纯属娱乐,欢迎主动自爆。  窥视型甘当看客  雯雯注册...
  • 通常说来,我们考虑一个测试对象的时候至少从以下7方面来考虑: 功能性 ①点赞和取消点赞功能 ... ①点点点赞状态能否正常更新,是否提醒你  ②赞之后共同好友的点赞和评论是否会提醒你   可靠性 ①弱...
  • iOS精选源码 viewController 之间的转场动画 swift版 ...仿微信朋友圈--CircleOfFriendsDisplay 图片展示器: 可扩展程度高,兼容Swift混编使用 DZMPhotoBrowser 常用阅读软件打开书籍转场动画, 已封装支持项目使...

空空如也

空空如也

1 2 3 4 5 ... 13
收藏数 260
精华内容 104
关键字:

朋友圈提醒