练习

本文介绍如何使用 Android 的 FlycoTabLayout 实现自定义的 TabLayout 功能,包括权限请求、Fragment 切换、适配器设置及网络数据加载等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文章目录

ativity

package com.example.flycotablayout_exe_homework;

import android.Manifest;
import android.os.Build;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v7.app.AppCompatActivity;

import com.example.flycotablayout_exe_homework.bean.MyTab;
import com.example.flycotablayout_exe_homework.fragment.FirstFragment;
import com.example.flycotablayout_exe_homework.fragment.ForthFragment;
import com.example.flycotablayout_exe_homework.fragment.SecondFragment;
import com.example.flycotablayout_exe_homework.fragment.ThirthFragment;
import com.flyco.tablayout.CommonTabLayout;
import com.flyco.tablayout.listener.CustomTabEntity;
import com.flyco.tablayout.listener.OnTabSelectListener;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {

    private CommonTabLayout fly;
    private ArrayList<CustomTabEntity> list = new ArrayList<>();
    private Fragment fragment1, fragment2, fragment3, fragment4;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            requestPermissions(new String[]{
                    Manifest.permission.INTERNET,
                    Manifest.permission.WRITE_EXTERNAL_STORAGE,
                    Manifest.permission.READ_EXTERNAL_STORAGE,
                    Manifest.permission.ACCESS_NETWORK_STATE,
                    Manifest.permission.ACCESS_WIFI_STATE,
                    Manifest.permission.READ_PHONE_STATE,
                    Manifest.permission.ACCESS_COARSE_LOCATION

            }, 101);
        }
        initView();
    }

    private void initView() {
        fly = (CommonTabLayout) findViewById(R.id.fly);
        fragment1 = new FirstFragment();
        fragment2 = new SecondFragment();
        fragment3 = new ThirthFragment();
        fragment4 = new ForthFragment();

        list.add(new MyTab("首页", R.mipmap.p3_1, R.mipmap.p3_2));
        list.add(new MyTab("供应", R.mipmap.p1, R.mipmap.p1_2));
        list.add(new MyTab("品牌", R.mipmap.p3_1, R.mipmap.p3_2));
        list.add(new MyTab("个人中心", R.mipmap.p4_1, R.mipmap.p4_2));

        fly.setTabData(list);

        fly.setOnTabSelectListener(new OnTabSelectListener() {
            @Override
            public void onTabSelect(int position) {
                if (position == 0) {
                    getSupportFragmentManager().beginTransaction()
                            .replace(R.id.frame, fragment1)
                            .commit();
                } else if (position == 1) {
                    getSupportFragmentManager().beginTransaction()
                            .replace(R.id.frame, fragment2)
                            .commit();
                } else if (position == 2) {
                    getSupportFragmentManager().beginTransaction()
                            .replace(R.id.frame, fragment3)
                            .commit();
                } else if (position == 4) {
                    getSupportFragmentManager().beginTransaction()
                            .replace(R.id.frame, fragment4)
                            .commit();
                }
            }

            @Override
            public void onTabReselect(int position) {

            }
        });

        fly.showDot(1);
        fly.showMsg(2, 100);

    }
}


package com.example.flycotablayout_exe_homework.fragment;


import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.ImageView;

import com.example.flycotablayout_exe_homework.R;
import com.example.flycotablayout_exe_homework.apadter.FirstAdapter;
import com.example.flycotablayout_exe_homework.bean.Food;
import com.example.flycotablayout_exe_homework.bean.MyLoad;
import com.example.flycotablayout_exe_homework.loader.MyLoader;
import com.google.gson.Gson;
import com.lzy.okgo.OkGo;
import com.lzy.okgo.callback.StringCallback;
import com.lzy.okgo.model.Response;
import com.youth.banner.Banner;

import java.util.ArrayList;
import java.util.List;

/**
 * A simple {@link Fragment} subclass.
 */
public class FirstFragment extends Fragment {

    private List<String> piclist = new ArrayList<>();
    private List<Food.DataBean> list = new ArrayList<>();

    private String path_b = "http://api.yunzhancn.cn/api/app.interface.php?siteid=78703&itemid=2&act=ad_app";
    private String path_r = "http://www.qubaobei.com/ios/cf/dish_list.php?stage_id=1&limit=20&page=1";

    private FirstAdapter adapter;
    private ImageView sao;
    private EditText editF;
    private ImageView ren;
    private Banner banner;
    private RecyclerView recyler;

    public FirstFragment() {
        // Required empty public constructor
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View inflate = inflater.inflate(R.layout.fragment_first, container, false);

        initData();
        piclist.add("http://d.yunzhancn.cn/file/upload/201810/15/1551544578703.png");
        piclist.add("http://d.yunzhancn.cn/file/upload/201810/15/1600187078703.png");
        piclist.add("http://d.yunzhancn.cn/file/upload/201810/15/1553498278703.png");
        piclist.add("http://d.yunzhancn.cn/file/upload/201810/15/1554137178703.png");
        piclist.add("http://d.yunzhancn.cn/file/upload/201810/15/1600441978703.png");
        piclist.add("http://d.yunzhancn.cn/file/upload/201810/15/1555049578703.png");

        initView(inflate);

        return inflate;
    }

    private void initData() {

        OkGo.<String>get(path_r).execute(new StringCallback() {
            @Override
            public void onSuccess(Response<String> response) {
                list.clear();
                String body = response.body();
                Log.d("LAE", "onSuccess: " + body);
                List<Food.DataBean> data = new Gson().fromJson(body, Food.class).getData();
                list.addAll(data);
                adapter.notifyDataSetChanged();
            }
        });

    }

    private void initView(View inflate) {

        banner = (Banner) inflate.findViewById(R.id.banner);
        recyler = (RecyclerView) inflate.findViewById(R.id.recyler);

        adapter = new FirstAdapter(list, getContext());
        recyler.setAdapter(adapter);
        recyler.setLayoutManager(new GridLayoutManager(getActivity(), 4));

        banner.setImages(piclist);
        banner.setImageLoader(new MyLoader());
        banner.isAutoPlay(true);
        banner.setDelayTime(2000);
        banner.start();

    }
}

package com.example.flycotablayout_exe_homework.fragment;


import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;

import com.amap.api.maps.AMap;
import com.amap.api.maps.MapView;
import com.amap.api.maps.model.BitmapDescriptorFactory;
import com.amap.api.maps.model.LatLng;
import com.amap.api.maps.model.MarkerOptions;
import com.amap.api.maps.model.MyLocationStyle;
import com.example.flycotablayout_exe_homework.R;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FilterOutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * A simple {@link Fragment} subclass.
 */
public class ThirthFragment extends Fragment {

    private AMap aMap;
    private MapView map;
    private MyLocationStyle locationStyle;
    private Button jie;

    public ThirthFragment() {
        // Required empty public constructor
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View inflate = inflater.inflate(R.layout.fragment_thirth, container, false);
        initView(inflate, savedInstanceState);


        return inflate;
    }

    private void initView(View inflate, Bundle savedInstanceState) {
        map = (MapView) inflate.findViewById(R.id.map);
        jie = (Button) inflate.findViewById(R.id.jie);
        map.onCreate(savedInstanceState);
        if (aMap == null) {
            aMap = map.getMap();
        }

        aMap.showIndoorMap(true);
        aMap.setMapType(AMap.MAP_TYPE_SATELLITE);
        aMap.setTrafficEnabled(true);
        aMap.getUiSettings().setMyLocationButtonEnabled(true);
        LatLng latLng = new LatLng(39.906901, 116.397972);
        aMap.addMarker(new MarkerOptions()
                .position(latLng)
                .title("麻辣香锅")
                .snippet("zhangjj")
                .draggable(true)//可拖动
                .icon(BitmapDescriptorFactory.
                        fromBitmap(BitmapFactory
                                .decodeResource(getResources(), R.mipmap.plane1)))
        );
        initBlue();

        jie.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                View decorView = getActivity().getWindow().getDecorView();
                decorView.setDrawingCacheEnabled(true);
                decorView.buildDrawingCache();
                Bitmap bitmap = decorView.getDrawingCache();

                File file = new File("/sdcard/DCIM/pics/" + "IMG_" + getTimes() + ".png");
                try {
                    bitmap.compress(Bitmap.CompressFormat.PNG, 100,new FileOutputStream(file));
                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                }
            }
        });


    }

    public String getTimes() {
        Date date = new Date();
        SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd_HHmmss");
        String format1 = format.format(date);
        return format1;
    }

    private void initBlue() {
        locationStyle = new MyLocationStyle();
        locationStyle.interval(2000);
        aMap.setMyLocationStyle(locationStyle);
        aMap.setMyLocationEnabled(true);
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        map.onDestroy();
    }

    @Override
    public void onPause() {
        super.onPause();
        map.onPause();
    }

    @Override
    public void onResume() {
        super.onResume();
        map.onResume();
    }

    @Override
    public void onSaveInstanceState(@NonNull Bundle outState) {
        super.onSaveInstanceState(outState);
        map.onSaveInstanceState(outState);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值