BaseFragment懒加载Glide+PhotoView
来源:互联网 发布:消除马赛克软件 编辑:程序博客网 时间:2024/05/20 22:39
/** * BaseFragment懒加载 */
public abstract class BaseFragment extends Fragment { public Context mContext; private View view = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.mContext = getActivity(); } // 一个View只能被 添加布局里面ViewPager一次 @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { if (view == null) { view = createView(inflater, container, savedInstanceState); } else { // has parent ViewGroup parent = (ViewGroup) view.getParent(); if (parent != null) { parent.removeView(view); } } return view; } protected boolean isVisibleToUser; protected boolean isViewInitiated; protected boolean isDataInitiated; @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); isViewInitiated = true; prepareFetchData(); } @Override public void setUserVisibleHint(boolean isVisibleToUser) { super.setUserVisibleHint(isVisibleToUser); this.isVisibleToUser = isVisibleToUser; isViewInitiated = true; prepareFetchData(); } public boolean prepareFetchData() { return prepareFetchData(true); } public boolean prepareFetchData(boolean forceUpdate) { if (isVisibleToUser && isViewInitiated && (!isDataInitiated || forceUpdate)) { fetchData(); isDataInitiated = true; return true; } return false; } protected abstract View createView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState); public abstract void fetchData();}
import android.os.Bundle;import android.support.annotation.Nullable;import android.util.Log;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import com.bumptech.glide.Glide;import com.bumptech.glide.load.engine.DiskCacheStrategy;import com.github.chrisbanes.photoview.PhotoView;/** * Created by Administrator on 2017/3/20. */public class MyFragment extends BaseFragment { private View view; private PhotoView photoView; private static final String IMAGE_URL = "img_url"; private String imageUrl; public static MyFragment newInstance(String imgUrl) { MyFragment fragment = new MyFragment(); Bundle args = new Bundle(); args.putString(IMAGE_URL, imgUrl); fragment.setArguments(args); return fragment; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (getArguments() != null) { Log.d("MyFragment", "onCreate"); imageUrl = getArguments().getString(IMAGE_URL); Log.d("ViewDetailFragment", imageUrl); } } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); Log.d("MyFragment", "onActivityCreated"); } @Override protected View createView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { view = inflater.inflate(R.layout.fragment_item, container, false); initView(view); return view; } @Override public void fetchData() { if (imageUrl != null) { Glide.with(mContext) .load(imageUrl) .diskCacheStrategy(DiskCacheStrategy.NONE) .into(photoView); } } private void initView(View view) { photoView = (PhotoView) view.findViewById(R.id.pv); }}
private void initData() { mImageURLS.add("http://n.sinaimg.cn/sports/2_img/upload/69e00db4/20170319/OYfU-fycnyhk9663845.jpg"); mImageURLS.add("http://n.sinaimg.cn/sports/2_img/upload/88598dbf/20170313/wrf0-fychttf9388083.jpg"); mImageURLS.add("http://n.sinaimg.cn/sports/2_img/upload/88598dbf/20170313/5MAs-fychhuq4227487.jpg"); mImageURLS.add("http://n.sinaimg.cn/sports/2_img/upload/88598dbf/20170313/ClUf-fychhvn8577021.jpg"); mImageURLS.add("http://n.sinaimg.cn/sports/2_img/upload/88598dbf/20170313/5Ukj-fychhus0993884.jpg"); ArrayList<MyFragment> myFragments = new ArrayList<>(); for (int i = 0; i < mImageURLS.size(); i++) { myFragments.add(MyFragment.newInstance(mImageURLS.get(i))); } MyFragmentPagerAdapter myFragmentPagerAdapter = new MyFragmentPagerAdapter(getSupportFragmentManager(), myFragments); viewPager.setAdapter(myFragmentPagerAdapter);}class MyFragmentPagerAdapter extends FragmentPagerAdapter { ArrayList<MyFragment> myFragments; public MyFragmentPagerAdapter(FragmentManager fm, ArrayList<MyFragment> myFragments) { super(fm); this.myFragments = myFragments; } @Override public Fragment getItem(int position) { return myFragments.get(position); } @Override public int getCount() { return myFragments.size(); }}
0 0
- BaseFragment懒加载Glide+PhotoView
- 使用Glide加载网络图片,使用photoView进行缩放
- RecyclerView+Glide+PhotoView
- PhotoView+viewpager+Picasso+glide
- RecyclerView+Glide+PhotoView
- BaseFragment
- BaseFragment
- BaseFragment 解决ViewPager预加载问题
- Glide网络图片滑动查看,可缩放(PhotoView example)
- PhotoView
- photoview
- PhotoView
- photoView
- photoview
- PhotoView
- PhotoView
- PhotoView
- photoview
- 日志筛选工具(二)
- JavaScript、Java、C#关于for循环的比较
- Oracle企业可视化解决方案AutoVue系列产品更新至v21.0.1!
- 智能视频分析平台已成为公安实战应用平台的发展趋势
- java.util.ResourceBundle
- BaseFragment懒加载Glide+PhotoView
- jsoup Cookbook——从一个URL加载一个Document
- EXPORT TO XLSX-FILE
- SQL----- truncate、delete、drop的区别与联系
- Web Services学习
- 时间管理
- 欢迎使用CSDN-markdown编辑器
- TCP/IP传输层,你懂多少?
- 您的设计模式——门面模式【Facade Pattern】