Skip to content

Generates a Java Object for your xml layout to reduce inflate time to zero

License

Notifications You must be signed in to change notification settings

DevenLu/FastLayout

 
 

Repository files navigation

FastLayout

###Generates a Java Object for your xml layout to reduce inflate time to zero

####The project methodcount is very low, because everythink happen on compile time.

###Add the dependencies main build.gradle

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        ...
		classpath 'io.fabianterhorst:fastlayout-gradle-plugin:0.0.2-alpha8'
		...
	}
}

app build.gradle

...
apply plugin: 'fastlayout'
...

###First create your layout java class This is needed to filter the layouts you want to compile

//this is compiling all layouts in layout folder
@Layouts(all = true)
//there you can specify the layouts
//@Layouts(layouts = {"activity_main", "fragment_one"})
//@Layouts(ids = {R.layout.activity_main, R.layout.fragment_one})
//this is needed when you want to use the class fields
//@Layouts
public class AppLayouts {
}

###Now use the layout inside your Activity for example

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //when you don´t wanna use the cache you can also just initiate the object
        //setContentView(new ActivityMainLayout(this));
        //The cache is reusing the object to improve the performance
        ActivityMainLayout layout = LayoutCache.getInstance(this).getLayout(LayoutCache.Activity_Main_Layout);
        setContentView(layout);
    }
}

###Limitations ##Specify a id for every view, otherwise the id is generated and can change.

About

Generates a Java Object for your xml layout to reduce inflate time to zero

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Java 87.1%
  • FreeMarker 8.9%
  • Groovy 3.6%
  • Shell 0.4%