├── .gitignore ├── .travis.yml ├── README-cn.md ├── README.md ├── app ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ └── main │ ├── AndroidManifest.xml │ ├── java │ └── com │ │ └── jayfeng │ │ └── lesscode │ │ └── app │ │ ├── MyApp.java │ │ ├── activity │ │ ├── ActivityActivity.java │ │ ├── AppActivity.java │ │ ├── BitmapActivity.java │ │ ├── CacheActivity.java │ │ ├── DeviceActivity.java │ │ ├── DisplayActivity.java │ │ ├── DrawableActivity.java │ │ ├── EncodeActivity.java │ │ ├── FileActivity.java │ │ ├── HttpActivity.java │ │ ├── KeyboradActivity.java │ │ ├── LogActivity.java │ │ ├── MainActivity.java │ │ ├── NetworkActivity.java │ │ ├── ResourceActivity.java │ │ ├── SerializeActivity.java │ │ ├── SharedPreferenceActivity.java │ │ ├── StorageActivity.java │ │ ├── ToastActivity.java │ │ └── ViewActivity.java │ │ └── model │ │ ├── LessItem.java │ │ └── Person.java │ └── res │ ├── drawable-hdpi │ └── ic_launcher.png │ ├── drawable-mdpi │ └── ic_launcher.png │ ├── drawable-xhdpi │ ├── girl.jpg │ ├── girl2.jpg │ ├── ic_launcher.png │ └── xinru.jpg │ ├── drawable-xxhdpi │ └── ic_launcher.png │ ├── drawable │ ├── list_divider.xml │ ├── list_divider_p.xml │ └── list_item_bg.xml │ ├── layout │ ├── activity_activity.xml │ ├── activity_adapter.xml │ ├── activity_adapter_base.xml │ ├── activity_adapter_pager.xml │ ├── activity_adapter_recycler.xml │ ├── activity_app.xml │ ├── activity_bitmap.xml │ ├── activity_cache.xml │ ├── activity_device.xml │ ├── activity_display.xml │ ├── activity_drawable.xml │ ├── activity_encode.xml │ ├── activity_file.xml │ ├── activity_http.xml │ ├── activity_keyborad.xml │ ├── activity_log.xml │ ├── activity_main.xml │ ├── activity_main_list_item.xml │ ├── activity_network.xml │ ├── activity_resource.xml │ ├── activity_shared_preference.xml │ ├── activity_storage.xml │ ├── activity_toast.xml │ ├── activity_update.xml │ ├── activity_view.xml │ └── adapter_list_item_header.xml │ ├── values-w820dp │ └── dimens.xml │ └── values │ ├── colors.xml │ ├── dimens.xml │ ├── strings.xml │ └── styles.xml ├── build.gradle ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── lesscode-core ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ └── main │ ├── AndroidManifest.xml │ ├── java │ └── com │ │ └── jayfeng │ │ └── lesscode │ │ └── core │ │ ├── $.java │ │ ├── ActivityLess.java │ │ ├── AlarmLess.java │ │ ├── AppLess.java │ │ ├── ApplicationLess.java │ │ ├── BitmapLess.java │ │ ├── CacheLess.java │ │ ├── DeviceLess.java │ │ ├── DisplayLess.java │ │ ├── DrawableLess.java │ │ ├── EncodeLess.java │ │ ├── FileLess.java │ │ ├── HttpLess.java │ │ ├── ImageLess.java │ │ ├── KeyBoardLess.java │ │ ├── LogLess.java │ │ ├── NetworkLess.java │ │ ├── ResourceLess.java │ │ ├── SerializeLess.java │ │ ├── SharedPreferenceLess.java │ │ ├── StorageLess.java │ │ ├── ToastLess.java │ │ ├── ViewLess.java │ │ └── other │ │ ├── DividerItemDecoration.java │ │ ├── SpaceDividerView.java │ │ ├── ViewThrottleClickListener.java │ │ └── WeakHandler.java │ └── res │ ├── values-hdpi │ └── bools.xml │ ├── values-ldpi │ └── bools.xml │ ├── values-mdpi │ └── bools.xml │ ├── values-tvdpi │ └── bools.xml │ ├── values-xhdpi │ └── bools.xml │ ├── values-xxhdpi │ └── bools.xml │ ├── values-xxxhdpi │ └── bools.xml │ └── values │ ├── attrs_space_divider_view.xml │ └── strings.xml └── settings.gradle /.gitignore: -------------------------------------------------------------------------------- 1 | # built application files 2 | *.apk 3 | *.ap_ 4 | 5 | # files for the dex VM 6 | *.dex 7 | 8 | # Java class files 9 | *.class 10 | 11 | # generated files 12 | bin/ 13 | gen/ 14 | 15 | # Local configuration file (sdk path, etc) 16 | local.properties 17 | 18 | # Eclipse project files 19 | .classpath 20 | .project 21 | 22 | # Android Studio 23 | .idea/ 24 | .gradle 25 | /*/local.properties 26 | /*/out 27 | build 28 | /*/*/production 29 | *.iml 30 | *.iws 31 | *.ipr 32 | *~ 33 | *.swp 34 | .DS_Store 35 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: android 2 | android: 3 | components: 4 | # Uncomment the lines below if you want to 5 | # use the latest revision of Android SDK Tools 6 | # - platform-tools 7 | # - tools 8 | 9 | # The BuildTools version used by your project 10 | - tools 11 | - build-tools-23.0.2 12 | 13 | # The SDK version used to compile your project 14 | - android-23 15 | - extra-android-m2repository 16 | -------------------------------------------------------------------------------- /README-cn.md: -------------------------------------------------------------------------------- 1 | # LessCode [![Jcenter Status](https://api.bintray.com/packages/openproject/maven/lesscode/images/download.svg)](https://bintray.com/openproject/maven/lesscode) [![Build Status](https://travis-ci.org/openproject/LessCode.svg)](https://travis-ci.org/openproject/LessCode) 2 | 3 | 打造精简、高效的最好Android工具库! 4 | 5 | ## Overview 6 | 7 | > * 大量比原生更便捷的方法 8 | > * 高性能 9 | > * 易于集成 10 | > * 小体积 (60k+,开启混淆后更小) 11 | > * 开源 12 | 13 | ## Gradle 14 | 15 | ```groovy 16 | implementation 'com.jayfeng:lesscode-core:2.4.2' 17 | ``` 18 | 19 | ## Features 20 | |源码|备注| 21 | |-------|-------| 22 | |ActivityLess|Activity相关辅助类:去标题,全屏,两次退出提示,优化Overdraw背景等| 23 | |AdapterLess|打造通用的BaseAdapter,PagerAdapter,RecyclerView.Adapter等| 24 | |AlarmLess|定时器相关| 25 | |AppLess|获取应用版本,名称,签名,清理缓存等| 26 | |BitmapLess|Bitmap处理相关| 27 | |CacheLess|缓存网络请求返回的json| 28 | |DeviceLess|获取设备信息,比如mac| 29 | |DisplayLess|屏幕相关,比如dp和px的转换,状态栏或者标题栏的高度,dpi判断| 30 | |DrawableLess|通用的着色方案| 31 | |EncodeLess|md5加密| 32 | |FileLess|文件处理相关| 33 | |HttpLess|简单的Http工具类,如果是专业用途还是用其他更强大的第三方库吧| 34 | |ImageLess|图片相关| 35 | |KeyBoardLess|输入法的弹出或隐藏| 36 | |LogLess|强大的Log库| 37 | |NetworkLess|网络判断| 38 | |ResourceLess|根据资源名获取ID| 39 | |SerializeLess|序列化和反序列化| 40 | |SharedPreferenceLess|简化和增强SharedPreference的操作| 41 | |StorageLess|手机存储相关,包括:手机内存,内置存储卡(Sdcard),外置存储卡(ExtSdcard)| 42 | |ToastLess|简化Toast的使用| 43 | |UpdateLess/UpdateService|简单但完整的自动更新实现,无缝对接(已分离到LessCode-Update项目)| 44 | |ViewLess|简化繁琐的findViewById和强制转换| 45 | 46 | ## Usage 47 | 48 | ####Config 49 | * Required 50 | ```java 51 | $.getInstance() 52 | .context(getApplicationContext()) 53 | .build(); 54 | ``` 55 | 56 | * Optional 57 | ```java 58 | $.getInstance() 59 | .context(getApplicationContext()) 60 | .log(BuildConfig.DEBUG, "LESSCODE") // LogLess - debug, tag 61 | .update(null, 5) // UpdateLess - null means the default value, 5 is the notification frequent, default is 5 62 | .http(5000, 5000) // HttpLess - default connect and read timeout 63 | .build(); 64 | ``` 65 | 66 | ####Android VS LessCode 67 | 68 | * ViewLess 69 | ```java 70 | // 强制转化View类型 71 | // Before 72 | ListView listView = (ListView) findViewById(R.id.list); 73 | // After 74 | ListView listView = ViewLess.$(this, R.id.list); 75 | ``` 76 | 77 | * ActivityLess 78 | ```java 79 | // 无标题全屏 80 | // Before 81 | requestWindowFeature(Window.FEATURE_NO_TITLE); 82 | getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN); 83 | activity.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 84 | WindowManager.LayoutParams.FLAG_FULLSCREEN); 85 | // After 86 | ActivityLess.$noTitle(this); 87 | ActivityLess.$fullScreen(this); 88 | ``` 89 | 90 | ## Proguard 91 | ``` 92 | -dontwarn com.jayfeng.lesscode.** 93 | ``` 94 | 95 | See more details on the [Wiki](https://github.com/openproject/LessCode/wiki) 96 | 97 | ## Alternative libraries 98 | * [xUtils3](https://github.com/wyouflf/xUtils3) 99 | * [LiteCommon](https://github.com/litesuits/android-common) 100 | * [TrineaAndroidCommon](https://github.com/Trinea/android-common) 101 | * [AndroidUtils](https://github.com/jingle1267/android-utils) 102 | 103 | ## Author 104 | 105 | > Author weibo:冯建V    mail:673592063@qq.com    QQ:673592063 106 | 107 | ## License 108 | 109 | ``` 110 | Copyright (C) LessCode Open Source Project 111 | 112 | Licensed under the Apache License, Version 2.0 (the "License"); 113 | you may not use this file except in compliance with the License. 114 | You may obtain a copy of the License at 115 | 116 | http://www.apache.org/licenses/LICENSE-2.0 117 | 118 | Unless required by applicable law or agreed to in writing, software 119 | distributed under the License is distributed on an "AS IS" BASIS, 120 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 121 | See the License for the specific language governing permissions and 122 | limitations under the License. 123 | ``` 124 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | #### [中文版文档](https://github.com/openproject/LessCode/blob/master/README-cn.md) 2 | 3 | [![Jcenter Status](https://api.bintray.com/packages/openproject/maven/lesscode/images/download.svg)](https://bintray.com/openproject/maven/lesscode) 4 | [![Build Status](https://travis-ci.org/openproject/LessCode.svg)](https://travis-ci.org/openproject/LessCode) 5 | [![MethodCount][methodcount-svg]][methodcount-link] 6 | 7 | # LessCode 8 | less code, more efficient for android, for the best android tools library! 9 | 10 | ## Overview 11 | 12 | > * support more effective methods than android 13 | > * high performence 14 | > * easy integration 15 | > * small size (only 45k~ by proguard) 16 | > * open source 17 | 18 | ## Gradle 19 | 20 | ```groovy 21 | implementation 'com.jayfeng:lesscode-core:2.4.2' 22 | ``` 23 | 24 | ## Features 25 | |源码|备注| 26 | |-------|-------| 27 | |ActivityLess|Activity相关辅助类:去标题,全屏,两次退出提示,优化Overdraw背景等| 28 | |AdapterLess|打造通用的BaseAdapter,PagerAdapter,RecyclerView.Adapter等| 29 | |AlarmLess|定时器相关| 30 | |AppLess|获取应用版本,名称,签名,清理缓存等| 31 | |BitmapLess|Bitmap处理相关| 32 | |CacheLess|缓存网络请求返回的json| 33 | |DeviceLess|获取设备信息,比如mac| 34 | |DisplayLess|屏幕相关,比如dp和px的转换,状态栏或者标题栏的高度,dpi判断| 35 | |DrawableLess|通用的着色方案| 36 | |EncodeLess|md5加密| 37 | |FileLess|文件处理相关| 38 | |HttpLess|简单的Http工具类,如果是专业用途还是用其他更强大的第三方库吧| 39 | |ImageLess|图片相关| 40 | |KeyBoardLess|输入法的弹出或隐藏| 41 | |LogLess|强大的Log库| 42 | |NetworkLess|网络判断| 43 | |ResourceLess|根据资源名获取ID| 44 | |SerializeLess|序列化和反序列化| 45 | |SharedPreferenceLess|简化和增强SharedPreference的操作| 46 | |StorageLess|手机存储相关,包括:手机内存,内置存储卡(Sdcard),外置存储卡(ExtSdcard)| 47 | |ToastLess|简化Toast的使用| 48 | |UpdateLess/UpdateService|简单但完整的自动更新实现,无缝对接(已分离到LessCode-Update项目)| 49 | |ViewLess|简化繁琐的findViewById和强制转换| 50 | 51 | ## Usage 52 | 53 | ####Config 54 | * Required 55 | ```java 56 | $.getInstance() 57 | .context(getApplicationContext()) 58 | .build(); 59 | ``` 60 | 61 | * Optional 62 | ```java 63 | $.getInstance() 64 | .context(getApplicationContext()) 65 | .log(BuildConfig.DEBUG, "LESSCODE") // LogLess - debug, tag 66 | .update(null, 5) // UpdateLess - null means the default value, 5 is the notification frequent, default is 5 67 | .http(5000, 5000) // HttpLess - default connect and read timeout 68 | .build(); 69 | ``` 70 | 71 | ####Android VS LessCode 72 | 73 | * ViewLess 74 | ```java 75 | // 强制转化View类型 76 | // Before 77 | ListView listView = (ListView) findViewById(R.id.list); 78 | // After 79 | ListView listView = ViewLess.$(this, R.id.list); 80 | ``` 81 | 82 | * ActivityLess 83 | ```java 84 | // 无标题全屏 85 | // Before 86 | requestWindowFeature(Window.FEATURE_NO_TITLE); 87 | getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN); 88 | activity.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 89 | WindowManager.LayoutParams.FLAG_FULLSCREEN); 90 | // After 91 | ActivityLess.$noTitle(this); 92 | ActivityLess.$fullScreen(this); 93 | ``` 94 | 95 | ## Proguard 96 | ``` 97 | -dontwarn com.jayfeng.lesscode.** 98 | ``` 99 | 100 | See more details on the [Wiki](https://github.com/openproject/LessCode/wiki) 101 | 102 | ## Alternative libraries 103 | * [xUtils3](https://github.com/wyouflf/xUtils3) 104 | * [LiteCommon](https://github.com/litesuits/android-common) 105 | * [TrineaAndroidCommon](https://github.com/Trinea/android-common) 106 | * [AndroidUtils](https://github.com/jingle1267/android-utils) 107 | 108 | ## Author 109 | 110 | > Author weibo:冯建V    mail:673592063@qq.com    QQ:673592063 111 | 112 | ## License 113 | 114 | ``` 115 | Copyright (C) LessCode Open Source Project 116 | 117 | Licensed under the Apache License, Version 2.0 (the "License"); 118 | you may not use this file except in compliance with the License. 119 | You may obtain a copy of the License at 120 | 121 | http://www.apache.org/licenses/LICENSE-2.0 122 | 123 | Unless required by applicable law or agreed to in writing, software 124 | distributed under the License is distributed on an "AS IS" BASIS, 125 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 126 | See the License for the specific language governing permissions and 127 | limitations under the License. 128 | ``` 129 | [methodcount-svg]: https://img.shields.io/badge/Methodscount-717-e91e63.svg 130 | [methodcount-link]: http://www.methodscount.com/?lib=com.jayfeng%3Alesscode-core%3A0.9.6.1 131 | -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /app/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.application' 2 | 3 | android { 4 | compileSdkVersion 27 5 | buildToolsVersion '27.0.3' 6 | 7 | defaultConfig { 8 | applicationId "com.jayfeng.lesscode.app" 9 | minSdkVersion 14 10 | targetSdkVersion 27 11 | versionCode 1 12 | versionName "1.0" 13 | } 14 | buildTypes { 15 | release { 16 | minifyEnabled false 17 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 18 | } 19 | } 20 | 21 | lintOptions { 22 | abortOnError false 23 | } 24 | } 25 | 26 | dependencies { 27 | compile fileTree(include: ['*.jar'], dir: 'libs') 28 | compile project(':lesscode-core') 29 | } 30 | -------------------------------------------------------------------------------- /app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # By default, the flags in this file are appended to flags specified 3 | # in /home/jay/tools/android-sdk/tools/proguard/proguard-android.txt 4 | # You can edit the include path and order by changing the proguardFiles 5 | # directive in build.gradle. 6 | # 7 | # For more details, see 8 | # http://developer.android.com/guide/developing/tools/proguard.html 9 | 10 | # Add any project specific keep options here: 11 | 12 | # If your project uses WebView with JS, uncomment the following 13 | # and specify the fully qualified class name to the JavaScript interface 14 | # class: 15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 16 | # public *; 17 | #} 18 | -------------------------------------------------------------------------------- /app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 12 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 24 | 27 | 30 | 33 | 36 | 39 | 42 | 45 | 48 | 51 | 54 | 57 | 60 | 63 | 66 | 69 | 72 | 75 | 78 | 81 | 84 | 85 | 86 | 87 | -------------------------------------------------------------------------------- /app/src/main/java/com/jayfeng/lesscode/app/MyApp.java: -------------------------------------------------------------------------------- 1 | package com.jayfeng.lesscode.app; 2 | 3 | import android.app.Application; 4 | 5 | import com.jayfeng.lesscode.core.$; 6 | 7 | public class MyApp extends Application { 8 | 9 | @Override 10 | public void onCreate() { 11 | super.onCreate(); 12 | 13 | $.getInstance() 14 | .context(getApplicationContext()) 15 | .log(BuildConfig.DEBUG, "LESSCODE") 16 | .update(null, 4) 17 | .http(5000, 5000) 18 | .build(); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /app/src/main/java/com/jayfeng/lesscode/app/activity/ActivityActivity.java: -------------------------------------------------------------------------------- 1 | package com.jayfeng.lesscode.app.activity; 2 | 3 | import android.app.Activity; 4 | import android.os.Bundle; 5 | 6 | import com.jayfeng.lesscode.app.R; 7 | import com.jayfeng.lesscode.core.ActivityLess; 8 | 9 | public class ActivityActivity extends Activity { 10 | 11 | @Override 12 | protected void onCreate(Bundle savedInstanceState) { 13 | ActivityLess.$noTitle(this); 14 | ActivityLess.$fullScreen(this); 15 | super.onCreate(savedInstanceState); 16 | setContentView(R.layout.activity_activity); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /app/src/main/java/com/jayfeng/lesscode/app/activity/AppActivity.java: -------------------------------------------------------------------------------- 1 | package com.jayfeng.lesscode.app.activity; 2 | 3 | import android.app.Activity; 4 | import android.os.Bundle; 5 | import android.view.View; 6 | import android.widget.Button; 7 | import android.widget.EditText; 8 | 9 | import com.jayfeng.lesscode.app.R; 10 | import com.jayfeng.lesscode.core.AppLess; 11 | import com.jayfeng.lesscode.core.FileLess; 12 | import com.jayfeng.lesscode.core.StorageLess; 13 | import com.jayfeng.lesscode.core.ToastLess; 14 | import com.jayfeng.lesscode.core.ViewLess; 15 | 16 | import java.io.File; 17 | 18 | public class AppActivity extends Activity { 19 | 20 | private EditText deleteDirPathView; 21 | private Button deleteButton; 22 | 23 | @Override 24 | protected void onCreate(Bundle savedInstanceState) { 25 | super.onCreate(savedInstanceState); 26 | setContentView(R.layout.activity_app); 27 | 28 | ToastLess.$(this, "current package:" + AppLess.$running(getPackageName()) 29 | + ", else package:" + AppLess.$running("com.marriage")); 30 | 31 | deleteDirPathView = ViewLess.$(this, R.id.del_dir_path); 32 | deleteButton = ViewLess.$(this, R.id.del_dir_btn); 33 | 34 | deleteDirPathView.setText(StorageLess.Sdcard.$path().getPath() + "/test"); 35 | 36 | deleteButton.setOnClickListener(new View.OnClickListener() { 37 | @Override 38 | public void onClick(View v) { 39 | String path = deleteDirPathView.getText().toString(); 40 | File dir = new File(path); 41 | FileLess.$del(dir, true); 42 | } 43 | }); 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /app/src/main/java/com/jayfeng/lesscode/app/activity/BitmapActivity.java: -------------------------------------------------------------------------------- 1 | package com.jayfeng.lesscode.app.activity; 2 | 3 | import android.app.Activity; 4 | import android.graphics.Bitmap; 5 | import android.graphics.drawable.BitmapDrawable; 6 | import android.os.Bundle; 7 | import android.widget.ImageView; 8 | import android.widget.TextView; 9 | 10 | import com.jayfeng.lesscode.app.R; 11 | import com.jayfeng.lesscode.core.BitmapLess; 12 | import com.jayfeng.lesscode.core.DeviceLess; 13 | import com.jayfeng.lesscode.core.DisplayLess; 14 | import com.jayfeng.lesscode.core.ViewLess; 15 | 16 | public class BitmapActivity extends Activity { 17 | 18 | private ImageView roundImageView; 19 | 20 | @Override 21 | protected void onCreate(Bundle savedInstanceState) { 22 | super.onCreate(savedInstanceState); 23 | setContentView(R.layout.activity_bitmap); 24 | 25 | roundImageView = ViewLess.$(this, R.id.image_round); 26 | 27 | Bitmap bitmap = ((BitmapDrawable) getResources().getDrawable(R.drawable.girl2)).getBitmap(); 28 | bitmap = BitmapLess.$gray(bitmap, true); 29 | roundImageView.setImageBitmap(bitmap); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /app/src/main/java/com/jayfeng/lesscode/app/activity/CacheActivity.java: -------------------------------------------------------------------------------- 1 | package com.jayfeng.lesscode.app.activity; 2 | 3 | import android.app.Activity; 4 | import android.graphics.Bitmap; 5 | import android.graphics.BitmapRegionDecoder; 6 | import android.graphics.Matrix; 7 | import android.graphics.drawable.BitmapDrawable; 8 | import android.os.Bundle; 9 | import android.support.v4.util.LruCache; 10 | 11 | import com.jayfeng.lesscode.app.R; 12 | 13 | public class CacheActivity extends Activity { 14 | 15 | @Override 16 | protected void onCreate(Bundle savedInstanceState) { 17 | super.onCreate(savedInstanceState); 18 | setContentView(R.layout.activity_cache); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /app/src/main/java/com/jayfeng/lesscode/app/activity/DeviceActivity.java: -------------------------------------------------------------------------------- 1 | package com.jayfeng.lesscode.app.activity; 2 | 3 | import android.app.Activity; 4 | import android.os.Bundle; 5 | import android.os.Handler; 6 | import android.widget.TextView; 7 | 8 | import com.jayfeng.lesscode.app.R; 9 | import com.jayfeng.lesscode.core.DeviceLess; 10 | import com.jayfeng.lesscode.core.DisplayLess; 11 | import com.jayfeng.lesscode.core.ToastLess; 12 | import com.jayfeng.lesscode.core.ViewLess; 13 | 14 | public class DeviceActivity extends Activity { 15 | 16 | private TextView macView; 17 | 18 | @Override 19 | protected void onCreate(Bundle savedInstanceState) { 20 | super.onCreate(savedInstanceState); 21 | setContentView(R.layout.activity_device); 22 | 23 | macView = ViewLess.$(this, R.id.mac); 24 | macView.setText(DeviceLess.$mac()); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /app/src/main/java/com/jayfeng/lesscode/app/activity/DisplayActivity.java: -------------------------------------------------------------------------------- 1 | package com.jayfeng.lesscode.app.activity; 2 | 3 | import android.app.Activity; 4 | import android.os.Bundle; 5 | import android.os.Handler; 6 | 7 | import com.jayfeng.lesscode.app.R; 8 | import com.jayfeng.lesscode.core.DisplayLess; 9 | import com.jayfeng.lesscode.core.ToastLess; 10 | 11 | public class DisplayActivity extends Activity { 12 | 13 | @Override 14 | protected void onCreate(Bundle savedInstanceState) { 15 | super.onCreate(savedInstanceState); 16 | setContentView(R.layout.activity_display); 17 | 18 | ToastLess.$(this, DisplayLess.$width(this) + "x" + DisplayLess.$height(this)); 19 | 20 | new Handler().postDelayed(new Runnable() { 21 | @Override 22 | public void run() { 23 | ToastLess.$(DisplayActivity.this, "status bar height:" + DisplayLess.$statusBarHeight(DisplayActivity.this) 24 | + ", title bar height:" + DisplayLess.$titleBarHeight(DisplayActivity.this)); 25 | } 26 | }, 2000); 27 | ToastLess.$(this, "status bar height with reflect:" + DisplayLess.$statusBarHeight(getResources())); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /app/src/main/java/com/jayfeng/lesscode/app/activity/DrawableActivity.java: -------------------------------------------------------------------------------- 1 | package com.jayfeng.lesscode.app.activity; 2 | 3 | import android.app.Activity; 4 | import android.content.res.ColorStateList; 5 | import android.graphics.Color; 6 | import android.graphics.PorterDuff; 7 | import android.graphics.drawable.Drawable; 8 | import android.os.Bundle; 9 | import android.view.View; 10 | import android.widget.AdapterView; 11 | import android.widget.ArrayAdapter; 12 | import android.widget.ImageView; 13 | import android.widget.Spinner; 14 | 15 | import com.jayfeng.lesscode.app.R; 16 | import com.jayfeng.lesscode.core.DrawableLess; 17 | import com.jayfeng.lesscode.core.ToastLess; 18 | import com.jayfeng.lesscode.core.ViewLess; 19 | 20 | public class DrawableActivity extends Activity { 21 | 22 | private static final PorterDuff.Mode[] tintModeArray = { 23 | // PorterDuff.Mode.ADD, 24 | PorterDuff.Mode.CLEAR, 25 | PorterDuff.Mode.DARKEN, 26 | PorterDuff.Mode.DST, 27 | PorterDuff.Mode.DST_ATOP, 28 | PorterDuff.Mode.DST_IN, 29 | PorterDuff.Mode.DST_OUT, 30 | PorterDuff.Mode.DST_OVER, 31 | PorterDuff.Mode.LIGHTEN, 32 | PorterDuff.Mode.MULTIPLY, 33 | // PorterDuff.Mode.OVERLAY, 34 | PorterDuff.Mode.SCREEN, 35 | PorterDuff.Mode.SRC, 36 | PorterDuff.Mode.SRC_ATOP, 37 | PorterDuff.Mode.SRC_IN, 38 | PorterDuff.Mode.SRC_OUT, 39 | PorterDuff.Mode.SRC_OVER, 40 | PorterDuff.Mode.XOR 41 | }; 42 | 43 | private ImageView imageView; 44 | private Spinner tintModeView; 45 | 46 | private ArrayAdapter tintModeAdapter; 47 | 48 | @Override 49 | protected void onCreate(Bundle savedInstanceState) { 50 | super.onCreate(savedInstanceState); 51 | setContentView(R.layout.activity_drawable); 52 | 53 | imageView = ViewLess.$(this, R.id.image); 54 | tintModeView = ViewLess.$(this, R.id.tintMode); 55 | 56 | tintModeAdapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, tintModeArray); 57 | tintModeAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 58 | tintModeView.setAdapter(tintModeAdapter); 59 | 60 | tintModeView.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 61 | @Override 62 | public void onItemSelected(AdapterView parent, View view, int position, long id) { 63 | Drawable tintDrawable = DrawableLess.$tint( 64 | getResources().getDrawable(R.drawable.ic_launcher), 65 | ColorStateList.valueOf(Color.RED), 66 | tintModeArray[position] 67 | ); 68 | 69 | ToastLess.$(DrawableActivity.this, tintModeArray[position].name()); 70 | 71 | imageView.setImageDrawable(tintDrawable); 72 | } 73 | 74 | @Override 75 | public void onNothingSelected(AdapterView parent) { 76 | 77 | } 78 | }); 79 | 80 | } 81 | } 82 | -------------------------------------------------------------------------------- /app/src/main/java/com/jayfeng/lesscode/app/activity/EncodeActivity.java: -------------------------------------------------------------------------------- 1 | package com.jayfeng.lesscode.app.activity; 2 | 3 | import android.app.Activity; 4 | import android.os.Bundle; 5 | 6 | import com.jayfeng.lesscode.app.R; 7 | 8 | public class EncodeActivity extends Activity { 9 | 10 | @Override 11 | protected void onCreate(Bundle savedInstanceState) { 12 | super.onCreate(savedInstanceState); 13 | setContentView(R.layout.activity_encode); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /app/src/main/java/com/jayfeng/lesscode/app/activity/FileActivity.java: -------------------------------------------------------------------------------- 1 | package com.jayfeng.lesscode.app.activity; 2 | 3 | import android.app.Activity; 4 | import android.os.Bundle; 5 | 6 | import com.jayfeng.lesscode.app.R; 7 | 8 | public class FileActivity extends Activity { 9 | 10 | @Override 11 | protected void onCreate(Bundle savedInstanceState) { 12 | super.onCreate(savedInstanceState); 13 | setContentView(R.layout.activity_file); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /app/src/main/java/com/jayfeng/lesscode/app/activity/HttpActivity.java: -------------------------------------------------------------------------------- 1 | package com.jayfeng.lesscode.app.activity; 2 | 3 | import android.app.Activity; 4 | import android.os.Bundle; 5 | 6 | import com.jayfeng.lesscode.app.R; 7 | 8 | public class HttpActivity extends Activity { 9 | 10 | @Override 11 | protected void onCreate(Bundle savedInstanceState) { 12 | super.onCreate(savedInstanceState); 13 | setContentView(R.layout.activity_http); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /app/src/main/java/com/jayfeng/lesscode/app/activity/KeyboradActivity.java: -------------------------------------------------------------------------------- 1 | package com.jayfeng.lesscode.app.activity; 2 | 3 | import android.app.Activity; 4 | import android.os.Bundle; 5 | import android.view.View; 6 | import android.widget.Button; 7 | import android.widget.EditText; 8 | 9 | import com.jayfeng.lesscode.app.R; 10 | import com.jayfeng.lesscode.core.KeyBoardLess; 11 | import com.jayfeng.lesscode.core.ViewLess; 12 | 13 | public class KeyboradActivity extends Activity { 14 | 15 | private EditText editText; 16 | private Button showKeyboradButton; 17 | private Button hideKeyboradButton; 18 | 19 | @Override 20 | protected void onCreate(Bundle savedInstanceState) { 21 | super.onCreate(savedInstanceState); 22 | setContentView(R.layout.activity_keyborad); 23 | 24 | editText = ViewLess.$(this, R.id.edit); 25 | showKeyboradButton = ViewLess.$(this, R.id.show); 26 | hideKeyboradButton = ViewLess.$(this, R.id.hide); 27 | 28 | showKeyboradButton.setOnClickListener(new View.OnClickListener() { 29 | @Override 30 | public void onClick(View v) { 31 | KeyBoardLess.$show(KeyboradActivity.this, editText); 32 | } 33 | }); 34 | 35 | hideKeyboradButton.setOnClickListener(new View.OnClickListener() { 36 | @Override 37 | public void onClick(View v) { 38 | KeyBoardLess.$hide(KeyboradActivity.this, editText); 39 | } 40 | }); 41 | 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /app/src/main/java/com/jayfeng/lesscode/app/activity/LogActivity.java: -------------------------------------------------------------------------------- 1 | package com.jayfeng.lesscode.app.activity; 2 | 3 | import android.app.Activity; 4 | import android.os.Bundle; 5 | 6 | import com.jayfeng.lesscode.app.R; 7 | import com.jayfeng.lesscode.core.LogLess; 8 | 9 | public class LogActivity extends Activity { 10 | 11 | @Override 12 | protected void onCreate(Bundle savedInstanceState) { 13 | super.onCreate(savedInstanceState); 14 | setContentView(R.layout.activity_log); 15 | 16 | LogLess.$d("xxxxxxx"); 17 | LogLess.$e("yyyyy"); 18 | LogLess.$json("{\"a\":\"aValue\"}", "test"); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /app/src/main/java/com/jayfeng/lesscode/app/activity/MainActivity.java: -------------------------------------------------------------------------------- 1 | package com.jayfeng.lesscode.app.activity; 2 | 3 | import android.app.Activity; 4 | import android.os.Bundle; 5 | import android.os.Environment; 6 | import android.widget.BaseAdapter; 7 | import android.widget.ListView; 8 | 9 | import com.jayfeng.lesscode.app.R; 10 | import com.jayfeng.lesscode.app.model.LessItem; 11 | import com.jayfeng.lesscode.core.ActivityLess; 12 | import com.jayfeng.lesscode.core.HttpLess; 13 | import com.jayfeng.lesscode.core.LogLess; 14 | import com.jayfeng.lesscode.core.ToastLess; 15 | import com.jayfeng.lesscode.core.ViewLess; 16 | 17 | import java.io.File; 18 | import java.net.URLEncoder; 19 | import java.util.ArrayList; 20 | import java.util.List; 21 | 22 | 23 | public class MainActivity extends Activity { 24 | 25 | List list; 26 | 27 | ListView listView; 28 | 29 | BaseAdapter adapter; 30 | 31 | @Override 32 | protected void onCreate(Bundle savedInstanceState) { 33 | super.onCreate(savedInstanceState); 34 | 35 | setContentView(R.layout.activity_main); 36 | listView = ViewLess.$(this, R.id.listview); 37 | 38 | initData(); 39 | 40 | final File mDestDir = new File(Environment.getExternalStorageDirectory().getPath() + "/lesscode-download"); 41 | if (mDestDir.exists() && !mDestDir.isDirectory()) { 42 | mDestDir.delete(); 43 | } 44 | if (mDestDir.exists() || mDestDir.mkdirs()) { 45 | 46 | } 47 | final File mDestFile = new File(mDestDir.getPath() + "/" + URLEncoder.encode("http://www.vpngo.com/download/vpngo-release-v1.3.1-46.apk")); 48 | new Thread() { 49 | @Override 50 | public void run() { 51 | try { 52 | HttpLess.$download("http://www.vpngo.com/download/vpngo-release-v1.3.1-46.apk", mDestFile, false, new HttpLess.DownloadCallBack() { 53 | @Override 54 | public void onDownloading(int progress) { 55 | 56 | } 57 | 58 | @Override 59 | public void onDownloaded() { 60 | LogLess.$d("下载完成"); 61 | } 62 | }); 63 | } catch (Exception e) { 64 | e.printStackTrace(); 65 | LogLess.$d(e.getMessage()); 66 | } 67 | } 68 | }.start(); 69 | 70 | 71 | // adapter = AdapterLess.$base(this, list, R.layout.activity_main_list_item, 72 | // new AdapterLess.CallBack() { 73 | // @Override 74 | // public View getView(int position, View convertView, AdapterLess.ViewHolder holder, LessItem lessItem) { 75 | // TextView nameView = holder.$view(convertView, R.id.name); 76 | // nameView.setText(lessItem.getName()); 77 | // return convertView; 78 | // } 79 | // }); 80 | // listView.setAdapter(adapter); 81 | // listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 82 | // @Override 83 | // public void onItemClick(AdapterView parent, View view, int position, long id) { 84 | // Intent intent = new Intent(); 85 | // intent.setClassName(MainActivity.this, "com.jayfeng.lesscode.app.activity." + list.get(position).getClassName()); 86 | // startActivity(intent); 87 | // } 88 | // }); 89 | // 90 | // LogLess.$d("network: %s, type: %s", NetworkLess.$online(), NetworkLess.$type()); 91 | // 92 | // Person person = new Person("fengj"); 93 | // SerializeLess.$se(new File(getCacheDir(), "person").getAbsolutePath(), person); 94 | // 95 | // Person person1 = SerializeLess.$de(new File(getCacheDir(), "person").getAbsolutePath()); 96 | // ToastLess.$(this, person1.getName()); 97 | 98 | } 99 | 100 | private void initData() { 101 | list = new ArrayList<>(); 102 | 103 | LessItem lessItem = new LessItem(); 104 | lessItem.setName("ActivityLess的使用"); 105 | lessItem.setClassName("ActivityActivity"); 106 | list.add(lessItem); 107 | 108 | lessItem = new LessItem(); 109 | lessItem.setName("AppLess的使用"); 110 | lessItem.setClassName("AppActivity"); 111 | list.add(lessItem); 112 | 113 | lessItem = new LessItem(); 114 | lessItem.setName("BitmapLess的使用"); 115 | lessItem.setClassName("BitmapActivity"); 116 | list.add(lessItem); 117 | 118 | lessItem = new LessItem(); 119 | lessItem.setName("CacheLess的使用"); 120 | lessItem.setClassName("CacheActivity"); 121 | list.add(lessItem); 122 | 123 | lessItem = new LessItem(); 124 | lessItem.setName("DeviceLess的使用"); 125 | lessItem.setClassName("DeviceActivity"); 126 | list.add(lessItem); 127 | 128 | lessItem = new LessItem(); 129 | lessItem.setName("DisplayLess的使用"); 130 | lessItem.setClassName("DisplayActivity"); 131 | list.add(lessItem); 132 | 133 | lessItem = new LessItem(); 134 | lessItem.setName("DrawableLess的使用"); 135 | lessItem.setClassName("DrawableActivity"); 136 | list.add(lessItem); 137 | 138 | lessItem = new LessItem(); 139 | lessItem.setName("EncodeLess的使用"); 140 | lessItem.setClassName("EncodeActivity"); 141 | list.add(lessItem); 142 | 143 | lessItem = new LessItem(); 144 | lessItem.setName("FileLess的使用"); 145 | lessItem.setClassName("FileActivity"); 146 | list.add(lessItem); 147 | 148 | lessItem = new LessItem(); 149 | lessItem.setName("HttpLess的使用"); 150 | lessItem.setClassName("HttpActivity"); 151 | list.add(lessItem); 152 | 153 | lessItem = new LessItem(); 154 | lessItem.setName("KeyboradLess的使用"); 155 | lessItem.setClassName("KeyboradActivity"); 156 | list.add(lessItem); 157 | 158 | lessItem = new LessItem(); 159 | lessItem.setName("LogLess的使用"); 160 | lessItem.setClassName("LogActivity"); 161 | list.add(lessItem); 162 | 163 | lessItem = new LessItem(); 164 | lessItem.setName("NetworkLess的使用"); 165 | lessItem.setClassName("NetworkActivity"); 166 | list.add(lessItem); 167 | 168 | lessItem = new LessItem(); 169 | lessItem.setName("ResourceLess的使用"); 170 | lessItem.setClassName("ResourceActivity"); 171 | list.add(lessItem); 172 | 173 | lessItem = new LessItem(); 174 | lessItem.setName("SharedPreferenceLess的使用"); 175 | lessItem.setClassName("SharedPreferenceActivity"); 176 | list.add(lessItem); 177 | 178 | lessItem = new LessItem(); 179 | lessItem.setName("StorageLess的使用"); 180 | lessItem.setClassName("StorageActivity"); 181 | list.add(lessItem); 182 | 183 | lessItem = new LessItem(); 184 | lessItem.setName("ToastLess的使用"); 185 | lessItem.setClassName("ToastActivity"); 186 | list.add(lessItem); 187 | 188 | lessItem = new LessItem(); 189 | lessItem.setName("ViewLess的使用"); 190 | lessItem.setClassName("ViewActivity"); 191 | list.add(lessItem); 192 | } 193 | 194 | @Override 195 | public void onBackPressed() { 196 | if (ActivityLess.$exitTwice()) { 197 | super.onBackPressed(); 198 | } else { 199 | ToastLess.$(this, "再按一次退出程序"); 200 | } 201 | } 202 | } 203 | -------------------------------------------------------------------------------- /app/src/main/java/com/jayfeng/lesscode/app/activity/NetworkActivity.java: -------------------------------------------------------------------------------- 1 | package com.jayfeng.lesscode.app.activity; 2 | 3 | import android.app.Activity; 4 | import android.os.Bundle; 5 | 6 | import com.jayfeng.lesscode.app.R; 7 | 8 | public class NetworkActivity extends Activity { 9 | 10 | @Override 11 | protected void onCreate(Bundle savedInstanceState) { 12 | super.onCreate(savedInstanceState); 13 | setContentView(R.layout.activity_network); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /app/src/main/java/com/jayfeng/lesscode/app/activity/ResourceActivity.java: -------------------------------------------------------------------------------- 1 | package com.jayfeng.lesscode.app.activity; 2 | 3 | import android.app.Activity; 4 | import android.os.Bundle; 5 | 6 | import com.jayfeng.lesscode.app.R; 7 | 8 | public class ResourceActivity extends Activity { 9 | 10 | @Override 11 | protected void onCreate(Bundle savedInstanceState) { 12 | super.onCreate(savedInstanceState); 13 | setContentView(R.layout.activity_resource); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /app/src/main/java/com/jayfeng/lesscode/app/activity/SerializeActivity.java: -------------------------------------------------------------------------------- 1 | package com.jayfeng.lesscode.app.activity; 2 | 3 | /** 4 | * Created by fengjian on 15/7/2. 5 | */ 6 | public class SerializeActivity { 7 | } 8 | -------------------------------------------------------------------------------- /app/src/main/java/com/jayfeng/lesscode/app/activity/SharedPreferenceActivity.java: -------------------------------------------------------------------------------- 1 | package com.jayfeng.lesscode.app.activity; 2 | 3 | import android.app.Activity; 4 | import android.os.Bundle; 5 | 6 | import com.jayfeng.lesscode.app.R; 7 | import com.jayfeng.lesscode.core.LogLess; 8 | import com.jayfeng.lesscode.core.SharedPreferenceLess; 9 | 10 | public class SharedPreferenceActivity extends Activity { 11 | 12 | @Override 13 | protected void onCreate(Bundle savedInstanceState) { 14 | super.onCreate(savedInstanceState); 15 | setContentView(R.layout.activity_shared_preference); 16 | 17 | 18 | SharedPreferenceLess.$put("key1", 333); 19 | SharedPreferenceLess.$put("key2", 0.5f); 20 | SharedPreferenceLess.$put("key3", true); 21 | SharedPreferenceLess.$put("key4", 100000L); 22 | SharedPreferenceLess.$put("key5", "i am a string"); 23 | SharedPreferenceLess.$put("key5", null); 24 | 25 | LogLess.$d(SharedPreferenceLess.$get("key1", 0) + ""); 26 | LogLess.$d(SharedPreferenceLess.$get("key2", 0f) + ""); 27 | LogLess.$d(SharedPreferenceLess.$get("key3", false) + ""); 28 | LogLess.$d(SharedPreferenceLess.$get("key4", 0L) + ""); 29 | LogLess.$d(SharedPreferenceLess.$get("key5", "")); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /app/src/main/java/com/jayfeng/lesscode/app/activity/StorageActivity.java: -------------------------------------------------------------------------------- 1 | package com.jayfeng.lesscode.app.activity; 2 | 3 | import android.app.Activity; 4 | import android.os.Bundle; 5 | import android.text.format.Formatter; 6 | 7 | import com.jayfeng.lesscode.app.R; 8 | import com.jayfeng.lesscode.core.LogLess; 9 | import com.jayfeng.lesscode.core.StorageLess; 10 | import com.jayfeng.lesscode.core.ToastLess; 11 | 12 | public class StorageActivity extends Activity { 13 | 14 | @Override 15 | protected void onCreate(Bundle savedInstanceState) { 16 | super.onCreate(savedInstanceState); 17 | setContentView(R.layout.activity_storage); 18 | 19 | ToastLess.$(this, "state:" + StorageLess.Sdcard.$ready()); 20 | 21 | LogLess.$d("sdcard total:" + StorageLess.Sdcard.$total() + ", used:" + StorageLess.Sdcard.$used() + ", free:" + StorageLess.Sdcard.$free()); 22 | LogLess.$d("phone total:" + StorageLess.Phone.$total() + ", used:" + StorageLess.Phone.$used() + ", free:" + StorageLess.Phone.$free()); 23 | 24 | LogLess.$d("sdcard string total:" + StorageLess.Sdcard.$totalString(this) 25 | + ", used:" + StorageLess.Sdcard.$usedString(this) 26 | + ", free:" + StorageLess.Sdcard.$freeString(this)); 27 | 28 | if (StorageLess.ExtSdcard.$path() != null) { 29 | LogLess.$d("extSdcard string total:" + Formatter.formatFileSize(this, StorageLess.ExtSdcard.$total()) 30 | + ", used:" + Formatter.formatFileSize(this, StorageLess.ExtSdcard.$used()) 31 | + ", free:" + Formatter.formatFileSize(this, StorageLess.ExtSdcard.$free())); 32 | } else { 33 | LogLess.$d("no extSdcard."); 34 | } 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /app/src/main/java/com/jayfeng/lesscode/app/activity/ToastActivity.java: -------------------------------------------------------------------------------- 1 | package com.jayfeng.lesscode.app.activity; 2 | 3 | import android.app.Activity; 4 | import android.os.Bundle; 5 | 6 | import com.jayfeng.lesscode.app.R; 7 | import com.jayfeng.lesscode.core.ToastLess; 8 | 9 | public class ToastActivity extends Activity { 10 | 11 | @Override 12 | protected void onCreate(Bundle savedInstanceState) { 13 | super.onCreate(savedInstanceState); 14 | setContentView(R.layout.activity_toast); 15 | 16 | 17 | ToastLess.$("xxxxx"); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /app/src/main/java/com/jayfeng/lesscode/app/activity/ViewActivity.java: -------------------------------------------------------------------------------- 1 | package com.jayfeng.lesscode.app.activity; 2 | 3 | import android.app.Activity; 4 | import android.os.Bundle; 5 | import android.view.View; 6 | import android.widget.Button; 7 | 8 | import com.jayfeng.lesscode.app.R; 9 | import com.jayfeng.lesscode.core.LogLess; 10 | import com.jayfeng.lesscode.core.ViewLess; 11 | import com.jayfeng.lesscode.core.other.ViewThrottleClickListener; 12 | 13 | public class ViewActivity extends Activity { 14 | 15 | private Button normalButton; 16 | private Button throttleButton; 17 | private Button throttleLongButton; 18 | 19 | @Override 20 | protected void onCreate(Bundle savedInstanceState) { 21 | super.onCreate(savedInstanceState); 22 | setContentView(R.layout.activity_view); 23 | 24 | normalButton = ViewLess.$(this, R.id.button_normal); 25 | throttleButton = ViewLess.$(this, R.id.button_throttle); 26 | throttleLongButton = ViewLess.$(this, R.id.button_throttle_long); 27 | 28 | normalButton.setOnClickListener(new View.OnClickListener() { 29 | @Override 30 | public void onClick(View v) { 31 | LogLess.$d("normal button click"); 32 | } 33 | }); 34 | throttleButton.setOnClickListener(new ViewThrottleClickListener() { 35 | @Override 36 | public void throttleClick(View view) { 37 | LogLess.$d("throttle click"); 38 | } 39 | }); 40 | throttleLongButton.setOnClickListener(new ViewThrottleClickListener() { 41 | @Override 42 | public void throttleClick(View view) { 43 | LogLess.$d("throttle click 3s"); 44 | } 45 | 46 | @Override 47 | public long getThrottleTime() { 48 | return 3000; 49 | } 50 | }); 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /app/src/main/java/com/jayfeng/lesscode/app/model/LessItem.java: -------------------------------------------------------------------------------- 1 | package com.jayfeng.lesscode.app.model; 2 | 3 | public class LessItem { 4 | 5 | private String name; 6 | private String className; 7 | 8 | public String getName() { 9 | return name; 10 | } 11 | 12 | public void setName(String name) { 13 | this.name = name; 14 | } 15 | 16 | public String getClassName() { 17 | return className; 18 | } 19 | 20 | public void setClassName(String className) { 21 | this.className = className; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /app/src/main/java/com/jayfeng/lesscode/app/model/Person.java: -------------------------------------------------------------------------------- 1 | package com.jayfeng.lesscode.app.model; 2 | 3 | import java.io.Serializable; 4 | 5 | public class Person implements Serializable { 6 | 7 | private String name; 8 | 9 | public Person(String name) { 10 | this.name = name; 11 | } 12 | 13 | public String getName() { 14 | return name; 15 | } 16 | 17 | public void setName(String name) { 18 | this.name = name; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openproject/LessCode/a4829f8643bcd6b22eae1bd625a4bc7597b052d7/app/src/main/res/drawable-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openproject/LessCode/a4829f8643bcd6b22eae1bd625a4bc7597b052d7/app/src/main/res/drawable-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/girl.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openproject/LessCode/a4829f8643bcd6b22eae1bd625a4bc7597b052d7/app/src/main/res/drawable-xhdpi/girl.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/girl2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openproject/LessCode/a4829f8643bcd6b22eae1bd625a4bc7597b052d7/app/src/main/res/drawable-xhdpi/girl2.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openproject/LessCode/a4829f8643bcd6b22eae1bd625a4bc7597b052d7/app/src/main/res/drawable-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/xinru.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openproject/LessCode/a4829f8643bcd6b22eae1bd625a4bc7597b052d7/app/src/main/res/drawable-xhdpi/xinru.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openproject/LessCode/a4829f8643bcd6b22eae1bd625a4bc7597b052d7/app/src/main/res/drawable-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/list_divider.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/list_divider_p.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/list_item_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_activity.xml: -------------------------------------------------------------------------------- 1 | 8 | 9 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_adapter.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_adapter_base.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_adapter_pager.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_adapter_recycler.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_app.xml: -------------------------------------------------------------------------------- 1 | 8 | 9 | 15 | 16 | 20 | 21 |