没有第三方库怎么办系列1

现在Android开发门槛太低了,网络上一大堆第三方库。比如:viewpager指示器、图片加载框架Picasso、网络框架okhttp。有时候我不禁在想:没有这些第三方,我该怎么办,我还会不会开发!所以本系列博客的意义在于拨开第三方库的层层迷雾,知其然,进而知其所以然(先装个那啥。。)。其实我也是个菜鸟,只是记录下自己的想法而已。

  • 图片框架Picasso
  • viewpager的指示器indicator
  • fragment的懒加载模式

废话不多说了,先上图。
这里写图片描述

本Demo包含一下内容:

  • viewpager的指示器的原理,以及动态改变字体大小、颜色、指示器的样式
  • fragment的懒加载模式和viewpager设置缓存页面方法的配合,保证滑到哪里加哪里
  • 富文本解析html格式的String字符串达到webview的效果

indicator原理

指示器的作用就是指示当前viewpager是哪一个页面。
第一:也就是说我滑到登录页就指向登录,我滑到注册页面就指向注册,与此就可以很自然的联想到viewpager必然有滑动监听事件了。
第二:当我点击登录页button的时候,页面应该跳到登录页;注册也亦然了。

代码如下所示:

package com.xiaokun.xiusou.demo6;

import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.ImageView;
import android.widget.RadioButton;
import android.widget.RadioGroup;

import com.xiaokun.xiusou.demo6.Adapter.FragmentAdapter;
import com.xiaokun.xiusou.demo6.Fragment.TestFragment;
import com.yuyh.library.utils.log.LogUtils;

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

import butterknife.ButterKnife;
import butterknife.InjectView;

/**
 * Created by xiaocai on 2016/11/18 0018.
 */

public class PassWordActivity extends AppCompatActivity {

    @InjectView(R.id.group)
    RadioGroup group;
    @InjectView(R.id.login)
    RadioButton login;
    @InjectView(R.id.register)
    RadioButton register;
    @InjectView(R.id.mImage)
    ImageView imageView;
    @InjectView(R.id.mPager)
    ViewPager viewPager;
    List<TestFragment> testFragments = new ArrayList<TestFragment>();
    private float x;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_password);
        ButterKnife.inject(this);

        Bundle args1 = new Bundle();
        args1.putInt("color", Color.YELLOW);
        args1.putString("url", "http://app.myzaker.com/news/article" +
                ".php?pk=582ac7c99490cbed04000066&f=xsunion");
        TestFragment testFragment1 = TestFragment.newInstance(args1);

        Bundle args2 = new Bundle();
        args2.putInt("color", Color.RED);
        args2.putString("url", "http://app.myzaker.com/news/article" +
                ".php?pk=582ac7929490cbea04000075&f=xsunion");
        TestFragment testFragment2 = TestFragment.newInstance(args2);

        x = imageView.getTranslationX();
        LogUtils.d("x:" + x);
        testFragments.add(testFragment1);
        testFragments.add(testFragment2);

        viewPager.setOffscreenPageLimit(1);//设置viewpager的缓存页面,经验证设置为2即缓存3张页面
        viewPager.setAdapter(new FragmentAdapter(getSupportFragmentManager(), testFragments));
        viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int
                    positionOffsetPixels) {
                //这里最关键的地方还是positionOffset参数(k),这个参数表示当前页面向右滑动的百分比

                float imageWidth = imageView.getWidth();
                float Rsize = (float) (15 + 15 * 0.2 * (positionOffset + position));
                float Lsize = (float) (18 - 15 * 0.2 * (positionOffset + position));
                register.setTextSize(Rsize);
                login.setTextSize(Lsize);
                LogUtils.d("positionOffset:" + Rsize);
                imageView.setTranslationX(imageWidth * (position + positionOffset));
            }

            @Override
            public void onPageSelected(int position) {
                switch (position) {
                    case 0:
                        login.setTextColor(Color.parseColor("#7f7f7f"));
                        register.setTextColor(Color.parseColor("#aaaaaa"));
                        break;

                    case 1:
                        login.setTextColor(Color.parseColor("#aaaaaa"));
                        register.setTextColor(Color.parseColor("#7f7f7f"));
                        break;
                }

            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });

        login.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                imageView.setTranslationX(x);
                viewPager.setCurrentItem(0);
            }
        });

        register.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                imageView.setTranslationX(x + imageView.getWidth());
                viewPager.setCurrentItem(1);
            }
        });
    }


}

先这样后面接着写。。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值