Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix center horizontal for rtl languages #16

Open
wants to merge 46 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
ccd0d71
RTL SUPPORT
Toters-Mohammad-Tabbara Jun 21, 2023
0bfc6e8
ku-layout-dir-fix
Oct 17, 2023
7bcf7c2
Merge pull request #1 from toters-eng/ku-layout-dir-fix
Toters-Mohammad-Tabbara Oct 17, 2023
d1a019b
Crash fix for locale
Oct 23, 2023
db3f573
Merge pull request #2 from toters-eng/ku-layout-dir-fix
Toters-Mohammad-Tabbara Oct 23, 2023
2930d56
Merge with from main stream
Nov 21, 2023
25555af
Merge pull request #3 from hyy920109/master
Toters-Mohammad-Tabbara Apr 5, 2024
7989728
Merge branch 'merge-original-to-fork' of https://github.com/toters-en…
Toters-Mohammad-Tabbara Apr 5, 2024
c948636
Merge branch 'merge-original-to-fork' of https://github.com/toters-en…
Jinane-toters Apr 5, 2024
b722c6c
Gradle xml updaye
Toters-Mohammad-Tabbara Apr 5, 2024
fdceaea
Fix build for library
Toters-Mohammad-Tabbara Apr 5, 2024
550223d
fixed center horizontal width
Jinane-toters Apr 7, 2024
3268964
fixed center horizontal width for ltr
Jinane-toters Apr 8, 2024
2926509
fixed center horizontal width for ltr
Jinane-toters Apr 8, 2024
b370cfa
fixed margin
Jinane-toters Apr 8, 2024
fc01f96
fixed margin for else
Jinane-toters Apr 8, 2024
215d293
changed gravity
Jinane-toters Apr 8, 2024
9e18f7e
testing
Jinane-toters Apr 8, 2024
9c10d1c
testing margin
Jinane-toters Apr 8, 2024
253b9b8
flipped ifs
Jinane-toters Apr 8, 2024
e6a9d1e
reverted changes
Jinane-toters Apr 8, 2024
9d9ec34
added if for ltr
Jinane-toters Apr 8, 2024
b4906a0
changed -
Jinane-toters Apr 8, 2024
530c674
multiplied width by 2
Jinane-toters Apr 8, 2024
dd83e4b
flipped subtraction
Jinane-toters Apr 8, 2024
0c6bcc8
divided width by 2
Jinane-toters Apr 8, 2024
eb0811e
added subtraction by rootWidth
Jinane-toters Apr 8, 2024
3ead289
added subtraction by rootWidth hb
Jinane-toters Apr 8, 2024
d5b6aec
added subtraction by rootWidth 124
Jinane-toters Apr 8, 2024
09da368
added rootwidth
Jinane-toters Apr 8, 2024
4146555
changed gravity
Jinane-toters Apr 8, 2024
0f63551
changed gravity to center horizontal
Jinane-toters Apr 8, 2024
1c9ccf0
left margin
Jinane-toters Apr 9, 2024
4a120a4
gravity
Jinane-toters Apr 9, 2024
cb08267
removed division by 2
Jinane-toters Apr 9, 2024
6362b5a
added - highLightRect.width()
Jinane-toters Apr 9, 2024
5c51a71
added substraction
Jinane-toters Apr 9, 2024
70849da
removed margins
Jinane-toters Apr 9, 2024
2a1a6ce
gravity END
Jinane-toters Apr 9, 2024
2a0c881
gravity START
Jinane-toters Apr 9, 2024
85c1d5c
change the rtl logic
Jinane-toters Apr 9, 2024
0fb8c0e
fixed the rtl logic
Jinane-toters Apr 9, 2024
d71279b
fixed the rtl logic again
Jinane-toters Apr 9, 2024
ad2b069
fixed the rtl logic again and again
Jinane-toters Apr 9, 2024
1fe74de
fixed center horizontal logic
Jinane-toters Apr 9, 2024
b867ce0
fixed else branch
Jinane-toters Apr 9, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .idea/gradle.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 0 additions & 1 deletion .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 2 additions & 3 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,12 @@ plugins {
}

android {
compileSdkVersion 33
buildToolsVersion "29.0.3"
compileSdk 34

defaultConfig {
applicationId "com.hyy.sample"
minSdkVersion 21
targetSdkVersion 33
targetSdkVersion 34
versionCode 1
versionName "1.0"

Expand Down
16 changes: 13 additions & 3 deletions app/src/main/java/com/hyy/sample/ui/util/RecyclerViewExt.kt
Original file line number Diff line number Diff line change
Expand Up @@ -31,15 +31,25 @@ fun RecyclerView.setOnItemClickAndLongClickedListener(
return false
}

override fun onScroll(e1: MotionEvent, e2: MotionEvent, distanceX: Float, distanceY: Float): Boolean {
return false
override fun onScroll(
e1: MotionEvent?,
e2: MotionEvent,
distanceX: Float,
distanceY: Float
): Boolean {
TODO("Not yet implemented")
}

override fun onLongPress(e: MotionEvent) {

}

override fun onFling(e1: MotionEvent, e2: MotionEvent, velocityX: Float, velocityY: Float): Boolean {
override fun onFling(
e1: MotionEvent?,
e2: MotionEvent,
velocityX: Float,
velocityY: Float
): Boolean {
return false
}

Expand Down
10 changes: 5 additions & 5 deletions app/src/main/java/com/hyy/sample/ui/view/TriangleView.kt
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ class TriangleView constructor(
typedArray.recycle()
}

override fun onDraw(canvas: Canvas?) {
override fun onDraw(canvas: Canvas) {
super.onDraw(canvas)
path.reset()
when(direction) {
Expand All @@ -49,28 +49,28 @@ class TriangleView constructor(
path.lineTo(measuredWidth/2f, 0f.dp)
path.lineTo(measuredWidth*1f, measuredHeight*1f)
path.close()
canvas?.drawPath(path, paint)
canvas.drawPath(path, paint)
}
DIR.BOTTOM.dir -> {
path.moveTo(0f, 0f)
path.lineTo(measuredWidth/2f, measuredHeight*1f)
path.lineTo(measuredWidth*1f, 0f)
path.close()
canvas?.drawPath(path, paint)
canvas.drawPath(path, paint)
}
DIR.LEFT.dir -> {
path.moveTo(measuredWidth*1f, 0f)
path.lineTo(0f, measuredHeight/2f)
path.lineTo(measuredWidth*1f, measuredHeight*1f)
path.close()
canvas?.drawPath(path, paint)
canvas.drawPath(path, paint)
}
DIR.RIGHT.dir -> {
path.moveTo(0f, 0f)
path.lineTo(measuredWidth*1f, measuredHeight/2f)
path.lineTo(0f, measuredHeight*1f)
path.close()
canvas?.drawPath(path, paint)
canvas.drawPath(path, paint)
}
}

Expand Down
13 changes: 9 additions & 4 deletions app/src/main/res/layout/guide_tips_layout.xml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
Expand All @@ -16,7 +16,10 @@
android:layout_height="wrap_content"
android:fontFamily="sans-serif-medium"
android:text="@string/click_here_to_next_step"
android:textColor="@color/white" />
android:textColor="@color/white"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />

<androidx.appcompat.widget.AppCompatTextView
android:layout_width="wrap_content"
Expand All @@ -28,6 +31,8 @@
android:paddingHorizontal="12dp"
android:paddingVertical="4dp"
android:text="@string/step_first"
android:textColor="@color/white" />
android:textColor="@color/white"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_tips" />

</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
4 changes: 2 additions & 2 deletions highlight_pro/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,8 @@ android {
compileSdkVersion 31

defaultConfig {
minSdkVersion 19
targetSdkVersion 31
minSdkVersion 21
targetSdkVersion 34
versionCode 5
versionName "1.4.0"

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,19 @@ import android.view.Gravity
import android.view.KeyEvent
import android.view.View
import android.widget.FrameLayout
import androidx.core.content.ContextCompat
import androidx.core.content.res.ResourcesCompat
import androidx.core.graphics.toColorInt
import androidx.core.os.ConfigurationCompat
import androidx.core.view.ViewCompat
import androidx.core.view.children
import androidx.core.view.doOnLayout
import androidx.core.view.doOnPreDraw
import com.hyy.highlightpro.parameter.Constraints
import com.hyy.highlightpro.parameter.HighlightParameter
import com.hyy.highlightpro.HighlightProImpl
import com.hyy.highlightpro.R
import kotlin.math.abs

/**
*Create by hyy on 2021/2/6
Expand Down Expand Up @@ -158,11 +164,18 @@ internal class MaskContainer constructor(context: Context, attributeSet: Attribu
val margin = parameter.marginOffset
val highLightRect = parameter.rect
val gravities = mutableListOf<Int>()
val locale = ConfigurationCompat.getLocales(resources.configuration).get(0)?.toLanguageTag()
parameter.constraints.forEach {
when (it) {
Constraints.StartToStartOfHighlight -> {
layoutParams.leftMargin = (highLightRect.left + margin.start).toInt()
gravities.add(Gravity.START)
if (resources.configuration.layoutDirection == ViewCompat.LAYOUT_DIRECTION_LTR && locale != "ku") {
layoutParams.leftMargin = (highLightRect.left + margin.start).toInt()
gravities.add(Gravity.START)
} else {
layoutParams.rightMargin =
(rootWidth - highLightRect.right + margin.end).toInt()
gravities.add(Gravity.START)
}
}

Constraints.EndToStartOfHighlight -> {
Expand All @@ -179,9 +192,14 @@ internal class MaskContainer constructor(context: Context, attributeSet: Attribu
}

Constraints.EndToEndOfHighlight -> {
layoutParams.rightMargin =
(rootWidth - highLightRect.right + margin.end).toInt()
gravities.add(Gravity.END)
if (resources.configuration.layoutDirection == ViewCompat.LAYOUT_DIRECTION_LTR && locale != "ku") {
layoutParams.rightMargin =
(rootWidth - highLightRect.right + margin.end).toInt()
gravities.add(Gravity.END)
} else {
layoutParams.leftMargin = (highLightRect.left + margin.start).toInt()
gravities.add(Gravity.END)
}
}

Constraints.TopToTopOfHighlight -> {
Expand Down Expand Up @@ -209,14 +227,16 @@ internal class MaskContainer constructor(context: Context, attributeSet: Attribu

Constraints.CenterHorizontalOfHighlight -> {
val width = layoutParams.width

if (width <= 0) {
layoutParams.leftMargin =
(highLightRect.left + highLightRect.width() / 2f).toInt()
val transitFromCenter = (highLightRect.left + highLightRect.right - rootWidth)
layoutParams.rightMargin = abs(transitFromCenter).toInt()/2
layoutParams.leftMargin = abs(transitFromCenter).toInt()/2
gravities.add(Gravity.START)
view.doOnPreDraw { tipsView ->
layoutParams.rightMargin =
(rootWidth - transitFromCenter - tipsView.width).toInt() / 2
layoutParams.leftMargin =
(highLightRect.left + highLightRect.width() / 2f - tipsView.width / 2f).toInt()
(rootWidth + transitFromCenter - tipsView.width).toInt() / 2
view.layoutParams = layoutParams
}
} else {
Expand Down