Skip to content

Commit

Permalink
add round view
Browse files Browse the repository at this point in the history
  • Loading branch information
SiberiaDante committed Sep 4, 2017
1 parent f83e101 commit dde0e5d
Show file tree
Hide file tree
Showing 18 changed files with 739 additions and 69 deletions.
8 changes: 8 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,10 @@ dependencies {
* [JustifyTextView] 适用文字对齐,错乱修正等;原文地址:https://github.com/ufo22940268/android-justifiedtextview
* [PhotoViewPager] :可左右滑动照片查看器(案例:[使用:sample/activity/PhotoViewActivity])
* [RoundImage]:圆形ImageView控件,直接在布局中使用([使用:sample/res/layout/fragment_view.xml])
* [RoundFrameLayout]: 可在布局中直接设置shape相关的属性(背景颜色、角度等)
* [RoundLinearLayout]: 可在布局中直接设置shape相关的属性(背景颜色、角度等)
* [RoundRelativeLayout]: 可在布局中直接设置shape相关的属性(背景颜色、角度等)
* [RoundTextView]: 可在布局中直接设置shape相关的属性(背景颜色、角度等)
* [SuperTextView]:超酷炫的TextView,可以设置出各种特效文字(原文地址:http://www.jianshu.com/p/1b91e11e441d)
* [TabRadioButton] :可设置图片尺寸的RadioButton,适用于图文结合的RadioButton

Expand Down Expand Up @@ -212,6 +216,10 @@ dependencies {
[JustifyTextView]:https://github.com/SibreiaDante/SiberiaDanteLib/blob/master/siberiadante/src/main/java/com/siberiadante/lib/widget/JustifyTextView.java
[PhotoViewPager]:https://github.com/SibreiaDante/SiberiaDanteLib/blob/master/siberiadante/src/main/java/com/siberiadante/lib/widget/PhotoViewPager.java
[RoundImage]:https://github.com/SibreiaDante/SiberiaDanteLib/blob/master/siberiadante/src/main/java/com/siberiadante/lib/widget/RoundImage.java
[RoundFrameLayout]:https://github.com/SibreiaDante/SiberiaDanteLib/blob/master/siberiadante/src/main/java/com/siberiadante/lib/widget/RoundFrameLayout.java
[RoundLinearLayout]:https://github.com/SibreiaDante/SiberiaDanteLib/blob/master/siberiadante/src/main/java/com/siberiadante/lib/widget/RoundLinearLayout.java
[RoundRelativeLayout]:https://github.com/SibreiaDante/SiberiaDanteLib/blob/master/siberiadante/src/main/java/com/siberiadante/lib/widget/RoundRelativeLayout.java
[RoundTextView]:https://github.com/SibreiaDante/SiberiaDanteLib/blob/master/siberiadante/src/main/java/com/siberiadante/lib/widget/RoundTextView.java
[SuperTextView]:https://github.com/SibreiaDante/SiberiaDanteLib/blob/master/siberiadante/src/main/java/com/siberiadante/lib/widget/SuperTextView.java
[TabRadioButton]:https://github.com/SibreiaDante/SiberiaDanteLib/blob/master/siberiadante/src/main/java/com/siberiadante/lib/widget/TabRadioButton.java

Expand Down
7 changes: 3 additions & 4 deletions gradle.properties
Original file line number Diff line number Diff line change
@@ -1,17 +1,16 @@
# Project-wide Gradle settings.

# IDE (e.g. Android Studio) users:
# Gradle settings configured through the IDE *will override*
# any settings specified in this file.

# For more details on how to configure your build environment visit
# http://www.gradle.org/docs/current/userguide/build_environment.html

# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
org.gradle.jvmargs=-Xmx1536m

# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true

#NDK版本差异检测过滤掉,要不然项目无法编译
android.useDeprecatedNdk=true
1 change: 1 addition & 0 deletions sample/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@
android:value="@integer/google_play_services_version" />

<activity android:name=".ui.activity.view.ImageSpanActivity" />
<activity android:name=".ui.activity.view.ShapeViewActivity"></activity>
</application>

</manifest>
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.sample.ui.activity.view;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

import com.sample.R;
import com.sample.ui.activity.BaseActivity;

public class ShapeViewActivity extends BaseActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_shape_view);
}
}
20 changes: 12 additions & 8 deletions sample/src/main/java/com/sample/ui/fragment/ViewFragment.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import com.sample.ui.activity.view.DialogActivity;
import com.sample.ui.activity.view.ImageSpanActivity;
import com.sample.ui.activity.view.QQStepViewActivity;
import com.sample.util.JumpUtils;
import com.siberiadante.lib.util.ScreenUtil;
import com.siberiadante.lib.view.TitleBar;

Expand All @@ -37,8 +38,9 @@ public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,
@Override
protected void initView() {
layout.findViewById(R.id.btn_start_general_dialog_activity).setOnClickListener(this);
layout.findViewById(R.id.btn_start_qq_exercise__activity).setOnClickListener(this);
layout.findViewById(R.id.btn_start_image_span__activity).setOnClickListener(this);
layout.findViewById(R.id.btn_start_qq_exercise_activity).setOnClickListener(this);
layout.findViewById(R.id.btn_start_image_span_activity).setOnClickListener(this);
layout.findViewById(R.id.btn_start_shape_view_activity).setOnClickListener(this);
TitleBar titleBar = ((TitleBar) layout.findViewById(R.id.titleBar));
initTitleBar(titleBar);
}
Expand All @@ -63,15 +65,17 @@ public void onClick(View view) {
Intent intent = null;
switch (view.getId()) {
case R.id.btn_start_general_dialog_activity:
intent = new Intent(getActivity(), DialogActivity.class);
JumpUtils.goToDialogActivity(getActivity());
break;
case R.id.btn_start_qq_exercise__activity:
intent = new Intent(getActivity(), QQStepViewActivity.class);
case R.id.btn_start_qq_exercise_activity:
JumpUtils.goToQQStepViewActivity(getActivity());
break;
case R.id.btn_start_image_span__activity:
intent = new Intent(getActivity(), ImageSpanActivity.class);
case R.id.btn_start_image_span_activity:
JumpUtils.goToImageSpanActivity(getActivity());
break;
case R.id.btn_start_shape_view_activity:
JumpUtils.goToShapeViewActivity(getActivity());
break;
}
startActivity(intent);
}
}
42 changes: 42 additions & 0 deletions sample/src/main/java/com/sample/util/JumpUtils.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
package com.sample.util;

import android.app.Activity;
import android.content.Intent;

import com.sample.ui.activity.view.DialogActivity;
import com.sample.ui.activity.view.ImageSpanActivity;
import com.sample.ui.activity.view.QQStepViewActivity;
import com.sample.ui.activity.view.ShapeViewActivity;

/**
* @Created SiberiaDante
* @Describe:
* @Time: 2017/9/4
* @Email: 994537867@qq.com
* @GitHub: https://github.com/SiberiaDante
*/

public class JumpUtils {

private static Intent intent;

public static void goToDialogActivity(Activity activity) {
intent = new Intent(activity, DialogActivity.class);
activity.startActivity(intent);
}

public static void goToQQStepViewActivity(Activity activity) {
intent = new Intent(activity, QQStepViewActivity.class);
activity.startActivity(intent);
}

public static void goToImageSpanActivity(Activity activity) {
intent = new Intent(activity, ImageSpanActivity.class);
activity.startActivity(intent);
}

public static void goToShapeViewActivity(Activity activity) {
intent = new Intent(activity, ShapeViewActivity.class);
activity.startActivity(intent);
}
}
2 changes: 2 additions & 0 deletions sample/src/main/res/layout/activity_main.xml
Original file line number Diff line number Diff line change
Expand Up @@ -35,12 +35,14 @@
android:text="组件"
dante:drawableSize="25dp"
dante:drawableTop="@drawable/checked_home_two" />

<com.siberiadante.lib.widget.TabRadioButton
android:id="@+id/rb_home_three"
style="@style/HomeRadioButton"
android:text="工具"
dante:drawableSize="25dp"
dante:drawableTop="@drawable/checked_home_three" />

<com.siberiadante.lib.widget.TabRadioButton
android:id="@+id/rb_home_four"
style="@style/HomeRadioButton"
Expand Down
41 changes: 41 additions & 0 deletions sample/src/main/res/layout/activity_shape_view.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:dante="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_shape_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical"
tools:context="com.sample.ui.activity.view.ShapeViewActivity">

<com.siberiadante.lib.widget.RoundTextView
android:layout_width="200dp"
android:layout_height="50dp"
android:gravity="center"
android:text="RoundTextView"
dante:r_backgroundColor="@color/action_sheet_blue"
dante:r_cornerRadius="10dp" />

<com.siberiadante.lib.widget.RoundLinearLayout
android:layout_width="200dp"
android:layout_height="50dp"
android:layout_marginTop="20dp"
dante:r_backgroundColor="@color/action_sheet_blue"
dante:r_cornerRadius_TL="20dp" />

<com.siberiadante.lib.widget.RoundRelativeLayout
android:layout_width="200dp"
android:layout_height="50dp"
android:layout_marginTop="20dp"
dante:r_backgroundColor="@color/action_sheet_blue"
dante:r_cornerRadius_TR="20dp" />

<com.siberiadante.lib.widget.RoundFrameLayout
android:layout_width="200dp"
android:layout_height="50dp"
android:layout_marginTop="20dp"
dante:r_backgroundColor="@color/action_sheet_blue"
dante:r_cornerRadius_BL="20dp" />
</LinearLayout>

8 changes: 6 additions & 2 deletions sample/src/main/res/layout/fragment_view.xml
Original file line number Diff line number Diff line change
Expand Up @@ -34,14 +34,18 @@
android:text="各种Dialog" />

<Button
android:id="@+id/btn_start_qq_exercise__activity"
android:id="@+id/btn_start_qq_exercise_activity"
style="@style/MainButton"
android:text="QQ运动计步器View" />

<Button
android:id="@+id/btn_start_image_span__activity"
android:id="@+id/btn_start_image_span_activity"
style="@style/MainButton"
android:text="测试文字表情混排对齐" />
<Button
android:id="@+id/btn_start_shape_view_activity"
style="@style/MainButton"
android:text="Shape封装的View测试" />
</LinearLayout>
</ScrollView>
</LinearLayout>
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.siberiadante.lib.util;

import android.app.Activity;
import android.content.ComponentName;
import android.content.Intent;
import android.net.Uri;
Expand All @@ -13,6 +14,8 @@

import java.io.File;

import static android.icu.lang.UCharacter.GraphemeClusterBreak.T;

/**
* Created by SiberiaDante on 2017/5/15.
*/
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
package com.siberiadante.lib.widget;

import android.content.Context;
import android.util.AttributeSet;
import android.widget.FrameLayout;
import android.widget.RelativeLayout;

/**
* @Created SiberiaDante
* @Describe: 简化FrameLayout shape 画背景
* @Time: 2017/9/4
* @Email: 994537867@qq.com
* @GitHub: https://github.com/SiberiaDante
*/

public class RoundFrameLayout extends FrameLayout {

private RoundViewAttr roundViewAttr;

public RoundFrameLayout(Context context) {
this(context, null);
}

public RoundFrameLayout(Context context, AttributeSet attrs) {
super(context, attrs);
roundViewAttr = new RoundViewAttr(this, context, attrs);

}

public RoundViewAttr getRoundViewAttr() {
return roundViewAttr;
}

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
if (roundViewAttr.isWidthHeightEqual() && getWidth() > 0 && getHeight() > 0) {
int max = Math.max(getWidth(), getHeight());
int measureSpec = MeasureSpec.makeMeasureSpec(max, MeasureSpec.EXACTLY);
super.onMeasure(measureSpec, measureSpec);
return;
}
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}

@Override
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
super.onLayout(changed, left, top, right, bottom);
if (roundViewAttr.isRadiusHalfHeight()) {
roundViewAttr.setCornerRadius(getHeight() / 2);
} else {
roundViewAttr.setBgSelector();
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
package com.siberiadante.lib.widget;

import android.content.Context;
import android.util.AttributeSet;
import android.widget.LinearLayout;
import android.widget.TextView;

/**
* @Created SiberiaDante
* @Describe: 简化LinearLayout shape 画背景
* @Time: 2017/9/4
* @Email: 994537867@qq.com
* @GitHub: https://github.com/SiberiaDante
*/

public class RoundLinearLayout extends LinearLayout {

private RoundViewAttr roundViewAttr;

public RoundLinearLayout(Context context) {
this(context, null);
}

public RoundLinearLayout(Context context, AttributeSet attrs) {
super(context, attrs);
roundViewAttr = new RoundViewAttr(this, context, attrs);

}

public RoundViewAttr getRoundViewAttr() {
return roundViewAttr;
}

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
if (roundViewAttr.isWidthHeightEqual() && getWidth() > 0 && getHeight() > 0) {
int max = Math.max(getWidth(), getHeight());
int measureSpec = MeasureSpec.makeMeasureSpec(max, MeasureSpec.EXACTLY);
super.onMeasure(measureSpec, measureSpec);
return;
}
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}

@Override
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
super.onLayout(changed, left, top, right, bottom);
if (roundViewAttr.isRadiusHalfHeight()) {
roundViewAttr.setCornerRadius(getHeight() / 2);
} else {
roundViewAttr.setBgSelector();
}
}
}
Loading

0 comments on commit dde0e5d

Please sign in to comment.