我认为一些非常有用的常用类(超神)

BaseActvity: 采用 装饰着模式进行解耦 各司其职

https://github.com/luhaoaimama1/ZoneStudio/blob/master/Android_Zone_Lib/src/and/base/activity/BaseActvity.java

decorater都是 BaseActvity的父类

Pop_Zone(生命周期化):使用起来更简单

https://github.com/luhaoaimama1/ZoneStudio/blob/master/Android_Zone_Lib/src/and/base/Pop_Zone.java

使用方式

public class Pop_Bottom extends Pop_Zone implements OnClickListener{
    private Button bt_how,bt_are,bt_you;
    private Activity context;

    public Pop_Bottom(Activity activity,int showAtLocationViewId) {
        super(activity,  showAtLocationViewId);
        this.context=activity;
        setPopContentView(R.layout.pop_bottom, Mode.Wrap, -1);
    }

    @Override
    protected void findView(View mMenuView) {
        bt_how=(Button) mMenuView.findViewById(R.id.bt_how);
        bt_are=(Button) mMenuView.findViewById(R.id.bt_are);
        bt_you=(Button) mMenuView.findViewById(R.id.bt_you);
    }

    @Override
    protected void initData() {

    }

    @Override
    protected void setListener() {
        bt_how.setOnClickListener(this);
        bt_are.setOnClickListener(this);
        bt_you.setOnClickListener(this);
    }

    @Override
    protected void setLocation(View view) {
        this.showAsDropDown(view,0, 0);
    }

    @Override
    public void onClick(View v) {
        ToastUtils.showLong(context, "嘿嘿");
        dismiss();
    }

}

Fragment_Lazy懒加载:(viewpager与 hide show那种兼容)

https://github.com/luhaoaimama1/ZoneStudio/blob/master/Android_Zone_Lib/src/and/base/Fragment_Lazy.java

FragmentSwitcher:fragment切换器

https://github.com/luhaoaimama1/ZoneStudio/blob/master/Android_Zone_Lib/src/and/utils/FragmentSwitcher.java

使用方式

public class FramentSwitchAcitiviy extends FragmentActivity implements OnClickListener{

    private FragmentSwitcher fragmentSwitcher;
    @Override
    protected void onCreate(Bundle arg0) {
        super.onCreate(arg0);
        setContentView(R.layout.a_frament_switch_test);

        fragmentSwitcher=new FragmentSwitcher(this, R.id.framelayout);
        fragmentSwitcher.setPriDefaultAnimal(android.R.anim.fade_in,android.R.anim.fade_out);
//      fragmentSwitcher.initFragment(Tab1.class, Tab2.class, Tab3.class);
        Tab2 tab2 = new Tab2();
        Bundle bundle = new Bundle();
        bundle.putString("mode", "normal");
        tab2.setArguments(bundle);
        fragmentSwitcher.initFragment(new Tab1(),tab2, new Tab3());
        fragmentSwitcher.switchToNull();
//      fragmentSwitcher.switchPage(0);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.open1:
            fragmentSwitcher.switchPage(0);
            break;
        case R.id.open2:
            fragmentSwitcher.switchPage(1);
            break;
        case R.id.open3:
            fragmentSwitcher.switchPage(2);
            break;
        case R.id.open4:
            fragmentSwitcher.switchToNull();
            break;

        default:
            break;
        }
    }
}

FeaturesDecorater :采用 订阅这模式进行解耦

https://github.com/luhaoaimama1/ZoneStudio/blob/master/Android_Zone_Lib/src/and/base/activity/decorater/FeaturesDecorater.java

主要解决了:onActivityResult的问题

使用方式

public class Photo_Shot_MainActivity extends BaseActvity implements OnClickListener{
    private Feature_Pic feature_Pic;
    @Override
    public void setContentView() {
        System.err.println("Photo_Shot_MainActivity setContentView");
        setContentView(R.layout.a_photo_shot);
    }
    @Override
    public void findIDs() {

    }
    @Override
    public void initData() {

    }
    @Override
    public void setListener() {

    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.shot:
            feature_Pic.openCamera();
            break;
        case R.id.photo:
            feature_Pic.openPhotos();
            break;
        case R.id.clip:
            startActivity(new Intent(this,ClipTest.class));
            break;
        default:
            break;
        }
    }

    @Override
    protected void initFeature() {
        feature_Pic = new Feature_Pic(this) {
            @Override
            protected void getReturnedPicPath(String path) {
                System.out.println(path);
                Intent intent = new Intent(Photo_Shot_MainActivity.this,ShowPicActivity.class);
                Uri uri = Uri.parse(path);
                intent.setData(uri);
                startActivity(intent);
            }
        };
        addFeature(feature_Pic);
    }
}

ReflectCloneUtils:深克隆任何对象

  • 暂时支持 object 类 ,基础类型, 基础类型的封装类, list, Map
  • static 克隆不改变既不赋值
  • TODO final 暂时不会管 异常再说
    • 简单的枚举支持 太深层的表示没考虑过

https://github.com/luhaoaimama1/ZoneStudio/blob/master/Android_Zone_Lib/src/and/utils/reflect/ReflectCloneUtils.java

MeasureUtils:

measure:在oncreate里测量控件的大小

measureImage:这个返回 既最后展现imageview show的宽高与位置(经过scaleType marix处理后的)

https://github.com/luhaoaimama1/ZoneStudio/blob/master/Android_Zone_Lib/src/and/utils/measure/MeasureUtils.java

measure使用方式

        MeasureUtils.measure(imageGroup_zone,
                ListenerState.MEASURE_REMOVE, new OnMeasureListener() {

                    @Override
                    public void measureResult(View v, int viewWidth,
                                              int viewHeight) {
                        imageGroup_zone.setBackgroundColor(Color.WHITE);
                        for (int i = 0; i < imageGroup_zone.getChildCount(); i++) {
                            imageGroup_zone.getChild_ChildPro(i).iv.setBackgroundColor(colorArray[i % 4]);
                        }
                    }
                });

measureImage使用方式

  MeasureUtils.measureImage(iv, new MeasureUtils.ImageListener() {
                    @Override
                    public void imageShowProperty(ImageView iv,float left, float top, int imageShowX, int imageShowY) {
                        System.out.println("scaleType :"+iv.getScaleType()+"\t left:"+left+" \ttop:"+top+" \timageShowX:"+imageShowX+"\timageShowY:"+imageShowY);
                    }
                });
时间: 2024-10-25 19:18:32

我认为一些非常有用的常用类(超神)的相关文章

JAVA 常用类System以及Properties类的使用

package ioTest.io1; import java.util.Iterator; import java.util.Properties; import java.util.Set; /* * System: * API描述:public final class System extends Object * System 类包含一些有用的类字段和方法.它不能被实例化. * 在 System 类提供的设施中,有标准输入.标准输出和错误输出流:对外部定义的属性和环境变量的访问: * 加

黑马程序员—System/Runtime/Calendor系统常用类

System/Runtime/Calendor系统常用类 ---------android培训 .ava 培训  .期待与您交流! ---------- System类 System类包含一些有用的类字段和方法.它不能被实例化. 在System类提供的设施中,有标准输入.标准输出和错误输出流:对外部定义的属性和环境变量的访问:加载文件和库的方法:还有快速复制数组的一部分的实用方法. System 可以描述系统文件使用的静态方法 static PrintStream err "标准"错误

QT开发(二十七)——QT常用类(一)

QT开发(二十七)--QT常用类(一) 一.QString 1.QString简介 QString提供了Unicode编码的字符串,使用隐式共享技术来节省内存和不必要的数据拷贝,不必考虑跨平台的兼容性. QString类成员函数中除了 ascii().latin1().utf8().local8Bit()函数,其他所有的函数都是可重入的. 2.QString成员函数 QString::QString ( const QChar * unicode, int size ) QString::QSt

常用类

常用类 1.Java.util.Locale Java.util.Locale类是区域描述类,用来描述当前区域是哪个区域的. 怎么创建一个区域? //直接用类定义的常量来得到(能得到绝大多数有名的国家的语言和国家名,但朝鲜这样的小国家就只能自己用下面的方法定义了). 1.Locale lo=Locale.CHINA 2.Locale lo=new Locale("朝鲜语","朝鲜")//自己定义个区域的语言和国家名字. 两个常用的方法: 1.获得地区国家: //用当

第七章:常用类

第七章:常用类 包装类 java中有8中基本类型,对应有八种包装类作用:包装类中封装了该类型常用的属性和方法,以方便操作.byte---->Byteshort--->Shortint--->Integerlong---->Longfloat---->Floatdouble---->Doublechar---->Characterboolean---->Boolean装箱:将基本数据类型转换成包装类,经常通过构造方法完成.Integer i = new Int

异常处理、常用类

Exception Thowable分为Error.Exception RuntimeException 非检查异常,可以不用强制捕获 捕获异常 try{ 可能出现异常的代码 } catch(Exception e1){ 捕获块 } catch(Exception e2){ 捕获块 } catch(Exception e3){ 捕获块 } ......... catch(Exception en){ 捕获块 } finally{ 不管如何都会执行,一般放入资源关闭. } throws关键字 抛出

java基础教程-常用类(四)

四.常用类 4.1字符串相关的类(String StringBuffer) 4.1.1String类   4.1.2StringBuffer类(代表可变的) 解释一下可变和不可变 String s1 = “hello”; String s2 = “world”; s1+=s2; 实际上又开辟了一块内存,将hello和world copy进去,s1指向新的内存 而StringBuffer只是在s1后面增加了一块内存,把world加上,不需要copy String与StringBuffer只有这一定

2015_1_28_IO与常用类

/*日志名格式  年_月_日_内容 如2015_1_28_IO与常用类*/ ************************************************************************************************************************************************************** 日期:2015年1月 28日 主题:IO .常用类 相关文件夹:oracle/相关课件/第12章_Java

C++ 常用类 string类

===6.3.2使用string对象=== string word="I love China" *链接字符串* string description=adjective  + " " + word; _Note_: 不能连接两个字符串字面量,下面的语句是错误的 string test= "I have" + "a dream"; ===6.3.3访问字符串中的字符=== *读取字符串* getline(cin, text);