• [android] 新闻客户端主界面部分


    当我们使用activityfragment的时候,每个界面都要建立一个fragment,每个fragment里面都要重写onCreate()onCreateView()onActivityCreated(),方法,我们新建一个基类BaseFragment来重写这些方法

    BaseFragment需要定义一个抽象方法initView(),用来初始化View对象,需要子类去实现,我们父类把LayoutInflater对象传进去

    BaseFragment需要定义一个抽象方法initData(),用来初始化数据,需要子类去实现

    package com.qingguow.news.fragment;
    
    import android.content.Context;
    import android.os.Bundle;
    import android.support.annotation.Nullable;
    import android.support.v4.app.Fragment;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    /**
     * 基础类
     * @author taoshihan
     *
     */
    public abstract class BaseFragment extends Fragment {
    
        public Context context;
        @Override
        public void onActivityCreated(@Nullable Bundle savedInstanceState) {
            // TODO Auto-generated method stub
            super.onActivityCreated(savedInstanceState);
            initData(savedInstanceState);
        }
    
    
        @Override
        public void onCreate(@Nullable Bundle savedInstanceState) {
            // TODO Auto-generated method stub
            super.onCreate(savedInstanceState);
            context=getActivity();
        }
    
        @Override
        @Nullable
        public View onCreateView(LayoutInflater inflater,
                @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
            View view=initView(inflater);
            return view;
        }
        /**
         * 初始化View对象
         * @param inflater
         * @return
         */
        public abstract View initView(LayoutInflater inflater);
        /**
         * 初始化数据
         * @param Bundle
         * @return
         */
        public abstract void initData(Bundle savedInstanceState);
    }

    Fragment里实现Banner轮播

    fragment_index.xml布局文件中添加节点<android.support.v4.view.ViewPager />

    获取ViewPager对象,通过findViewById()方法

    调用ViewPager对象的setAdapter()方法,设置适配器,参数:PagerAdapter对象

    使用匿名内部类的方式实现抽象方法,getCount()isViewFromObject()instantiateItem()destroyItem()

    重写getCount()方法,返回轮播的个数

    重写isViewFromObject()方法,返回布尔值,

    重写instantiateItem()方法,将当前view对象添加到ViewGroup对象,返回当前对象

    重写destroyItem()方法,从当前container中删除指定位置(position)的View

    package com.qingguow.news.fragment;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import android.os.Bundle;
    import android.support.v4.view.PagerAdapter;
    import android.support.v4.view.ViewPager;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.TextView;
    
    import com.qingguow.news.R;
    /**
     * 首页
     * @author taoshihan
     *
     */
    public class IndexFragment extends BaseFragment {
        private List<View> banners;
        @Override
        public View initView(LayoutInflater inflater) {
            View view=inflater.inflate(R.layout.fragment_index, null);
            //banner部分
            banners=new ArrayList<>();
            TextView tv=new TextView(context);
            tv.setText("测试");
            banners.add(tv);
            TextView tv2=new TextView(context);
            tv2.setText("测试2");
            banners.add(tv2);
            ViewPager vp=(ViewPager) view.findViewById(R.id.vp_banner);
            vp.setAdapter(new PagerAdapter(){
                @Override
                public void destroyItem(ViewGroup container, int position, Object object) {
                    container.removeView(banners.get(position));
                }
                @Override
                public Object instantiateItem(ViewGroup container, int position) {
                    container.addView(banners.get(position));
                    return banners.get(position);
                }
                @Override
                public int getCount() {
                    return banners.size();
                }
    
                @Override
                public boolean isViewFromObject(View arg0, Object arg1) {
                    return arg0==arg1;
                }
            });
            return view;
        }
    
        @Override
        public void initData(Bundle savedInstanceState) {
            // TODO Auto-generated method stub
            
        }
    }
  • 相关阅读:
    Netty之SubPage级别的内存分配
    Netty之Page级别的内存分配
    Netty内存池及命中缓存的分配
    新建maven工程问题001
    Eclipse使用技巧
    excel使用技巧
    java 单例模式
    springmvc拦截器验证登录时间
    Filter实现用户名验证
    springMVC的配置文件路径问题
  • 原文地址:https://www.cnblogs.com/taoshihan/p/5440959.html
Copyright © 2020-2023  润新知