Android--Fragment 實現懶載入和不重複載入
基類:
應用:package fragment; import android.support.v4.app.Fragment; import android.view.View; /** * Created by xiaobai on 2018/1/31/031. */ public abstract class BaseFragment extends Fragment { /** * Fragment當前狀態是否可見 */ public boolean isVisible; /** * inflate佈局檔案 返回的view */ public View mView; /** * 簡化 findViewById * * @param viewId * @param <T> * @return */ protected <T extends View> T find(int viewId) { return (T) mView.findViewById(viewId); } /** * setUserVisibleHint是在onCreateView之前呼叫的 * 設定Fragment可見狀態 */ @Override public void setUserVisibleHint(boolean isVisibleToUser) { super.setUserVisibleHint(isVisibleToUser); /** * 判斷是否可見 */ if (getUserVisibleHint()) { isVisible = true; onVisible(); } else { isVisible = false; onInvisible(); } } /** * 可見 */ private void onVisible() { lazyLoad(); } /** * 不可見 */ private void onInvisible() { } /** * 延遲載入 * 子類必須重寫此方法 */ public abstract void lazyLoad(); }
package fragment; import android.content.pm.ApplicationInfo; import android.os.Bundle; import android.support.annotation.Nullable; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ListView; import com.android.xiaobai.R; import java.util.List; /** * Created by xiaobai on 2018/1/31/031. */ public class AppFragment extends BaseFragment { /** * 標誌位,標誌已經初始化完成 */ private boolean isPrepared; /** * 是否已被載入過一次,第二次就不再去請求資料了 */ private boolean mHasLoadedOnce; private List<ApplicationInfo> mAppList; private ListView lv; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { if (mView == null) { // 需要inflate一個佈局檔案 填充Fragment mView = inflater.inflate(R.layout.fragment_app, container, false); initView(); isPrepared = true; // 實現懶載入 lazyLoad(); } //快取的mView需要判斷是否已經被加過parent, 如果有parent需要從parent刪除,要不然會發生這個mView已經有parent的錯誤。 ViewGroup parent = (ViewGroup) mView.getParent(); if (parent != null) { parent.removeView(mView); } return mView; } /** * 初始化控制元件 */ private void initView() { lv = find(R.id.lv); } @Override public void lazyLoad() { if (!isPrepared || !isVisible || mHasLoadedOnce) { return; } //填充各控制元件的資料 mHasLoadedOnce = true; } }
相關推薦
Android--Fragment 實現懶載入和不重複載入
基類: package fragment; import android.support.v4.app.Fragment; import android.view.View; /** * Cr
Android Fragment實現懶載入
在最近的專案中一個介面中有四個Fragment。每個碎片中都要進行網路請求。 週期也開始並進行了載入。後來在網上進行了搜尋找到了一個非常簡單的官方自帶的方法setUserVisibleHint(boolean isVisibleToUser)。我們可以通過這
Android手機平板兩不誤,使用Fragment實現相容手機和平板的程式
記得我之前參與開發過一個華為的專案,要求程式可以支援好幾種終端裝置,其中就包括Android手機和Android Pad。然後為了節省人力,公司無節操地讓Android手機和Android Pad都由我們團隊開發。當時專案組定的方案是,製作兩個版本的App
android Fragment實現APP主介面Tab頁面切換和點選事件
Fragment 頁面切換不能滑動 所以對於listview 可以新增的左右滑動事件 ,不會有衝突例如(QQ的好友列表的刪除) Fragment 和viewpager 的區別 Viewpager 的事件都需要寫在 MainActivity 使
Fragment實現懶載入,讓應用更優化
一.概述 玩過微信的都知道,微信用的是懶載入的模式,之所以使用懶載入是因為:當使用viewpager+adapter作為應用大的佈局時,viewpager會通過setOffscreenPageLimit來設定預載入的專案,不設定setOffscreenPage
Android開發-ViewPager巢狀Fragment卡頓解決Viewpager滑動重複載入Fragment延遲載入
Fragment大家肯定不會陌生的,幾乎每個App裡都有它的存在,作為Google在3.0以後引入的一個概念,極大的解決了Activity(或者說手機螢幕)的侷限性,讓Activity碎片化,正如它的原意 【分段】,【碎片】一樣讓一個螢幕中的activity展示
Android中實現短音訊和震動的一些總結
好長時間沒有寫部落格了,因為最近事情比較多。所以好長時間沒有寫部落格了。堅持是一件很辛苦的事情。但還需要努力。。。好了,閒話不扯了。因為最近專案中用到了相應的短音訊和震動的功能,所以這裡總結一下相應的內容! 本文知識點: 音訊中的一些知識和常用的API介紹;
JMeter實現唯一引數生成不重複時間戳
現象: 使用jmeter做介面壓測時,總會遇到壓測時,提示不允許重複id或提示訂單不允許重複現象,那麼如何解決呢? 原料工具 jmeter4.0 本地準備好介面服務 思路: 單個介面,小批量介面,一般以時間戳或者是日期格式的資料作為介面測試引數,解決引數化問題; 大批量介面壓
為什麼Android Fragment 頁面中onActivityResult方法不走?
Android 開發中,有很多頁面是都會有左右滑動功能了,於是有了ViewPager,ViewPager裡面放各自的Fragment,點選某一個Fragment中的按鈕 跳轉到一個Activity頁面 關閉這個頁面是如果需要傳值或者通知前一個Fragment,需要呼叫setResult方法,
Android簡單實現本地圖片和視訊選擇器功能
哈嘍,大家好,好久不見了,很久沒有更新 Android 方面的技術文章了,最近在忙公司的 AR 類的新產品,其中涉及到本地圖片和視訊的選擇和上傳功能。至於為什麼不用系統提供的圖片和視訊選擇器,原因你懂的,系統提供的選擇器只能通過 Intent 方式去獲取,這意味
由指定物件集合分出重複物件集合和不重複物件集合
package com.example.demo0810.util; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.uti
android smartRefresh下拉重新整理和上拉載入
1.遠端依賴 compile 'com.scwang.smartrefresh:SmartRefreshLayout:1.0.5.1' 2.佈局中使用 <com.scwang.smartrefresh.layout.SmartRefreshLayout androi
Android 完美實現圖片圓角和圓形 對實現進行分析
轉載請標明出處:http://blog.csdn.net/lmj623565791/article/details/24555655本來想在網上找個圓角的例子看一看,不盡人意啊,基本都是官方的Demo的那張原理圖,稍後會貼出。於是自己自定義了個View,實現圖片的圓角以及圓形效
邀請碼實現(六位不重複)
實現思路:資料庫 + UUID 小貼士: UUID是1.5中新增的一個類,在java.util下,用它可以產生一個號稱全球唯一的ID UUID由以下幾部分的組合: (1)當前日期和時間,UUID的第一個部分與時間有關,如果你在生成一個UUID之後,過幾秒又生成一個UUID,則第一
Set 集合怎麼實現add()方法新增不重複?
//新增一個set集合 Set set=new HashSet();Animal animal1=new Animal("dongwu",2);Animal animal2=new Animal("dongwu",
Android ListView 實現下拉重新整理上拉載入
1.簡介 無疑,在Android開發中,ListView是使用非常頻繁的控制元件之一,ListView提供一個列表的容易,允許我們以列表的形式將資料展示到介面上,但是Google給我們提供的原生ListView的控制元件,雖然在功能上很強大,但是在使用
用css3實現頁面背景圖片不重複
也許許多人在做網頁的時候都會遇到過一個這樣的問題,什麼問題呢那就是跟下面這張圖片一樣的問題 出現這樣的問題的原因是因為div的大小大於背景圖片的大小,從而導致了背景圖片的重複,其實在css3中解決像這樣的問題特別簡單隻需要新增一個這樣的樣式即可 background
Android app實現自更新和安裝,許可權檢測適配Android6.0以下和Android6.0和Android7.0和Android8.0總結篇
首先下載問檔案需要在AndroidManifest.xml裡新增SD卡讀寫許可權,下面兩個許可權:<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <us
BottomNavigationView + ViewPager + Fragment 實現左右滑動和下方導航欄
轉載請註明出處:http://blog.csdn.net/htwhtw123/article/details/78441431 比較簡單的用BottomNavigationView 、 ViewPager 、 Fragment 實現下方導航欄與上方可翻頁頁面,
Android Fragment的FragmentTransaction 操作和對應的生命週期變化
1. Fragment的生命週期和Activity的生命週期 Fragment是依附於Activity而存在的,當Activity在onCreate時,Fragment會進行onAttach, onCreate, onCreateView, onActivityCreat