1. 程式人生 > >Tablayout+工具類+基類

Tablayout+工具類+基類

Tablayout_Viewpager
Viewpager 介面卡

package com.example.weekthree_test01.Adapter.FragmentAdapter;

import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;

import com.example.weekthree_test01.Fragment.WoDe_Fragment;
import com.example.weekthree_test01.Fragment.XinWen_Fragment;
import com.example.weekthree_test01.Fragment.TuPian_Fragment;

public class My_main_tab_FragmentAdapter extends FragmentPagerAdapter {

    private String[] main_str = new String[]{
            "圖片","新聞","我的"
    };

    public My_main_tab_FragmentAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int i) {

        switch (i){
            case 0:
                return new TuPian_Fragment();
            case 1:
                return new XinWen_Fragment();
            case 2:
                return new WoDe_Fragment();
            default: return new Fragment();
        }
    }

    @Nullable
    @Override
    public CharSequence getPageTitle(int position) {
        return main_str[position];
    }

    @Override
    public int getCount() {
        return main_str.length;
    }
}

TabLayout 與ViewPager操作

//獲取ID
		TabLayout main_tab = findViewById(R.id.main_tab);
        ViewPager main_viewpager = findViewById(R.id.main_pager);
        //新增介面卡
        main_viewpager.setAdapter(new 	My_main_tab_FragmentAdapter(getSupportFragmentManager()));
        //繫結
        main_tab.setupWithViewPager(main_viewpager);

二級取樣

 //二次取樣
    public static Bitmap scaleBitmap(String imagePath, int width, int height){
        //先得到 BitmapFactory.options
        BitmapFactory.Options options = new BitmapFactory.Options();

        //02讓他只加載邊框--說白的就是載入圖片的所有資訊 就是不載入圖片
        options.inJustDecodeBounds=true;

        //03 把資訊和圖片給這個工廠
        BitmapFactory.decodeFile(imagePath,options);

        //04 我需要 規定一下寬高 所以需要傳參寬高過來
        //就是--- 改變好寬高的一個架子
        options.inSampleSize=Math.max(options.outWidth/width,options.outHeight/height);

        //05加載出來這個圖片
        options.inJustDecodeBounds = false;

        //06 把圖片的路徑imagpath 用工廠factory給它 加上之前定義的那個規則options
        return BitmapFactory.decodeFile(imagePath,options);

    }

初始化ImageLoader

ImageLoader.getInstance().init(
                new ImageLoaderConfiguration.Builder(this)
                        .diskCacheSize(50 * 1024 * 1024)
                        .memoryCacheSizePercentage(10)
                        .defaultDisplayImageOptions(
                                new DisplayImageOptions.Builder()
                                        .cacheInMemory(true)
                                        .cacheOnDisk(true)
                                        .showImageOnLoading(R.mipmap.ic_launcher)
                                        .showImageOnFail(R.mipmap.ic_launcher)
                                        .showImageForEmptyUri(R.mipmap.ic_launcher)
                                        .display(圓形或圓角)
                                        .build()
                        )
                        .build()
        );

新增Fragment
判斷是在Activity還是Fragmen
第一個引數是佔位符的 id

getSupportFragmentManager().beginTransaction()
                    .add(R.id.left_drawer, new LeftFragment())
                    .commit();

基類Activity

public abstract class BaseActivity extends AppCompatActivity {

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        setContentView(getLayoutResId());

        //
        initView(savedInstanceState);
        initData();
    }

    protected abstract void initData();

    protected abstract void initView(Bundle saveInstanceState);

    protected abstract int getLayoutResId();
}

Fragment基類

public abstract class BaseFragment extends Fragment {
    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        return inflater.inflate(getLayoutResId(), container, false);
    }

    @Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        initView(view);
        initData();
    }

    protected abstract void initData();

    protected abstract void initView(View view);

    protected abstract int getLayoutResId();
}