Oluşturduğum bir sistem, her biri 0-100 ölçeğine sahip bir dizi UI kaydırıcısını (sayı değişir) içerir. Kaydırıcıyla, bir öğeyi tutup bir ses düzeyi denetimi gibi yukarı ve aşağı sürüklediğiniz bir kullanıcı arayüzü anlamına gelir. Her zaman toplam 100 olmasını sağlayan bir algoritma ile bağlanırlar. Bu nedenle, bir kaydırıcı yukarı hareket ettirildiğinde, diğerleri aşağıya, sonunda sıfıra hareket eder. Biri aşağı hareket ettirildiğinde, diğerleri yukarı hareket eder. Her zaman toplam 100 olmalıdır. Yani burada kaydırıcıların çeşitli değerleri vardır, ancak toplam% 100'dür:
----O------ 40
O---------- 0
--O-------- 20
--O-------- 20
--O-------- 20
İlk kaydırıcı 40'dan 70'e kadar YUKARI hareket ederse, diğerleri (kaydırıcı sürüklendikçe) değer olarak AŞAĞI hareket etmelidir. Üç sürgünün 20'den 10'a değiştiğini ve alçaltılamadığından biri sıfırda kaldığını unutmayın.
-------O--- 70
O---------- 0
-O--------- 10
-O--------- 10
-O--------- 10
Tabii ki herhangi bir kaydırıcı 0 veya 100'e ulaştığında, daha fazla hareket edemez, bu da kafamın gerçekten acımaya başladığı yerdir. Dolayısıyla, bir kaydırıcı daha yükseğe hareket ederse, diğerleri daha aşağı hareket eder, ancak bunlardan herhangi biri sıfıra ulaştığında, yalnızca henüz sıfıra ulaşmamış kalanlar daha düşük hareket edebilir.
Ben burada bu soru uygulama değil algoritmaya özgü olarak soruyorum. FWIW platformu Android Java, ancak bu özellikle alakalı değil.
İlk bıçakla aldığım yaklaşım, hareket eden kaydırıcının yüzde değişimini hesaplamaktı. Daha sonra bu değişikliği böldüm ve (diğer yönde) diğer kaydırma değerlerine uyguladım. Ancak sorun, yüzdelerin kullanılması ve çarpılmasıyla, herhangi bir kaydırıcı sıfıra ulaştığında, bir daha asla sıfırdan artırılamaz - bunun net sonucu, tek tek kaydırıcıların sıfıra yapışmasıdır. Yuvarlama sorunlarından kaçınmak için 0 - 1.000.000 aralığında kaydırıcılar kullandım ve bu yararlı görünüyor, ancak henüz tüm senaryoları iyi işleyen bir algoritma oluşturmadım.