aboutsummaryrefslogtreecommitdiff
path: root/Client
diff options
context:
space:
mode:
authorOgnjen Cirkovic <ciraboxkg@gmail.com>2022-12-12 20:58:19 +0100
committerOgnjen Cirkovic <ciraboxkg@gmail.com>2022-12-12 20:58:19 +0100
commit1569545d3908daf74ad863c33377fa28bf100b63 (patch)
tree6af4e1e7575b6316e275840e68359924366180eb /Client
parentcb8a7f652aa308997a4dd7257fe9b70f78f33dda (diff)
Dodate tackice koje pokazuju trenutnu lokaciju u navigaciji slika.(Tackice na skrolovanje kroz slike)
Diffstat (limited to 'Client')
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityOpenedImages.kt8
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivitySinglePost.kt10
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Services/LinePagerIndicatorDecoration.kt111
3 files changed, 128 insertions, 1 deletions
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityOpenedImages.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityOpenedImages.kt
index d1f1e4c..f1c704e 100644
--- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityOpenedImages.kt
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityOpenedImages.kt
@@ -1,5 +1,6 @@
package com.example.brzodolokacije.Activities
+import LinePagerIndicatorDecoration
import android.graphics.Bitmap
import android.graphics.drawable.Drawable
import android.os.Build
@@ -7,6 +8,7 @@ import android.os.Bundle
import android.provider.MediaStore
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
+import androidx.core.content.ContextCompat
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.PagerSnapHelper
import androidx.recyclerview.widget.RecyclerView
@@ -17,6 +19,7 @@ import com.bumptech.glide.request.transition.Transition
import com.example.brzodolokacije.Adapters.OpenedPostImageAdapter
import com.example.brzodolokacije.Models.PostImage
import com.example.brzodolokacije.Models.PostPreview
+import com.example.brzodolokacije.R
import com.example.brzodolokacije.Services.RetrofitHelper
import com.example.brzodolokacije.databinding.ActivityOpenedImagesBinding
import java.util.*
@@ -78,6 +81,11 @@ class ActivityOpenedImages : AppCompatActivity() {
snap.attachToRecyclerView(rvImages)
rvImages!!.layoutManager=linearLayout
rvImages!!.adapter=adapter
+ //tackice
+ var color = ContextCompat.getColor(this@ActivityOpenedImages, R.color.unfollow)
+ var color1 = ContextCompat.getColor(this@ActivityOpenedImages, R.color.button_main)
+ if(images!!.size>1)
+ rvImages!!.addItemDecoration(LinePagerIndicatorDecoration(10,10,100,color,color1))
}
} \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivitySinglePost.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivitySinglePost.kt
index 902a985..3ad60de 100644
--- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivitySinglePost.kt
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivitySinglePost.kt
@@ -1,12 +1,13 @@
package com.example.brzodolokacije.Activities
+import LinePagerIndicatorDecoration
import android.content.Intent
import android.graphics.Color
-import android.graphics.drawable.GradientDrawable
import android.os.Bundle
import android.preference.PreferenceManager
import android.util.TypedValue
import android.view.ViewGroup
+import android.view.ViewGroup.MarginLayoutParams
import android.widget.*
import androidx.appcompat.app.AppCompatActivity
import androidx.constraintlayout.widget.ConstraintLayout
@@ -35,6 +36,7 @@ import com.example.brzodolokacije.Services.RetrofitHelper
import com.example.brzodolokacije.Services.SharedPreferencesHelper
import com.example.brzodolokacije.databinding.ActivitySinglePostBinding
import com.google.gson.Gson
+import kotlinx.android.synthetic.main.activity_single_post.*
import org.osmdroid.config.Configuration
import org.osmdroid.tileprovider.tilesource.TileSourceFactory
import org.osmdroid.util.GeoPoint
@@ -89,6 +91,7 @@ class ActivitySinglePost : AppCompatActivity(),OnRefreshListener {
btnChangeHeightUp.isClickable=true
linearLayout2=findViewById(R.id.linearLayout2)
+
linearLayout2.setOnClickListener {
linearLayout2.getLayoutParams().height= ViewGroup.LayoutParams.MATCH_PARENT;
}
@@ -99,6 +102,11 @@ class ActivitySinglePost : AppCompatActivity(),OnRefreshListener {
adapterImages= PostImageAdapter(this@ActivitySinglePost, post.images as MutableList<PostImage>)
layoutManagerImages= LinearLayoutManager(this,LinearLayoutManager.HORIZONTAL,false)
recyclerViewImages = binding.rvMain
+ //tackice image
+ var color = ContextCompat.getColor(this@ActivitySinglePost, R.color.unfollow)
+ var color1 = ContextCompat.getColor(this@ActivitySinglePost, R.color.button_main)
+ if(post.images.size>1)
+ recyclerViewImages!!.addItemDecoration(LinePagerIndicatorDecoration(10,10,100,color,color1))
//DODATI SLIKE
recyclerViewImages?.setHasFixedSize(true)
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Services/LinePagerIndicatorDecoration.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Services/LinePagerIndicatorDecoration.kt
new file mode 100644
index 0000000..31f03ab
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Services/LinePagerIndicatorDecoration.kt
@@ -0,0 +1,111 @@
+import android.content.res.Resources
+import android.graphics.Canvas
+import android.graphics.Paint
+import android.graphics.Rect
+import android.view.View
+import androidx.annotation.ColorInt
+import androidx.recyclerview.widget.GridLayoutManager
+import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
+import androidx.recyclerview.widget.RecyclerView.ItemDecoration
+
+
+class LinePagerIndicatorDecoration(
+ radius: Int,
+ padding: Int,
+ indicatorHeight: Int,
+ @ColorInt colorInactive: Int,
+ @ColorInt colorActive: Int
+) :
+ ItemDecoration() {
+ private val indicatorHeight: Int
+ private val indicatorItemPadding: Int
+ private val radius: Int
+ private val inactivePaint: Paint = Paint()
+ private val activePaint: Paint = Paint()
+
+ init {
+ val strokeWidth: Float = Resources.getSystem().getDisplayMetrics().density * 1
+ this.radius = radius
+ inactivePaint.setStrokeCap(Paint.Cap.ROUND)
+ inactivePaint.setStrokeWidth(strokeWidth)
+ inactivePaint.setStyle(Paint.Style.STROKE)
+ inactivePaint.setAntiAlias(true)
+ inactivePaint.setColor(colorInactive)
+ activePaint.setStrokeCap(Paint.Cap.ROUND)
+ activePaint.setStrokeWidth(strokeWidth)
+ activePaint.setStyle(Paint.Style.FILL)
+ activePaint.setAntiAlias(true)
+ activePaint.setColor(colorActive)
+ indicatorItemPadding = padding
+ this.indicatorHeight = indicatorHeight
+ }
+
+ override fun onDrawOver(c: Canvas, parent: RecyclerView, state: RecyclerView.State) {
+ super.onDrawOver(c, parent, state)
+ val adapter = parent.adapter ?: return
+ val itemCount = adapter.itemCount
+
+ // center horizontally, calculate width and subtract half from center
+ val totalLength = (radius * 2 * itemCount).toFloat()
+ val paddingBetweenItems = (Math.max(0, itemCount - 1) * indicatorItemPadding).toFloat()
+ val indicatorTotalWidth = totalLength + paddingBetweenItems
+ val indicatorStartX = (parent.width - indicatorTotalWidth) / 2f
+
+ // center vertically in the allotted space
+ val indicatorPosY = parent.height - indicatorHeight / 2f
+ drawInactiveDots(c, indicatorStartX, indicatorPosY, itemCount)
+ val activePosition: Int
+ activePosition = if (parent.layoutManager is GridLayoutManager) {
+ (parent.layoutManager as GridLayoutManager?)!!.findFirstVisibleItemPosition()
+ } else if (parent.layoutManager is LinearLayoutManager) {
+ (parent.layoutManager as LinearLayoutManager?)!!.findFirstVisibleItemPosition()
+ } else {
+ // not supported layout manager
+ return
+ }
+ if (activePosition == RecyclerView.NO_POSITION) {
+ return
+ }
+
+ // find offset of active page if the user is scrolling
+ val activeChild = parent.layoutManager!!.findViewByPosition(activePosition)
+ ?: return
+ drawActiveDot(c, indicatorStartX, indicatorPosY, activePosition)
+ }
+
+ private fun drawInactiveDots(
+ c: Canvas,
+ indicatorStartX: Float,
+ indicatorPosY: Float,
+ itemCount: Int
+ ) {
+ // width of item indicator including padding
+ val itemWidth = (radius * 2 + indicatorItemPadding).toFloat()
+ var start = indicatorStartX + radius
+ for (i in 0 until itemCount) {
+ c.drawCircle(start, indicatorPosY, radius.toFloat(), inactivePaint)
+ start += itemWidth
+ }
+ }
+
+ private fun drawActiveDot(
+ c: Canvas, indicatorStartX: Float, indicatorPosY: Float,
+ highlightPosition: Int
+ ) {
+ // width of item indicator including padding
+ val itemWidth = (radius * 2 + indicatorItemPadding).toFloat()
+ val highlightStart = indicatorStartX + radius + itemWidth * highlightPosition
+ c.drawCircle(highlightStart, indicatorPosY, radius.toFloat(), activePaint)
+ }
+
+ override fun getItemOffsets(
+ outRect: Rect,
+ view: View,
+ parent: RecyclerView,
+ state: RecyclerView.State
+ ) {
+ super.getItemOffsets(outRect, view, parent, state)
+ outRect.bottom = indicatorHeight
+ }
+} \ No newline at end of file