1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/kikt-Android-CustomRatingBar

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README-CHN.md 4.7 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
CaiJingLong Отправлено 11.02.2018 13:03 075fc2c

#Android-CustomRatingBar #自定义的星形组件

English doc

中文文档

项目相关

  • 平台:Android
  • 语言:java and xml
  • 目前版本:1.0

前言


因为项目中用到了评分系统,而系统自带的RatingBar功能看似完整,但大小定义太过困难,所以考虑自定义view


截图


layout

gradle依赖

根目录的build.gradle

https://jitpack.io/#CaiJingLong/Android-CustomRatingBar

moudle(app)的build.gralde

dependencies {
        compile 'com.github.CaiJingLong:Android-CustomRatingBar:-SNAPSHOT'
}

###技术选型

自定义View有继承View和ViewGroup的差别
星形可以使用Path绘制,但太过繁琐,且一般星形都是设计师的切图,随时可能发生变化,所以考虑继承ViewGroup来实现
而继承系统控件和ViewGroup各有优劣,ViewGroup相对轻量级一些,而继承LinearLayout也可以实现,这里我选用的是ViewGroup,因为系统控件中有很多系统级属性,这些属性如果被使用,则不能保证考虑周全

###自定义属性

使用


xml文件


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    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"
    android:orientation="vertical"
    android:paddingTop="10dp"
    tools:context="com.dn.ratingbar.MainActivity">

    <com.kikt.view.CustomRatingBar
        android:id="@+id/rb"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_marginTop="10dp"
        app:currentStar="3.5"
        app:fullStar="@mipmap/ic_launcher"
        app:maxStar="5"
        app:minStar="0.5"
        app:padding="3dp"
        app:starHeight="30dp"
        app:starWidth="30dp"/>

    <com.kikt.view.CustomRatingBar
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_marginTop="10dp"
        app:currentStar="3.5"
        app:maxStar="5"
        app:minStar="0.5"
        app:padding="3dp"
        app:starHeight="30dp"
        app:starWidth="30dp"/>

    <com.kikt.view.CustomRatingBar
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_marginTop="10dp"
        app:currentStar="4"
        app:maxStar="6"
        app:minStar="1.5"
        app:padding="3dp"
        app:starHeight="50dp"
        app:starWidth="50dp"/>
</LinearLayout>

java核心代码


mRb.setOnStarChangeListener(this);

@Override
public void onStarChange(CustomRatingBar ratingBar, float star) {
    Log.d("MainActivity", "star:" + star);
}

后记

在写完项目后,我也发现了一些其他类似的项目,继承自LinearLayout的项目,可惜是使用imageView的onclick事件实现,目测无法拖动改变星星的数量
后续会考虑将项目上传jcenter/mavencenter

相关

  • email
  • 欢迎fork
  • 欢迎指正
  • 欢迎提bug

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/kikt-Android-CustomRatingBar.git
git@api.gitlife.ru:oschina-mirror/kikt-Android-CustomRatingBar.git
oschina-mirror
kikt-Android-CustomRatingBar
kikt-Android-CustomRatingBar
master