精华内容
下载资源
问答
  • 加粗(前后加个*) 斜体(前后加一个*) 斜体加粗(前后加三个*) 删除线(前后加个~) 引用 B站不用来学习那将毫无意义——我自己说(>+ 空格键) 分割线(三个-,or 三个*) 图片 (选择本地图片或者黏贴网址...

    Markdown学习

    标题(#+空格键)

    三级标题

    四级标题

    字体

    加粗(前后加两个*)

    斜体(前后加一个*)

    斜体加粗(前后加三个*)

    删除线(前后加两个~)

    引用

    B站不用来学习那将毫无意义——我自己说的(>+ 空格键)

    分割线(三个-,or 三个*)



    图片

    (选择本地图片或者黏贴网址)

    超链接([]+())

    我的博客的超链接

    列表

    1. 英文.+空格
    2. C
    • (-号+空格)

    表格(启用源代码或者直接右键插入)

    名字 性别 生日
    张三 男 1998.1.1

    代码(```)

    public
    
    展开全文
  • UIView实现星级评定

    2013-12-26 17:30:18
    准备张五颗星的图片中,有一张是灰色的一张是黄色的星星,效果为点到一定区域就会显示半颗星和一个星变黄。在黄色星星上应该采用clipsToBounds来显示图片达到评分效果。每个星星的位置分为三段,第一段评分上一科...

      准备两张五颗星的图片中,有一张是灰色的一张是黄色的星星,效果为点到一定区域就会显示半颗星和一个星变黄。在黄色星星上应该采用clipsToBounds来显示图片达到评分效果。每个星星的位置分为三段,第一段评分上一科星星的分数,第二段评分为半颗星的分数,第三段分为整颗星星的分数。运用逻辑运算来实现该分数。

        UIImageView *imgView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 150, 320, 80)];

        imgView.image =[UIImage imageNamed:@"aaa.png"];

        //停靠模式AspectFill:自适应宽度,放大图片

        imgView.contentMode = UIViewContentModeScaleAspectFill;

        [self.window addSubview:imgView];

        [imgView release];

        

        for (int i = 0; i < 2; i++) {

            UIImageView * imgView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 20, 65, 23)];

            imgView.tag = 100 + i;

            if (i == 0) {

                imgView.image =[UIImage imageNamed:@"StarsBackground.png"];

                UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(myTap:)];

                [imgView addGestureRecognizer:tap];

                imgView.userInteractionEnabled =YES;

                [tap release];

            }else{

                imgView.image = [UIImage imageNamed:@"StarsForeground.png"];

            }

            //停靠模式

            imgView.contentMode = UIViewContentModeLeft;

            imgView.clipsToBounds = YES;

            

            [self.window addSubview:imgView];

            [imgView release];

        }



        

        return YES;

    }


    - (void)myTap:(UITapGestureRecognizer *)obj

    {

        

        CGPoint point = [obj locationInView:obj.view];

        

        UIImageView *foreImg = (UIImageView *)[self.window viewWithTag:101];

        float star = point.x*5/65;

        CGRect rect = foreImg.frame;

        NSLog(@"%f,%f",point.x,star-(int)star);

            if (star-(int)star<0.33 && star-(int)star>=0) {

                rect.size.width = obj.view.frame.size.width/5.0*(int)star;

            }else if(star-(int)star<0.66 && star-(int)star>=0.33){

                rect.size.width = obj.view.frame.size.width/5.0*(int)star+obj.view.frame.size.width/10.0;

            }else if(star-(int)star<1 && star-(int)star>=0.66){

                rect.size.width =obj.view.frame.size.width/5.0*((int)star+1);

           

            }


            foreImg.frame = rect;


    }

    展开全文
  • 购物评价五角

    2021-04-05 03:27:25
    2) 点击最右边会全选五颗星,点击最左边仍然会保留一颗星,可以通过下面种方法 ①也可以通过把10修改为11,即左边也留点儿手势区域,同样需要对手势点击位置进行修改; ②当然也可以通过滑动手势 4、有点击...
  • 由于Android自身星星评分...需要图片,一亮星星,一空星星;(当然图片不一定是星星,其他图片也可以,现在实验就用星星就好了)星星数量,间距可以自定义,星星最小步进为0.1,在用户使用时候与Android

    由于Android自身的星星评分控件样式可以改,但是他的大小不好调整的缺点,只能用small normal这样的style调整,自定义不强,因此击发了我自定义星星控件的欲望。
    星星评分控件的设计,大体规划为:
    需要两张图片,一颗亮星星,一颗空星星;(当然图片不一定是星星,其他图片也可以,现在实验就用星星就好了)星星数量,间距可以自定义,星星的最小步进为0.1,在用户使用的时候与Android自带的方法一样。
    星星控件大体分为两层,第一层空星星,第二层亮星星,第一层固定,第二层动态绘制,这样就可以实现评分。
    在画星星的时候,由于在xml得出回来的对象是drawable,不必再转换为bitmap绘制,故直接绘制drawable,并且提升效率。
    绘制drawable需要两个方法就够了
    1、设置绘制到那里:
    setBounds(int left ,int top , int right ,int bottom);
    2、绘制:
    draw(Canvas canvas);
    设置错误setBounds会导致绘制变形:
    这里写图片描述
    把setbounds设置好后就一切正常:
    这里写图片描述
    一个for循环,五颗空星星就出来了

    for (int i = 0;i < starCount;i++) {
                starEmptyDrawable.setBounds(starSize * i, 0, starSize * (i + 1), starSize);
                starEmptyDrawable.draw(canvas);
            }
    for (int i = 0;i < starCount;i++) {
                starEmptyDrawable.setBounds(starSize * i, 0, starSize * (i + 1), starSize);
                starEmptyDrawable.draw(canvas);
            }
            for (int i = 0;i < starCount -1;i++) {
                starFillDrawable.setBounds(starSize * i, 0, starSize * (i + 1), starSize);
                starFillDrawable.draw(canvas);
            }

    上面几行代码成功强行装成了一个评了4分的这里写图片描述
    现在,显示几颗几颗的星星无压力,但是我们目标是需要步进为0.1的星星。

    But
    经过一系列的实验,发现Drawable对象没有能指定绘制需要的部分,也就是不能绘制半颗星星(反正找不到,找到可以评论告诉我),然后就采用了折中的方法,把Drawable对象变为Bitmap这样就好办了,再利用BitmapShader,想绘制多少就绘制多上(就是实现0.1步进),下面为1/3颗的效果: 这里写图片描述
    转换方法:

    private Bitmap drawableToBitmap(Drawable drawable)
        {
            if (drawable == null)return null;
            Bitmap bitmap = Bitmap.createBitmap(starSize, starSize, Bitmap.Config.ARGB_8888);
            Canvas canvas = new Canvas(bitmap);
            drawable.setBounds(0, 0, starSize, starSize);
            drawable.draw(canvas);
            return bitmap;
        }

    把Bitmap转换为画笔绘制:

    paint = new Paint();
        paint.setAntiAlias(true);
        paint.setShader(new BitmapShader(starFillBitmap, BitmapShader.TileMode.CLAMP, BitmapShader.TileMode.CLAMP));

    在ondraw()方法绘制(三分之一个):

    canvas.drawRect(0,0,starSize/3,starSize,paint);

    原理就是这样,以下为星星控件代码:

    package com.dming.starbar;
    
    import android.content.Context;
    import android.content.res.TypedArray;
    import android.graphics.Bitmap;
    import android.graphics.BitmapShader;
    import android.graphics.Canvas;
    import android.graphics.Paint;
    import android.graphics.drawable.Drawable;
    import android.util.AttributeSet;
    import android.view.MotionEvent;
    import android.view.View;
    
    /**
     * Created by DMing on 2016/7/18.
     *
     */
    public class StarBar extends View{
        private int starDistance = 0; //星星间距
        private int starCount = 5;  //星星个数
        private int starSize;     //星星高度大小,星星一般正方形,宽度等于高度
        private float starMark = 0.0F;   //评分星星
        private Bitmap starFillBitmap; //亮星星
        private Drawable starEmptyDrawable; //暗星星
        private OnStarChangeListener onStarChangeListener;//监听星星变化接口
        private Paint paint;         //绘制星星画笔
        private boolean integerMark = false;
        public StarBar(Context context, AttributeSet attrs) {
            super(context, attrs);
            init(context, attrs);
        }
    
        public StarBar(Context context, AttributeSet attrs, int defStyleAttr) {
            super(context, attrs, defStyleAttr);
            init(context, attrs);
        }
    
        /**
         * 初始化UI组件
         *
         * @param context
         * @param attrs
         */
        private void init(Context context, AttributeSet attrs){
            setClickable(true);
            TypedArray mTypedArray = context.obtainStyledAttributes(attrs, R.styleable.RatingBar);
            this.starDistance = (int) mTypedArray.getDimension(R.styleable.RatingBar_starDistance, 0);
            this.starSize = (int) mTypedArray.getDimension(R.styleable.RatingBar_starSize, 20);
            this.starCount = mTypedArray.getInteger(R.styleable.RatingBar_starCount, 5);
            this.starEmptyDrawable = mTypedArray.getDrawable(R.styleable.RatingBar_starEmpty);
            this.starFillBitmap =  drawableToBitmap(mTypedArray.getDrawable(R.styleable.RatingBar_starFill));
            mTypedArray.recycle();
    
            paint = new Paint();
            paint.setAntiAlias(true);
            paint.setShader(new BitmapShader(starFillBitmap, BitmapShader.TileMode.CLAMP, BitmapShader.TileMode.CLAMP));
        }
    
        /**
         * 设置是否需要整数评分
         * @param integerMark
         */
        public void setIntegerMark(boolean integerMark){
            this.integerMark = integerMark;
        }
    
        /**
         * 设置显示的星星的分数
         *
         * @param mark
         */
        public void setStarMark(float mark){
            if (integerMark) {
                starMark = (int)Math.ceil(mark);
            }else {
                starMark = Math.round(mark * 10) * 1.0f / 10;
            }
            if (this.onStarChangeListener != null) {
                this.onStarChangeListener.onStarChange(starMark);  //调用监听接口
            }
            invalidate();
        }
    
        /**
         * 获取显示星星的数目
         *
         * @return starMark
         */
        public float getStarMark(){
            return starMark;
        }
    
    
        /**
         * 定义星星点击的监听接口
         */
        public interface OnStarChangeListener {
            void onStarChange(float mark);
        }
    
        /**
         * 设置监听
         * @param onStarChangeListener
         */
        public void setOnStarChangeListener(OnStarChangeListener onStarChangeListener){
            this.onStarChangeListener = onStarChangeListener;
        }
    
        @Override
        protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
            super.onMeasure(widthMeasureSpec, heightMeasureSpec);
            setMeasuredDimension(starSize * starCount + starDistance * (starCount - 1), starSize);
        }
    
        @Override
        protected void onDraw(Canvas canvas) {
            super.onDraw(canvas);
            if (starFillBitmap == null || starEmptyDrawable == null) {
                return;
            }
            for (int i = 0;i < starCount;i++) {
                starEmptyDrawable.setBounds((starDistance + starSize) * i, 0, (starDistance + starSize) * i + starSize, starSize);
                starEmptyDrawable.draw(canvas);
            }
            if (starMark > 1) {
                canvas.drawRect(0, 0, starSize, starSize, paint);
                if(starMark-(int)(starMark) == 0) {
                    for (int i = 1; i < starMark; i++) {
                        canvas.translate(starDistance + starSize, 0);
                        canvas.drawRect(0, 0, starSize, starSize, paint);
                    }
                }else {
                    for (int i = 1; i < starMark - 1; i++) {
                        canvas.translate(starDistance + starSize, 0);
                        canvas.drawRect(0, 0, starSize, starSize, paint);
                    }
                    canvas.translate(starDistance + starSize, 0);
                    canvas.drawRect(0, 0, starSize * (Math.round((starMark - (int) (starMark))*10)*1.0f/10), starSize, paint);
                }
            }else {
                canvas.drawRect(0, 0, starSize * starMark, starSize, paint);
            }
        }
    
    
        @Override
        public boolean onTouchEvent(MotionEvent event) {
            int x = (int) event.getX();
            if (x < 0) x = 0;
            if (x > getMeasuredWidth()) x = getMeasuredWidth();
            switch(event.getAction()){
                case MotionEvent.ACTION_DOWN: {
                    setStarMark(x*1.0f / (getMeasuredWidth()*1.0f/starCount));
                    break;
                }
                case MotionEvent.ACTION_MOVE: {
                    setStarMark(x*1.0f / (getMeasuredWidth()*1.0f/starCount));
                    break;
                }
                case MotionEvent.ACTION_UP: {
                    break;
                }
            }
            invalidate();
            return super.onTouchEvent(event);
        }
    
        /**
         * drawable转bitmap
         *
         * @param drawable
         * @return
         */
        private Bitmap drawableToBitmap(Drawable drawable)
        {
            if (drawable == null)return null;
            Bitmap bitmap = Bitmap.createBitmap(starSize, starSize, Bitmap.Config.ARGB_8888);
            Canvas canvas = new Canvas(bitmap);
            drawable.setBounds(0, 0, starSize, starSize);
            drawable.draw(canvas);
            return bitmap;
        }
    }

    attrs的文件:

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <declare-styleable name="RatingBar">
            <!--星星间距-->
            <attr format="dimension" name="starDistance"/>
            <!--星星大小-->
            <attr format="dimension" name="starSize"/>
            <!--星星个数-->
            <attr format="integer" name="starCount"/>
            <!--星星空图-->
            <attr format="reference" name="starEmpty"/>
            <!--星星满图-->
            <attr format="reference" name="starFill"/>
        </declare-styleable>
    
    </resources>

    XML的使用方式:

    <com.dming.starbar.StarBar
            android:id="@+id/starBar"
            android:layout_below="@+id/display"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            ratingbar:starEmpty="@drawable/star_empty"
            ratingbar:starFill="@drawable/star_full"
            ratingbar:starDistance="5dp"
            ratingbar:starCount="8"
            ratingbar:starSize="30dp"/>
    展开全文
  • 要么就来3.8分,哈哈…… 原理上,是采用js+css实现,先整一张图片,如图,两颗星星,一颗亮,一颗暗,我们要做就是用js和css控制图片显示位置,从而达到评分效果。采用两层div,后一层全部用暗拼接,顶层...

           最近在学php,要整一个星级评分的效果的,找了很久,找到一个非常好的js实例。支持小数点一味显示,像百度啥的,都啥半分的。不爽!!要么就来3.8分,哈哈……

           原理上,是采用js+css实现,先整一张图片,如图two_stars2,两颗星星,一颗亮,一颗暗,我们要做的就是用js和css控制图片显示的位置,从而达到评分的效果的。采用两层div,后一层全部用暗星拼接,顶层用亮星,并且控制其长度,从而达到小数点后一位支持的效果。这个要用到jquery,这个是个好玩意的,web开发者应该要学着用的,我也正在学的。

    代码:

    css:

    Code.user_rate {font-size:14px; position:relative; padding:10px 0;}
     .user_rate p {margin:0; padding:0; display:inline; height:20px; overflow:hidden; position:absolute; top:0; left:100px; margin-left:95px;}
     .user_rate p span.s {font-size:20px; line-height:20px; float:left; font-weight:bold; color:#DD5400;}
     .user_rate p span.g {font-size:18px; display:block; float:left; color:#DD5400;}
    /*rating*/
    .big_rate_bak {width:95px; height:20px; text-align:left; position:absolute; top:3px; left:95px; display:inline-block; background:url(images/two_stars2.jpg) left -21px repeat-x;}
     .big_rate_bak b {display:inline-block; width:19px;float:left; height:20px; position:relative; z-index:1000; cursor:pointer; overflow:hidden;}
     .big_rate_up {width:95px; height:20px; position:absolute; top:0; left:0; background:url(images/two_stars2.jpg) left top;}

    js:

    Code//页面加载初始化分数
    $(function(){
     get_rate(100);
    })
    //鼠标单击,在div上移动和脱离焦点的方法。
    function get_rate(rate){
    //获得分值
     rate=rate.toString();
     var s;//十位
     var g;//个位
     $("#g").show();
     if (rate.length>=3){
      s=10; 
      g=0;
      $("#g").hide();
     }else if(rate=="0"){
      s=0;
      g=0;
     }else{
      s=rate.substr(0,1);
      g=rate.substr(1,1);
     }
     //显示分数
     $("#s").text(s);
     $("#g").text("."+ g);
     //width:(parseInt(s)+parseInt(g)/10) * 9.5,height:20,其中width计算方法,前面括号里的可以不变,后边的乘数是你(图片的宽度*显示的星数/100),height,图片的高度的一半
     $(".big_rate_up").animate({width:(parseInt(s)+parseInt(g)/10) * 9.5,height:20},1000);//用jquery实现渐进效果
     $(".big_rate_bak b").each(function(){
     //鼠标移动事件
      $(this).mouseover(function(){
       $(".big_rate_up").width($(this).attr("rate") * 9.5 );
       $("#s").text($(this).attr("rate"));
       $("#g").text("");
      }).click(function(){
       $("#f").text($(this).attr("rate"));
       $("#my_rate").show();
      })
     })
     //div失去焦点事件
     $(".big_rate_bak").mouseout(function(){
      $("#s").text(s);
      $("#g").text("."+ g);
      $(".big_rate_up").width((parseInt(s)+parseInt(g)/10) * 9.5);
     })
    }
    //执行方法
    function up_rate(rate){
     $(".big_rate_up").width("0");
     get_rate(rate);
    }

     

    前台html:

    Code<div class="user_rate">
        <div class="big_rate_bak">
            <b rate="2" οnclick="javascript:up_rate(20);"> </b>
            <b rate="4" οnclick="javascript:up_rate(40);"> </b>
            <b rate="6" οnclick="javascript:up_rate(60);"> </b>
            <b rate="8" οnclick="javascript:up_rate(80);"> </b>
            <b rate="10" οnclick="javascript:up_rate(100);"> </b>
            <div class="big_rate_up"></div>
        </div>
        <p><span id="s" class="s"></span><span id="g" class="g"></span></p>
    </div>

    最终实现效果:

    image,漂亮吧!

    转载于:https://www.cnblogs.com/bigfu2012/archive/2012/05/11/2496763.html

    展开全文
  • 1.每颗星 创建一个div,并且设置div背景图片,鼠标滑过改变div背景图片。  &lt;div class="item" style="margin-top:100px; margin-left:100px;"&gt;    &lt;div class=&...
  • Typora简单实用

    2020-11-19 21:36:11
    文字主体前后两颗星* c、斜粗体。文字主体前后三颗星* d、废弃,文字中间画一条线。文字主体前后两个波浪线~ 引用 公式:>文字主体。中间没有空格 分割线 公式:三颗星* 图片 公式:感叹号+中括号+小括号。在小...
  • python初级知识

    2019-07-01 14:25:00
    一级标题 空格+内容 二级标题 空格+内容 有序内容 1.+Tab 无序内容 -+Tan 代码块 print("hello world") ...24期小伙伴你们好 两颗星+内容+两颗星 --加粗 你好 一颗星+内容+一颗星 --斜体 粗斜 三颗星+内容+三颗星 ...
  • 喜欢动手是一种自信表达方式,创意源于生活,细节决定品质,今天为大家分享如何折纸七段数字显示器方法,步骤详细,难度4颗星,用一张20*20方形纸,边看边学非常简单,大家不妨来试试哦,精彩...
  • android通用自定义ratingbar

    万次阅读 2018-08-08 15:01:30
    不支持半颗星; 仅支持个大小风格; 每个星星各状态图片都必须一样(系统自带也有这个问题) 现在重新改造项目,老规矩先看效果图: 大概思路:外层ratingBar继承于linearlayo...
  •  之所以给三颗星主要考虑到方面,一是它设计及结构升级,二是一些细节处在初次拆解时需要花些心思才能搞定,整体难度不大,新手只要细心点都能轻松搞定。  2、拆解用时:25分钟。  3、拆解...
  • 1.星星评分我们一般写星星评分时,使用图片的切换,在这里我们可以考虑利用字符串截取方法slice,slice可以接受个参数,表示截取从第一个参数所对应索引开始,到第二个参数所对应索引结束,不包括第二个...
  • 推荐指数:5颗星 功能概要 可以设置背景、元素图片、元素文字、元素图形、声音、加载、链接、分享,生成h5,有二维码和链接种形式,可以分享到新浪微博、腾讯微博、qq空间、Facebook、Twitter。 页面图: ...
  • Singleton之我见(一)

    千次阅读 2020-07-30 01:22:54
    本文开始,我准备和大家分享另外一个相对小众国际化框架Singleton,相比于Globalize(GitHub 4.4k颗星)和Moment(GitHub 44.4k颗星),Singleton在GitHub上星星目前仍不足百(https://github.com/vmware/si
  • 由于这一场难度只有三颗星,所以这里只写能写上一行题解的题。 B. Octagons 题目背景十分高端,双曲面的八边形覆盖。然而题目中的图片给出了最大的提示信息:每一个八边形的边有且仅有种颜色。 考虑闭合回路的...
  • PAT A1118 Birds in Forest

    2020-03-22 22:01:51
    题目难度:两颗 题目大意:给出不同的图片,每个图片都有鸟,问最多会有多少棵树,然后最多有多少鸟,认为一张图片中的鸟都是一棵树上的。 题目坑点:就是并查集,但是需要优化一下并查集的查找的函数,需要对...
  • ios自定义控件——星星评分控件

    千次阅读 2016-05-12 22:46:16
    第一种评分实现:以0.5为分隔,可自定义星星个数与大小,可选择是否有半颗星; 第二种评分实现:平滑过渡,可设置前置图片与后置图片,可设置图片的大小与个数 主要原理1:通过判断手势位置来判断现在星星评分...
  • ▲ 艺术家关于个并合中子星的想象图。 (资料图片) ? 我国在南海神狐海域试采可燃冰的钻井塔。(新华社发)  ▼ 美国太空探索技术公司于2017年3月30日利用翻新的“二手”火箭把一商业通信卫星发射上天,这是...
  •  之所以给三颗星主要考虑到方面,一是它设计及结构升级,二是一些细节处在初次拆解时需要花些心思才能搞定,整体难度不大,新手只要细心点都能轻松搞定。  2、拆解用时:25分钟。  3、拆解...
  • 现在,大多数电商系统都是通过五星星来进行商品评分,所以我们要准备图片:实心星星和空心星星(如果你想要半评价也可以加上一个半实星星,实现原理一样) 源码链接下载:...
  • % 在宇宙深处某个角落,有一神秘星球,这星球上生活这一种古老而又奇特生物: % % * 它们热爱运动,每时每刻都不停行进, % * 它们消化系统很不发达,每走一步都要拉肚子. % * 它们免疫系统特别脆弱,...
  • iSee视频监控 v5.2

    热门讨论 2013-02-20 14:34:39
    NTSC/PAL种视频显示制式可选, 25帧/秒实时预览、录像、回放; 视频图像属性调节功能,使图像更清晰。 视频录像图像质量有多种等级可调,以改变存储文件大小,方便不同场合应用。 视频移动报警录像功能,...
  • 每次在不同文件中都要去使用个不同插件。后来找到一个可以支持三种语言格式化插件。 对Html,css,js文件进行格式化。 <pre><code> //html-css-jsprettify插件快捷键 {"keys": ["...

空空如也

空空如也

1 2
收藏数 26
精华内容 10
关键字:

两颗星的图片