├── .gitignore ├── .idea ├── .name ├── copyright │ └── profiles_settings.xml ├── encodings.xml ├── vcs.xml ├── modules.xml ├── SwitchLanguage.iml ├── compiler.xml ├── misc.xml └── workspace.xml ├── SwitchLanguage ├── .idea │ ├── .name │ ├── copyright │ │ └── profiles_settings.xml │ ├── encodings.xml │ ├── modules.xml │ ├── SwitchLanguage.iml │ ├── compiler.xml │ ├── misc.xml │ └── workspace.xml ├── .settings │ ├── org.eclipse.core.resources.prefs │ └── org.eclipse.jdt.core.prefs ├── bin │ ├── classes.dex │ ├── resources.ap_ │ ├── SwitchLanguage.apk │ ├── jarlist.cache │ ├── res │ │ └── crunch │ │ │ ├── drawable-hdpi │ │ │ ├── img_label.png │ │ │ └── icon_anguage.png │ │ │ ├── drawable-mdpi │ │ │ └── icon_anguage.png │ │ │ ├── drawable-xhdpi │ │ │ └── icon_anguage.png │ │ │ └── drawable-xxhdpi │ │ │ └── icon_anguage.png │ ├── dexedLibs │ │ ├── android-support-v4-73a73a99ed2405b2c392f3e1f50333c1.jar │ │ └── android-support-v4-a0baa4d5bf821448353914fecafaea7a.jar │ └── AndroidManifest.xml ├── ic_launcher-web.png ├── screenshot │ └── language.gif ├── libs │ └── android-support-v4.jar ├── res │ ├── drawable-hdpi │ │ ├── img_label.png │ │ └── icon_anguage.png │ ├── drawable-mdpi │ │ └── icon_anguage.png │ ├── drawable-xhdpi │ │ └── icon_anguage.png │ ├── drawable-xxhdpi │ │ └── icon_anguage.png │ ├── values │ │ ├── dimens.xml │ │ ├── strings.xml │ │ ├── color.xml │ │ └── styles.xml │ ├── values-en-rUS │ │ └── strings.xml │ ├── values-v11 │ │ └── styles.xml │ ├── values-zh │ │ └── strings.xml │ ├── values-v14 │ │ └── styles.xml │ ├── values-en │ │ └── strings.xml │ └── layout │ │ ├── language_item.xml │ │ └── language.xml ├── .classpath ├── project.properties ├── src │ └── com │ │ └── github │ │ ├── language │ │ ├── controller │ │ │ ├── ThreadPoolManager.java │ │ │ ├── ListViewUtils.java │ │ │ ├── UpdateLanguageUtils.java │ │ │ └── LanguageController.java │ │ └── adapter │ │ │ └── LanguageAdapter.java │ │ └── changelanguage │ │ ├── LanguageInfo.java │ │ └── LanguageActivity.java ├── proguard-project.txt ├── .project └── AndroidManifest.xml └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | *.agdai 2 | -------------------------------------------------------------------------------- /.idea/.name: -------------------------------------------------------------------------------- 1 | SwitchLanguage -------------------------------------------------------------------------------- /SwitchLanguage/.idea/.name: -------------------------------------------------------------------------------- 1 | SwitchLanguage -------------------------------------------------------------------------------- /.idea/copyright/profiles_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /SwitchLanguage/.settings/org.eclipse.core.resources.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | encoding/=UTF-8 3 | -------------------------------------------------------------------------------- /SwitchLanguage/bin/classes.dex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/git-xuhao/SwitchLanguage/HEAD/SwitchLanguage/bin/classes.dex -------------------------------------------------------------------------------- /SwitchLanguage/bin/resources.ap_: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/git-xuhao/SwitchLanguage/HEAD/SwitchLanguage/bin/resources.ap_ -------------------------------------------------------------------------------- /SwitchLanguage/ic_launcher-web.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/git-xuhao/SwitchLanguage/HEAD/SwitchLanguage/ic_launcher-web.png -------------------------------------------------------------------------------- /SwitchLanguage/.idea/copyright/profiles_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /SwitchLanguage/bin/SwitchLanguage.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/git-xuhao/SwitchLanguage/HEAD/SwitchLanguage/bin/SwitchLanguage.apk -------------------------------------------------------------------------------- /SwitchLanguage/screenshot/language.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/git-xuhao/SwitchLanguage/HEAD/SwitchLanguage/screenshot/language.gif -------------------------------------------------------------------------------- /SwitchLanguage/libs/android-support-v4.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/git-xuhao/SwitchLanguage/HEAD/SwitchLanguage/libs/android-support-v4.jar -------------------------------------------------------------------------------- /SwitchLanguage/res/drawable-hdpi/img_label.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/git-xuhao/SwitchLanguage/HEAD/SwitchLanguage/res/drawable-hdpi/img_label.png -------------------------------------------------------------------------------- /SwitchLanguage/res/drawable-hdpi/icon_anguage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/git-xuhao/SwitchLanguage/HEAD/SwitchLanguage/res/drawable-hdpi/icon_anguage.png -------------------------------------------------------------------------------- /SwitchLanguage/res/drawable-mdpi/icon_anguage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/git-xuhao/SwitchLanguage/HEAD/SwitchLanguage/res/drawable-mdpi/icon_anguage.png -------------------------------------------------------------------------------- /SwitchLanguage/res/drawable-xhdpi/icon_anguage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/git-xuhao/SwitchLanguage/HEAD/SwitchLanguage/res/drawable-xhdpi/icon_anguage.png -------------------------------------------------------------------------------- /SwitchLanguage/res/drawable-xxhdpi/icon_anguage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/git-xuhao/SwitchLanguage/HEAD/SwitchLanguage/res/drawable-xxhdpi/icon_anguage.png -------------------------------------------------------------------------------- /SwitchLanguage/bin/jarlist.cache: -------------------------------------------------------------------------------- 1 | # cache for current jar dependency. DO NOT EDIT. 2 | # format is 3 | # Encoding is UTF-8 4 | -------------------------------------------------------------------------------- /SwitchLanguage/bin/res/crunch/drawable-hdpi/img_label.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/git-xuhao/SwitchLanguage/HEAD/SwitchLanguage/bin/res/crunch/drawable-hdpi/img_label.png -------------------------------------------------------------------------------- /SwitchLanguage/bin/res/crunch/drawable-hdpi/icon_anguage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/git-xuhao/SwitchLanguage/HEAD/SwitchLanguage/bin/res/crunch/drawable-hdpi/icon_anguage.png -------------------------------------------------------------------------------- /SwitchLanguage/bin/res/crunch/drawable-mdpi/icon_anguage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/git-xuhao/SwitchLanguage/HEAD/SwitchLanguage/bin/res/crunch/drawable-mdpi/icon_anguage.png -------------------------------------------------------------------------------- /SwitchLanguage/bin/res/crunch/drawable-xhdpi/icon_anguage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/git-xuhao/SwitchLanguage/HEAD/SwitchLanguage/bin/res/crunch/drawable-xhdpi/icon_anguage.png -------------------------------------------------------------------------------- /SwitchLanguage/bin/res/crunch/drawable-xxhdpi/icon_anguage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/git-xuhao/SwitchLanguage/HEAD/SwitchLanguage/bin/res/crunch/drawable-xxhdpi/icon_anguage.png -------------------------------------------------------------------------------- /.idea/encodings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /SwitchLanguage/.idea/encodings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /SwitchLanguage/bin/dexedLibs/android-support-v4-73a73a99ed2405b2c392f3e1f50333c1.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/git-xuhao/SwitchLanguage/HEAD/SwitchLanguage/bin/dexedLibs/android-support-v4-73a73a99ed2405b2c392f3e1f50333c1.jar -------------------------------------------------------------------------------- /SwitchLanguage/bin/dexedLibs/android-support-v4-a0baa4d5bf821448353914fecafaea7a.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/git-xuhao/SwitchLanguage/HEAD/SwitchLanguage/bin/dexedLibs/android-support-v4-a0baa4d5bf821448353914fecafaea7a.jar -------------------------------------------------------------------------------- /SwitchLanguage/.settings/org.eclipse.jdt.core.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 3 | org.eclipse.jdt.core.compiler.compliance=1.6 4 | org.eclipse.jdt.core.compiler.source=1.6 5 | -------------------------------------------------------------------------------- /SwitchLanguage/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 16dp 5 | 16dp 6 | 7 | 8 | -------------------------------------------------------------------------------- /SwitchLanguage/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | SwitchSystemLanguage 5 | 6 | 下一步 7 | 请选择您的系统语言 8 | 9 | -------------------------------------------------------------------------------- /SwitchLanguage/res/values-en-rUS/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Please select your language system 6 | 7 | next 8 | 9 | 10 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /SwitchLanguage/.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /.idea/SwitchLanguage.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /SwitchLanguage/.idea/SwitchLanguage.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /SwitchLanguage/res/values-v11/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /SwitchLanguage/res/values-zh/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 切换语言demo 5 | 你好,少年!欢迎收听android干货分享 6 | 切换语言 7 | 英语 8 | 中文 9 | 跳转到另一个页面 10 | 11 | -------------------------------------------------------------------------------- /SwitchLanguage/res/values-v14/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /SwitchLanguage/res/values-en/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | SwitchLanguageDemo 5 | Hello buddy!Welcome to Android\'s skill share 6 | Switch Language 7 | English 8 | Chinese 9 | Jump to Next Activity 10 | 11 | -------------------------------------------------------------------------------- /SwitchLanguage/.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /SwitchLanguage/project.properties: -------------------------------------------------------------------------------- 1 | # This file is automatically generated by Android Tools. 2 | # Do not modify this file -- YOUR CHANGES WILL BE ERASED! 3 | # 4 | # This file must be checked in Version Control Systems. 5 | # 6 | # To customize properties used by the Ant build system edit 7 | # "ant.properties", and override values to adapt the script to your 8 | # project structure. 9 | # 10 | # To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): 11 | #proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt 12 | 13 | # Project target. 14 | target=android-21 15 | -------------------------------------------------------------------------------- /.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /SwitchLanguage/.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /SwitchLanguage/src/com/github/language/controller/ThreadPoolManager.java: -------------------------------------------------------------------------------- 1 | package com.github.language.controller; 2 | 3 | import java.util.concurrent.ExecutorService; 4 | import java.util.concurrent.Executors; 5 | 6 | /** 7 | * 线程池管理工具类 8 | */ 9 | public class ThreadPoolManager { 10 | 11 | private ExecutorService service; 12 | 13 | @SuppressWarnings("unused") 14 | private ThreadPoolManager() { 15 | int num = Runtime.getRuntime().availableProcessors(); 16 | //service = Executors.newFixedThreadPool(num * 3); 17 | service = Executors.newCachedThreadPool(); 18 | } 19 | 20 | private static final ThreadPoolManager manager = new ThreadPoolManager(); 21 | 22 | public static ThreadPoolManager getInstance() { 23 | return manager; 24 | } 25 | 26 | public void executeTask(Runnable runnable) { 27 | service.execute(runnable); 28 | } 29 | 30 | 31 | } 32 | -------------------------------------------------------------------------------- /SwitchLanguage/proguard-project.txt: -------------------------------------------------------------------------------- 1 | # To enable ProGuard in your project, edit project.properties 2 | # to define the proguard.config property as described in that file. 3 | # 4 | # Add project specific ProGuard rules here. 5 | # By default, the flags in this file are appended to flags specified 6 | # in ${sdk.dir}/tools/proguard/proguard-android.txt 7 | # You can edit the include path and order by changing the ProGuard 8 | # include property in project.properties. 9 | # 10 | # For more details, see 11 | # http://developer.android.com/guide/developing/tools/proguard.html 12 | 13 | # Add any project specific keep options here: 14 | 15 | # If your project uses WebView with JS, uncomment the following 16 | # and specify the fully qualified class name to the JavaScript interface 17 | # class: 18 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 19 | # public *; 20 | #} 21 | -------------------------------------------------------------------------------- /SwitchLanguage/res/values/color.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | #ff7200 5 | 6 | #ffffff 7 | 8 | #000000 9 | 10 | #5e5e5e 11 | 12 | #664d5a6b 13 | 14 | 15 | 16 | #EEEEEE 17 | 18 | #E8E8E8 19 | 20 | #CECECE 21 | 22 | #E5E5E5 23 | 24 | 25 | #FF3C00 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /SwitchLanguage/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | SwitchLanguage 4 | 5 | 6 | 7 | 8 | 9 | com.android.ide.eclipse.adt.ResourceManagerBuilder 10 | 11 | 12 | 13 | 14 | com.android.ide.eclipse.adt.PreCompilerBuilder 15 | 16 | 17 | 18 | 19 | org.eclipse.jdt.core.javabuilder 20 | 21 | 22 | 23 | 24 | com.android.ide.eclipse.adt.ApkBuilder 25 | 26 | 27 | 28 | 29 | 30 | com.android.ide.eclipse.adt.AndroidNature 31 | org.eclipse.jdt.core.javanature 32 | 33 | 34 | -------------------------------------------------------------------------------- /SwitchLanguage/src/com/github/changelanguage/LanguageInfo.java: -------------------------------------------------------------------------------- 1 | package com.github.changelanguage; 2 | 3 | import java.io.Serializable; 4 | import java.util.Locale; 5 | 6 | /** 7 | * Created by Xiho on 2016/2/17. 8 | */ 9 | public class LanguageInfo implements Serializable { 10 | /** 11 | * 12 | */ 13 | private static final long serialVersionUID = -4295651469724630055L; 14 | private String language; //語言類型 15 | private Locale locale; // 语言 16 | /** 17 | * @return the language 18 | */ 19 | public String getLanguage() { 20 | return language; 21 | } 22 | /** 23 | * @param language the language to set 24 | */ 25 | public void setLanguage(String language) { 26 | this.language = language; 27 | } 28 | /** 29 | * @return the locale 30 | */ 31 | public Locale getLocale() { 32 | return locale; 33 | } 34 | /** 35 | * @param locale the locale to set 36 | */ 37 | public void setLocale(Locale locale) { 38 | this.locale = locale; 39 | } 40 | 41 | 42 | } 43 | -------------------------------------------------------------------------------- /SwitchLanguage/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 14 | 15 | 16 | 19 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /SwitchLanguage/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 5 | 6 | 9 | 10 | 11 | 12 | 13 | 18 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /SwitchLanguage/bin/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 5 | 6 | 9 | 10 | 11 | 12 | 13 | 18 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 1.8 19 | 20 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /SwitchLanguage/.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 1.8 19 | 20 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # SwitchLanguage 2 | 关于我,欢迎关注~ 3 | [我的博客](http://blog.csdn.net/u011974987) 本Demo地址:[click here](http://blog.csdn.net/u011974987/article/details/50801770); 4 | * 项目描述: 5 | 本Demo主要运用于切换系统语言的功能,一般会在做出厂设置的App 会有这需求,但是Google并没有开放更改系统语言的接口,查看‘FrameWork’ 层'Settings' 源码下,有相关的功能,属于隐藏接口,所以我们利用反射机制来调用系统的API,虽然不是很靠谱,但是满足了我们的需求,我把项目整理的下,放在[GitHub](https://github.com/git-xuhao/SwitchLanguage) 上面了。 6 | 7 | * 本Demo效果截图示例如下: 8 | 9 | ![](https://github.com/git-xuhao/SwitchLanguage/raw/master/SwitchLanguage/screenshot/language.gif) 10 | 11 | 更新日志: 12 | --------- 13 | * v1.0: 14 | 初始化该项目 15 | 添加了icon。 16 | ###NOTICE!!! 17 | ---------- 18 | * 需要注意的是调用此方法: 19 | // objIActMag.updateConfiguration(config); 20 | mtdIActMag$updateConfiguration.invoke(objIActMag, config); 21 | 22 | *需要加上权限:android.permission.CHANGE_CONFIGURATION 23 | 并且此处会重新调用onCreate方法,我就在这个地方处被坑了一把。(如果调用此方法的时候做了一些逻辑,就注意下)。 24 | 25 | 最后声明: 26 | ---------------- 27 | 既然是更改系统的配置当然你的签名也应该是系统签名和sharedUserId。不然会类似以下的错误! 28 | 29 | error: 30 | ------ 31 | java.lang.SecurityException: Permission Denial: updateConfiguration() from pid=31594, uid=10099 requires android.permission.CHANGE_CONFIGURATION 32 | 33 | 各位都注意下吧~ 34 | 35 | ##Thanks! 36 | 37 | *[SwitchLanguage](https://github.com/git-xuhao/SwitchLanguage) 38 | -------------------------------------------------------------------------------- /SwitchLanguage/res/layout/language_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 11 | 12 | 17 | 18 | 25 | 26 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /SwitchLanguage/src/com/github/language/controller/ListViewUtils.java: -------------------------------------------------------------------------------- 1 | package com.github.language.controller; 2 | 3 | import java.util.List; 4 | 5 | import android.annotation.SuppressLint; 6 | import android.content.ComponentName; 7 | import android.content.Context; 8 | import android.content.Intent; 9 | import android.content.pm.PackageManager; 10 | import android.content.pm.ResolveInfo; 11 | import android.provider.Settings; 12 | import android.view.animation.AlphaAnimation; 13 | import android.view.animation.Animation; 14 | import android.view.animation.AnimationSet; 15 | import android.view.animation.LayoutAnimationController; 16 | import android.view.animation.TranslateAnimation; 17 | 18 | public class ListViewUtils { 19 | 20 | 21 | /** 22 | * listview加载的效果 23 | * 24 | */ 25 | public static LayoutAnimationController setListAnim() { 26 | AnimationSet set = new AnimationSet(true); 27 | Animation animation = new AlphaAnimation(0.0f, 1.0f); 28 | animation.setDuration(300); 29 | set.addAnimation(animation); 30 | animation = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 0.0f, 31 | Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF, 32 | -1.0f, Animation.RELATIVE_TO_SELF, 0.0f); 33 | animation.setDuration(500); 34 | set.addAnimation(animation); 35 | LayoutAnimationController controller = new LayoutAnimationController( 36 | set, 0.5f); 37 | return controller; 38 | } 39 | 40 | 41 | } 42 | -------------------------------------------------------------------------------- /SwitchLanguage/res/layout/language.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 16 | 17 | 27 | 28 | 36 | 37 | 41 | 42 |