欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

知识点总结(不定期更新)

程序员文章站 2022-06-17 19:22:04
...

1.总结一下接口回调

//接口回调
interface CallBack{
    public void solve(String ques);
}

Class A implement CallBack{
    private B b;

    public A (B b){
        this.b = b;
    }
    public void askQues(String ques){
        new Thread(new Runnable(){
            b.execute(A.this,ques);


        }).start;
    }

    //解决了问题参数肯定是anser啊!!!!!!!!!!!!!!!

    @override
    public void solve (String ques){
        SYSO("解决了问题");

    }

}

Class B{
    public void execute(CallBack callback ,String ques){
        SYSO("anser");

        //告诉A啊
        callback.solve(anser);
    }


}

Class Test{
    A a = new A(b);

    B b = new B();

    a.askQues(wenti);
}

2.//设置底部横线的宽度
int lineWidth = tabColorizer.getUnderlineWidth(mSelectedPosition);
if (lineWidth > 0) {
int linePadding = (right - left - lineWidth) / 2;
if (linePadding > 0) {
left += linePadding;
right -= linePadding;
}
}

android:hardwareAccelerated=”false”

解决webview显示速度慢的方法
http://www.cnblogs.com/xinye/p/3144139.html

3.代码优化部分
1).减少代码的重复计算

//代码重复计算
  for (int i = 0;i <list.size(); i++){

        }
 //优化之后的代码
  int length = list.size();
        for (int i = 0 ; i < length;i++){

        }

4.Log的使用,关于真机和模拟器log会出现很大差别…具体解决方式百度

5.今天要说一个非常重要的知识点 关于Fragment的创建显示一点点解析
关于setUserVisibleHint 和 onHiddenChanged 的区别
1).setUserVisibleHint 结合ViewPager使用 onHiddenChanged 结合Fragment 的hide 和 add show 使用
不在ViewPager中使用setUserVisible是不会走的
2)关于构造参数,boolean isVisibleToUser 与boolean hidden 的用法是一样的
3)关于预加载
通过 FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
来创建Fragment 是不会有预加载的问题

ViewPager的预加载问题是一定会出现的
http://blog.csdn.net/qq_21898059/article/details/51453938
采用了 重写低版本ViewPager里面的方法,但是我没有使用过.
我个人倒是觉得通过
void setUserVisibleHint(boolean isVisibleToUser)、boolean getUserVisibleHint()解决预加载是一个不错的方式
而且将这个方法使用在BaseFragment里面效果更佳 当然 如果页面中含有很多不同的Fragment,我们可以新创建一个Fragment来继承之前的BaseFragment

public abstract class BaseViewPagaerFragment extends BaseFragment {

    public View view;
    private View recy;
    public boolean isVisible;

    @Override
    public View setContentView() {
        view = LayoutInflater.from(getActivity()).inflate(R.layout.fragment_base_list, null);
        LogUtils.d("TAG",System.currentTimeMillis() + "-------setContentView");
        return view;
    }

    @Override
    public void initView() {
        recy = view.findViewById(R.id.base_recy);
    }

    @Override
    public void setUserVisibleHint(boolean isVisibleToUser) {
        super.setUserVisibleHint(isVisibleToUser);
        if (getUserVisibleHint()) {
            isVisible = true;
            onVisible();
        } else {
            isVisible = false;
            onInVisible();
        }
    }

    /**
     * fragment不可见
     */
    private void onInVisible() {


    }

    /**
     * fragment可见
     */
    private void onVisible() {
        LogUtils.d("TAG",System.currentTimeMillis() + "-----onVisible");
        onLoadData();
    }

    /**
     * 加载网络数据  初始化数据的使用
     */
    protected abstract void onLoadData();
}

让子类去重写onLoadData()方法,进行网络数据的请求.

6.关于H5页面的加载优化
最近项目用到了很多的H5页面,我一般都是用WebView控件进行加载,但是也会有一些动画效果需要展示 所以想要优化一下动画效果 以及 关于webview的内存泄漏问题