Kaydırma Efektleri

Merhabalar,
Scrollview de fotograflar bittiginde(yani asiri kaydirildiginda) bir fonksiyonu tetiklemek istiyorum.Ancak kivy dokumanını inceledigimde sadece üç event belirtilmiş (onceki scrollview eventleri kaldırılmıs.onların yerine effect_cls kullanmamizi oneriyor.)Bunlar,

on_scroll_start ,
on_scroll_stop,
on_scroll_move,

Malesef bu eventler benim istedigimi vermiyor.(su anlık on_scroll_stop kullandim ama istedigimi saglamıyor malesef.Ne yapmaliyim?Simdiden tesekkurler.)event_cls yi nasil kullanabilecegimi de anlayabilmis degilim maalesef.Haftalarca arastırdım bunu,ama ne yazık ki bulamadım.(Amacım scrollview de gosterilen fotograflar bittiginde yenilerini yuklemek.ama bu tetiklemeyi yapamıyorum,on_scroll_stop kullandıgımda ise kullanıcı eski fotograflara bakmak icin geri kaydırma yapsa da,yeni fotograflara bakmak icin ileri kaydirma yapsa da sonunda yeni fotograflar geliyor.İstedigim ise su: kullanici sadece ileriye asiri kaydirma yaptiginda yeni fotografların yuklenmesi)

Merhaba.

İstediğiniz şeyi nasıl yapabileceğinizi bilmiyorum, Kivy’ye de hakim değilim. Ancak bu dediğiniz işleme “tembel yükleme” (“lazy loading”) deniyor. Kivy’de nasıl bir liste görünümü (list view) kullanıyorsunuz bilmiyorum ama bunun “tembel” olanını araştırmanızı öneririm. İngilizce ismiyle araştırırsanız daha çok sonuç elde edebilirsiniz.

İyi çalışmalar.

1 Beğeni

oncelikle yardimci olmaya calistiginiz icin tesekkur ederim.Sorunu cozdum.Ama su anda aciklayamiyorum cozumu,ama en kısa zamanda acıklamaya calisacagim.Akıllı tahtadan yazmaktayım bu mesajı,ondan dolayı mazur gorun lutfen.Soruyu scroll_x ile cozdum.

1 Beğeni
from kivy.app import App
from kivy.uix.image import AsyncImage
from kivy.lang import Builder
from kivy.metrics import dp
from kivy.uix.scrollview import ScrollView
from kivy.uix.screenmanager import ScreenManager,Screen

kv = """
<a>:
    ScrollView:
        id: scr1
        size_hint: 1,1
        on_scroll_stop: app.yukle()
        GridLayout:
            id: grd1
            cols: 2
            spacing: 20
            size_hint_y: None
            size_hint_x: 1
            height: max(self.minimum_height, scr1.height)
        
"""
class a(Screen):
    pass
class foto(App):
    def yukle(self):
        if self.app.ids.scr1.scroll_y <= 0:
            for i in range(3):
  #dikkat forbidden olabilir,yapılacak sey resim linkinin degistirilmesi             self.app.ids.grd1.add_widget(AsyncImage(source='https://wallpaperscraft.com/download/shore_trees_sea_119852/3840x2160',
                size_hint_y=None,
                keep_ratio=False,
                height= dp(200),
                allow_stretch=True))
        
    
    def on_start(self):
        for i in range(60):
            self.app.ids.grd1.add_widget(AsyncImage(source='http://wallpaper-gallery.net/images/wallpaper-for-android/wallpaper-for-android-24.jpg',
            size_hint_y=None,
            keep_ratio=False,
            height= dp(200),
            allow_stretch=True))
            
    def build(self):
        Builder.load_string(kv)
        self.yerlesim = ScreenManager()
        self.app = a()
        self.yerlesim.add_widget(self.app)
        return self.yerlesim
        
alll = foto()
alll.run()

Yanlıslıkla scroll_x demisim scroll_y olacak,pardon.
Boyle bir cozum buldum.
İlginiz icin gercekten cok tesekkurler.Cok mutluyum.Kodlari cendik icine alamıyorum maalesef bu arada su anda.Ayriyeten acele kod yazdıgım icin tekrardan kusura bakmayın.Duzensizlikler olabilir.

1 Beğeni