Слияние кода завершено, страница обновится автоматически
因为项目中用到了评分系统,而系统自带的RatingBar功能看似完整,但大小定义太过困难,所以考虑自定义view
根目录的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 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>
mRb.setOnStarChangeListener(this);
@Override
public void onStarChange(CustomRatingBar ratingBar, float star) {
Log.d("MainActivity", "star:" + star);
}
在写完项目后,我也发现了一些其他类似的项目,继承自LinearLayout的项目,可惜是使用imageView的onclick事件实现,目测无法拖动改变星星的数量
后续会考虑将项目上传jcenter/mavencenter
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )