Repository: grandcentrix/AndroidCodeStyle
Branch: master
Commit: e22ed122d697
Files: 3
Total size: 29.0 KB
Directory structure:
gitextract_5mpqgfzz/
├── README.md
├── install.sh
└── styles/
└── grandcentrix.xml
================================================
FILE CONTENTS
================================================
================================================
FILE: README.md
================================================
# Android Code Style
Code formatting rules for Android Studio
## Features
- Based on googles java code style (https://git.io/v5XuB)
- [Hungarian Notation (m-Prefix)](https://github.com/grandcentrix/AndroidCodeStyle/issues/4)
- [No star imports](https://github.com/grandcentrix/AndroidCodeStyle/issues/5) except for testing libraries
- Increase the line length to 118 (default 100)
- `android:id` after `xmlns` declaration in XML layouts
- [Keep lifecycle methods together](https://github.com/grandcentrix/AndroidCodeStyle/issues/3)
- [Keep getters and setters together](https://github.com/grandcentrix/AndroidCodeStyle/issues/7)
- Advanced code Arrangement rules for Java (Sort methods alphabetically (a-z) and by visibility (`public`-`private`))
- Inner classes (classes, interfaces, enums)
- Fields (grouped by visibility, a-z)
- [public static methods](https://github.com/grandcentrix/AndroidCodeStyle/issues/8) (a-z)
- Constructors
- [Android Lifecycle methods](https://github.com/grandcentrix/AndroidCodeStyle/issues/3) in correct order
- Methods ([grouped by visibility, a-z](https://github.com/grandcentrix/AndroidCodeStyle/issues/6))
- static methods (grouped by visibility (except public), a-z)
- Official [Kotlin Code Style](https://kotlinlang.org/docs/reference/coding-conventions.html)
## Installation on your local machine
### Automatically (the easiest way)
Just run the [`install`](install.sh) script.
It will automatically copy the latest Code Style to each existing `AndroidStudio` and `AndroidStudioPreview` version you have installed.
### Manually (the hard way)
1. Copy the [`grandcentrix.xml`](styles/grandcentrix.xml) into (MacOS) ``~/Library/Preferences/AndroidStudio{VERSION}/codestyles/`` or (Linux) ``~/.AndroidStudio{VERSION}/config/codestyles/``
2. Restart AndroidStudio
3. Select the codestyle scheme via `Preferences --> Editor --> Code Style`.
The codestyle will be enabled/used for **all projects** that are used with AndroidStudio!
## Enabling project specific code styles for a project
If the codestyle is added to the git repository and IntelliJ is configured accordingly each project can have it's own style.
1. Install the [`grandcentrix.xml`](styles/grandcentrix.xml) locally (see above)
2. Restart AndroidStudio
3. In AndroidStudio, go to `Preferences --> Editor --> Code style`
4. Open the scheme list by clicking on the `Scheme:` drop down
5. From the `Stored in the IDE` section select `grandcentrix`
6. Click the cogwheel just on the right and select `Copy to project`
7. Confirm overwriting project settings with the new scheme
Finally add the code style to the git repository:
```
git add -f .idea/codestyles/Project.xml .idea/codestyles/codeStyleConfig.xml
```
## Contributing
To contribute just change the code style locally to your needs.
Then you can create a PR to this repository.
The PR should always contain:
* Some information what have changed.
* A updated [`grandcentrix.xml`](styles/grandcentrix.xml).
## License
[CC0 1.0 Universal](https://creativecommons.org/publicdomain/zero/1.0/legalcode)
================================================
FILE: install.sh
================================================
#!/bin/bash
# Installs GCX AndroidStudio Code Style into your AndroidStudio codestyles folder.
# You can optional put a path (to your Android project) as argument.
# Then the codestyle will be only added there.
#
# Inspired by https://git.io/v7jmC
echo "Installing GCX AndroidStudio code style..."
echo ""
LATEST_CODE_STYLE="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )/styles/grandcentrix.xml"
if [ "$1" != "" ]; then
lastChar=${1: -1}
if [[ $lastChar == '/' ]]; then
TARGET_DIR=("$1.idea")
else
TARGET_DIR=("$1/.idea")
fi
else
TARGET_DIR=("$HOME/Library/Preferences/AndroidStudio*" "$HOME/Library/Preferences/AndroidStudioPreview*" \
"~/.AndroidStudio*/config" "~/.AndroidStudioPreview*/config")
fi
for target in $TARGET_DIR
do
# create codestyles dir and ...
mkdir -p ${target}/codestyles
# ... copy to latest style to ${TARGET_DIR}
echo "Copying..."
cp -frv ${LATEST_CODE_STYLE} ${target}/codestyles/
if [ "$1" != "" ]; then
echo "Renaming grandcentrix.xml to Project.xml"
mv ${target}/codestyles/grandcentrix.xml ${target}/codestyles/Project.xml
fi
done
echo ""
echo "Done."
echo "Restart AndroidStudio. Go to Preferences->Editor->Code Style and apply Scheme 'grandcentrix'."
================================================
FILE: styles/grandcentrix.xml
================================================
<code_scheme name="grandcentrix">
<option name="FIELD_NAME_PREFIX" value="m" />
<option name="STATIC_FIELD_NAME_PREFIX" value="m" />
<option name="GENERATE_FINAL_LOCALS" value="true" />
<option name="GENERATE_FINAL_PARAMETERS" value="true" />
<option name="INSERT_INNER_CLASS_IMPORTS" value="true" />
<option name="CLASS_COUNT_TO_USE_IMPORT_ON_DEMAND" value="999" />
<option name="NAMES_COUNT_TO_USE_IMPORT_ON_DEMAND" value="999" />
<option name="PACKAGES_TO_USE_IMPORT_ON_DEMAND">
<value>
<package name="org.mockito" withSubpackages="true" static="true" />
<package name="org.junit" withSubpackages="true" static="false" />
<package name="org.hamcrest" withSubpackages="true" static="true" />
<package name="org.assertj.core.api.Java6Assertions" withSubpackages="false" static="true" />
<package name="org.assertj.core.api.Assertions" withSubpackages="false" static="true" />
</value>
</option>
<option name="IMPORT_LAYOUT_TABLE">
<value>
<package name="" withSubpackages="true" static="true" />
<emptyLine />
<package name="" withSubpackages="true" static="false" />
</value>
</option>
<option name="RIGHT_MARGIN" value="118" />
<option name="JD_P_AT_EMPTY_LINES" value="false" />
<option name="JD_KEEP_EMPTY_PARAMETER" value="false" />
<option name="JD_KEEP_EMPTY_EXCEPTION" value="false" />
<option name="JD_KEEP_EMPTY_RETURN" value="false" />
<option name="JD_PRESERVE_LINE_FEEDS" value="true" />
<option name="HTML_SPACE_INSIDE_EMPTY_TAG" value="true" />
<option name="KEEP_CONTROL_STATEMENT_IN_ONE_LINE" value="false" />
<option name="KEEP_BLANK_LINES_IN_CODE" value="1" />
<option name="BLANK_LINES_AROUND_FIELD" value="1" />
<option name="BLANK_LINES_AFTER_CLASS_HEADER" value="1" />
<option name="ALIGN_MULTILINE_PARAMETERS" value="false" />
<option name="ALIGN_MULTILINE_FOR" value="false" />
<option name="CALL_PARAMETERS_WRAP" value="1" />
<option name="METHOD_PARAMETERS_WRAP" value="1" />
<option name="EXTENDS_LIST_WRAP" value="1" />
<option name="THROWS_LIST_WRAP" value="1" />
<option name="EXTENDS_KEYWORD_WRAP" value="1" />
<option name="THROWS_KEYWORD_WRAP" value="1" />
<option name="METHOD_CALL_CHAIN_WRAP" value="1" />
<option name="BINARY_OPERATION_WRAP" value="1" />
<option name="BINARY_OPERATION_SIGN_ON_NEXT_LINE" value="true" />
<option name="TERNARY_OPERATION_WRAP" value="1" />
<option name="TERNARY_OPERATION_SIGNS_ON_NEXT_LINE" value="true" />
<option name="FOR_STATEMENT_WRAP" value="1" />
<option name="ARRAY_INITIALIZER_WRAP" value="1" />
<option name="ASSIGNMENT_WRAP" value="1" />
<option name="PLACE_ASSIGNMENT_SIGN_ON_NEXT_LINE" value="true" />
<option name="WRAP_COMMENTS" value="true" />
<option name="IF_BRACE_FORCE" value="3" />
<option name="DOWHILE_BRACE_FORCE" value="3" />
<option name="WHILE_BRACE_FORCE" value="3" />
<option name="FOR_BRACE_FORCE" value="3" />
<HTMLCodeStyleSettings>
<option name="HTML_SPACE_INSIDE_EMPTY_TAG" value="true" />
</HTMLCodeStyleSettings>
<JavaCodeStyleSettings>
<option name="FIELD_NAME_PREFIX" value="m" />
<option name="STATIC_FIELD_NAME_PREFIX" value="m" />
<option name="GENERATE_FINAL_LOCALS" value="true" />
<option name="GENERATE_FINAL_PARAMETERS" value="true" />
<option name="INSERT_INNER_CLASS_IMPORTS" value="true" />
<option name="CLASS_COUNT_TO_USE_IMPORT_ON_DEMAND" value="999" />
<option name="NAMES_COUNT_TO_USE_IMPORT_ON_DEMAND" value="999" />
<option name="PACKAGES_TO_USE_IMPORT_ON_DEMAND">
<value>
<package name="org.mockito" withSubpackages="true" static="true" />
<package name="org.junit" withSubpackages="true" static="false" />
<package name="org.hamcrest" withSubpackages="true" static="true" />
<package name="org.assertj.core.api.Java6Assertions" withSubpackages="false" static="true" />
<package name="org.assertj.core.api.Assertions" withSubpackages="false" static="true" />
</value>
</option>
<option name="IMPORT_LAYOUT_TABLE">
<value>
<package name="" withSubpackages="true" static="true" />
<emptyLine />
<package name="" withSubpackages="true" static="false" />
</value>
</option>
<option name="JD_P_AT_EMPTY_LINES" value="false" />
<option name="JD_KEEP_EMPTY_PARAMETER" value="false" />
<option name="JD_KEEP_EMPTY_EXCEPTION" value="false" />
<option name="JD_KEEP_EMPTY_RETURN" value="false" />
<option name="JD_PRESERVE_LINE_FEEDS" value="true" />
</JavaCodeStyleSettings>
<JetCodeStyleSettings>
<option name="PACKAGES_TO_USE_STAR_IMPORTS">
<value>
<package name="com.nhaarman.mockito_kotlin" withSubpackages="false" static="false" />
<package name="io.mockk" withSubpackages="true" static="false" />
<package name="org.junit" withSubpackages="true" static="false" />
<package name="org.mockito" withSubpackages="true" static="false" />
<package name="org.hamcrest" withSubpackages="true" static="false" />
<package name="org.assertj.core.api.Assertions" withSubpackages="false" static="false" />
</value>
</option>
<option name="NAME_COUNT_TO_USE_STAR_IMPORT" value="2147483647" />
<option name="NAME_COUNT_TO_USE_STAR_IMPORT_FOR_MEMBERS" value="2147483647" />
<option name="IMPORT_NESTED_CLASSES" value="true" />
<option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" />
</JetCodeStyleSettings>
<Objective-C>
<option name="INDENT_NAMESPACE_MEMBERS" value="0" />
<option name="INDENT_C_STRUCT_MEMBERS" value="2" />
<option name="INDENT_CLASS_MEMBERS" value="2" />
<option name="INDENT_VISIBILITY_KEYWORDS" value="1" />
<option name="INDENT_INSIDE_CODE_BLOCK" value="2" />
<option name="KEEP_STRUCTURES_IN_ONE_LINE" value="true" />
<option name="FUNCTION_PARAMETERS_WRAP" value="5" />
<option name="FUNCTION_CALL_ARGUMENTS_WRAP" value="5" />
<option name="TEMPLATE_CALL_ARGUMENTS_WRAP" value="5" />
<option name="TEMPLATE_CALL_ARGUMENTS_ALIGN_MULTILINE" value="true" />
<option name="ALIGN_INIT_LIST_IN_COLUMNS" value="false" />
<option name="SPACE_BEFORE_SUPERCLASS_COLON" value="false" />
</Objective-C>
<Objective-C-extensions>
<extensions>
<pair source="cpp" header="h" fileNamingConvention="NONE" />
<pair source="cc" header="h" fileNamingConvention="NONE" />
<pair source="c" header="h" fileNamingConvention="NONE" />
</extensions>
</Objective-C-extensions>
<XML>
<option name="XML_LEGACY_SETTINGS_IMPORTED" value="true" />
</XML>
<codeStyleSettings language="Groovy">
<option name="KEEP_CONTROL_STATEMENT_IN_ONE_LINE" value="false" />
<option name="KEEP_BLANK_LINES_IN_CODE" value="1" />
<option name="BLANK_LINES_AROUND_FIELD" value="1" />
<option name="BLANK_LINES_AFTER_CLASS_HEADER" value="1" />
<option name="ALIGN_MULTILINE_PARAMETERS" value="false" />
<option name="ALIGN_MULTILINE_FOR" value="false" />
<option name="CALL_PARAMETERS_WRAP" value="1" />
<option name="METHOD_PARAMETERS_WRAP" value="1" />
<option name="EXTENDS_LIST_WRAP" value="1" />
<option name="THROWS_LIST_WRAP" value="1" />
<option name="EXTENDS_KEYWORD_WRAP" value="1" />
<option name="THROWS_KEYWORD_WRAP" value="1" />
<option name="METHOD_CALL_CHAIN_WRAP" value="1" />
<option name="BINARY_OPERATION_WRAP" value="1" />
<option name="TERNARY_OPERATION_WRAP" value="1" />
<option name="FOR_STATEMENT_WRAP" value="1" />
<option name="ASSIGNMENT_WRAP" value="1" />
<option name="IF_BRACE_FORCE" value="3" />
<option name="WHILE_BRACE_FORCE" value="3" />
<option name="FOR_BRACE_FORCE" value="3" />
</codeStyleSettings>
<codeStyleSettings language="JAVA">
<option name="KEEP_CONTROL_STATEMENT_IN_ONE_LINE" value="false" />
<option name="KEEP_BLANK_LINES_IN_CODE" value="1" />
<option name="BLANK_LINES_AROUND_FIELD" value="1" />
<option name="BLANK_LINES_AFTER_CLASS_HEADER" value="1" />
<option name="ALIGN_MULTILINE_PARAMETERS" value="false" />
<option name="ALIGN_MULTILINE_FOR" value="false" />
<option name="CALL_PARAMETERS_WRAP" value="1" />
<option name="METHOD_PARAMETERS_WRAP" value="1" />
<option name="EXTENDS_LIST_WRAP" value="1" />
<option name="THROWS_LIST_WRAP" value="1" />
<option name="EXTENDS_KEYWORD_WRAP" value="1" />
<option name="THROWS_KEYWORD_WRAP" value="1" />
<option name="METHOD_CALL_CHAIN_WRAP" value="1" />
<option name="BINARY_OPERATION_WRAP" value="1" />
<option name="BINARY_OPERATION_SIGN_ON_NEXT_LINE" value="true" />
<option name="TERNARY_OPERATION_WRAP" value="1" />
<option name="TERNARY_OPERATION_SIGNS_ON_NEXT_LINE" value="true" />
<option name="FOR_STATEMENT_WRAP" value="1" />
<option name="ARRAY_INITIALIZER_WRAP" value="1" />
<option name="ASSIGNMENT_WRAP" value="1" />
<option name="PLACE_ASSIGNMENT_SIGN_ON_NEXT_LINE" value="true" />
<option name="WRAP_COMMENTS" value="true" />
<option name="IF_BRACE_FORCE" value="3" />
<option name="DOWHILE_BRACE_FORCE" value="3" />
<option name="WHILE_BRACE_FORCE" value="3" />
<option name="FOR_BRACE_FORCE" value="3" />
<arrangement>
<groups>
<group>
<type>GETTERS_AND_SETTERS</type>
<order>KEEP</order>
</group>
<group>
<type>OVERRIDDEN_METHODS</type>
<order></order>
</group>
<group>
<type>DEPENDENT_METHODS</type>
<order></order>
</group>
</groups>
<rules>
<section>
<rule>
<match>
<AND>
<CLASS>true</CLASS>
<STATIC>true</STATIC>
<visibility />
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<CLASS>true</CLASS>
<visibility />
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<INTERFACE>true</INTERFACE>
<visibility />
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<ENUM>true</ENUM>
<visibility />
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<FIELD>true</FIELD>
<STATIC>true</STATIC>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<FIELD>true</FIELD>
<PUBLIC>true</PUBLIC>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<FIELD>true</FIELD>
<PROTECTED>true</PROTECTED>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<FIELD>true</FIELD>
<PACKAGE_PRIVATE>true</PACKAGE_PRIVATE>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<FIELD>true</FIELD>
<PRIVATE>true</PRIVATE>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<METHOD>true</METHOD>
<PUBLIC>true</PUBLIC>
<STATIC>true</STATIC>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<CONSTRUCTOR>true</CONSTRUCTOR>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>onAttach</NAME>
<OVERRIDDEN />
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>onCreate</NAME>
<OVERRIDDEN />
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>onCreateView</NAME>
<OVERRIDDEN />
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>onViewCreated</NAME>
<OVERRIDDEN />
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>onActivityCreated</NAME>
<OVERRIDDEN />
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>onViewStateRestored</NAME>
<OVERRIDDEN />
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>onStart</NAME>
<OVERRIDDEN />
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>onActivityResult</NAME>
<OVERRIDDEN />
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>onRestoreInstanceState</NAME>
<OVERRIDDEN />
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>onPostCreate</NAME>
<OVERRIDDEN />
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>onRestart</NAME>
<OVERRIDDEN />
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>onResume</NAME>
<OVERRIDDEN />
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>onPostResume</NAME>
<OVERRIDDEN />
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>onNewIntent</NAME>
<OVERRIDDEN />
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>onPause</NAME>
<OVERRIDDEN />
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>onStop</NAME>
<OVERRIDDEN />
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>onSaveInstanceState</NAME>
<OVERRIDDEN />
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>onRetainNonConfigurationInstance</NAME>
<OVERRIDDEN />
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>onDestroyView</NAME>
<OVERRIDDEN />
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>onDestroy</NAME>
<OVERRIDDEN />
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>onDetach</NAME>
<OVERRIDDEN />
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>onRequestPermissionsResult</NAME>
<OVERRIDDEN />
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<METHOD>true</METHOD>
<PUBLIC>true</PUBLIC>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<METHOD>true</METHOD>
<PROTECTED>true</PROTECTED>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<METHOD>true</METHOD>
<PACKAGE_PRIVATE>true</PACKAGE_PRIVATE>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<METHOD>true</METHOD>
<PRIVATE>true</PRIVATE>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<METHOD>true</METHOD>
<PROTECTED>true</PROTECTED>
<STATIC>true</STATIC>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<METHOD>true</METHOD>
<PACKAGE_PRIVATE>true</PACKAGE_PRIVATE>
<STATIC>true</STATIC>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<METHOD>true</METHOD>
<PRIVATE>true</PRIVATE>
<STATIC>true</STATIC>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
</rules>
</arrangement>
</codeStyleSettings>
<codeStyleSettings language="JSON">
<option name="KEEP_BLANK_LINES_IN_CODE" value="1" />
</codeStyleSettings>
<codeStyleSettings language="ObjectiveC">
<option name="KEEP_BLANK_LINES_BEFORE_RBRACE" value="1" />
<option name="BLANK_LINES_BEFORE_IMPORTS" value="0" />
<option name="BLANK_LINES_AFTER_IMPORTS" value="0" />
<option name="BLANK_LINES_AROUND_CLASS" value="0" />
<option name="BLANK_LINES_AROUND_METHOD" value="0" />
<option name="BLANK_LINES_AROUND_METHOD_IN_INTERFACE" value="0" />
<option name="ALIGN_MULTILINE_BINARY_OPERATION" value="false" />
<option name="BINARY_OPERATION_SIGN_ON_NEXT_LINE" value="true" />
<option name="FOR_STATEMENT_WRAP" value="1" />
<option name="ASSIGNMENT_WRAP" value="1" />
<indentOptions>
<option name="INDENT_SIZE" value="2" />
<option name="CONTINUATION_INDENT_SIZE" value="4" />
</indentOptions>
</codeStyleSettings>
<codeStyleSettings language="XML">
<indentOptions>
<option name="CONTINUATION_INDENT_SIZE" value="4" />
</indentOptions>
<arrangement>
<rules>
<section>
<rule>
<match>
<AND>
<NAME>xmlns:android</NAME>
<XML_ATTRIBUTE />
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>xmlns:.*</NAME>
<XML_ATTRIBUTE />
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*:id</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*:name</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>name</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>style</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*:layout_width</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*:layout_height</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*:layout_.*</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*:width</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*:height</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>.*</XML_NAMESPACE>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
</rules>
</arrangement>
</codeStyleSettings>
<codeStyleSettings language="kotlin">
<option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" />
<option name="KEEP_BLANK_LINES_IN_DECLARATIONS" value="1" />
<option name="KEEP_BLANK_LINES_IN_CODE" value="1" />
<option name="KEEP_BLANK_LINES_BEFORE_RBRACE" value="0" />
<option name="BLANK_LINES_AFTER_CLASS_HEADER" value="1" />
<option name="ALIGN_MULTILINE_PARAMETERS" value="false" />
</codeStyleSettings>
</code_scheme>
gitextract_5mpqgfzz/
├── README.md
├── install.sh
└── styles/
└── grandcentrix.xml
Condensed preview — 3 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (32K chars).
[
{
"path": "README.md",
"chars": 3078,
"preview": "# Android Code Style\n\nCode formatting rules for Android Studio\n\n## Features\n- Based on googles java code style (https://"
},
{
"path": "install.sh",
"chars": 1246,
"preview": "#!/bin/bash\n# Installs GCX AndroidStudio Code Style into your AndroidStudio codestyles folder.\n# You can optional put a "
},
{
"path": "styles/grandcentrix.xml",
"chars": 25408,
"preview": "<code_scheme name=\"grandcentrix\">\n <option name=\"FIELD_NAME_PREFIX\" value=\"m\" />\n <option name=\"STATIC_FIELD_NAME_PREF"
}
]
About this extraction
This page contains the full source code of the grandcentrix/AndroidCodeStyle GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 3 files (29.0 KB), approximately 7.2k tokens. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.