diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..78a0eaa --- /dev/null +++ b/.travis.yml @@ -0,0 +1,15 @@ +language: android +android: + components: + # Uncomment the lines below if you want to + # use the latest revision of Android SDK Tools + # - platform-tools + # - tools + + # The BuildTools version used by your project + - tools + - build-tools-23.0.2 + + # The SDK version used to compile your project + - android-23 + - extra-android-m2repository diff --git a/README-cn.md b/README-cn.md new file mode 100644 index 0000000..2b151f5 --- /dev/null +++ b/README-cn.md @@ -0,0 +1,123 @@ +# 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) + +打造精简、高效的最好Android工具库! + +## Overview + +> * 大量比原生更便捷的方法 +> * 高性能 +> * 易于集成 +> * 小体积 (60k+,开启混淆后更小) +> * 开源 + +## Gradle + +```groovy +implementation 'com.jayfeng:lesscode-core:2.4.2' +``` + +## Features +|源码|备注| +|-------|-------| +|ActivityLess|Activity相关辅助类:去标题,全屏,两次退出提示,优化Overdraw背景等| +|AdapterLess|打造通用的BaseAdapter,PagerAdapter,RecyclerView.Adapter等| +|AlarmLess|定时器相关| +|AppLess|获取应用版本,名称,签名,清理缓存等| +|BitmapLess|Bitmap处理相关| +|CacheLess|缓存网络请求返回的json| +|DeviceLess|获取设备信息,比如mac| +|DisplayLess|屏幕相关,比如dp和px的转换,状态栏或者标题栏的高度,dpi判断| +|DrawableLess|通用的着色方案| +|EncodeLess|md5加密| +|FileLess|文件处理相关| +|HttpLess|简单的Http工具类,如果是专业用途还是用其他更强大的第三方库吧| +|ImageLess|图片相关| +|KeyBoardLess|输入法的弹出或隐藏| +|LogLess|强大的Log库| +|NetworkLess|网络判断| +|ResourceLess|根据资源名获取ID| +|SerializeLess|序列化和反序列化| +|SharedPreferenceLess|简化和增强SharedPreference的操作| +|StorageLess|手机存储相关,包括:手机内存,内置存储卡(Sdcard),外置存储卡(ExtSdcard)| +|ToastLess|简化Toast的使用| +|UpdateLess/UpdateService|简单但完整的自动更新实现,无缝对接(已分离到LessCode-Update项目)| +|ViewLess|简化繁琐的findViewById和强制转换| + +## Usage + +####Config +* Required +```java +$.getInstance() + .context(getApplicationContext()) + .build(); +``` + +* Optional +```java +$.getInstance() + .context(getApplicationContext()) + .log(BuildConfig.DEBUG, "LESSCODE") // LogLess - debug, tag + .update(null, 5) // UpdateLess - null means the default value, 5 is the notification frequent, default is 5 + .http(5000, 5000) // HttpLess - default connect and read timeout + .build(); +``` + +####Android VS LessCode + +* ViewLess +```java +// 强制转化View类型 +// Before +ListView listView = (ListView) findViewById(R.id.list); +// After +ListView listView = ViewLess.$(this, R.id.list); +``` + +* ActivityLess +```java +// 无标题全屏 +// Before +requestWindowFeature(Window.FEATURE_NO_TITLE); +getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN); + activity.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, + WindowManager.LayoutParams.FLAG_FULLSCREEN); +// After +ActivityLess.$noTitle(this); +ActivityLess.$fullScreen(this); +``` + +## Proguard +``` +-dontwarn com.jayfeng.lesscode.** +``` + +See more details on the [Wiki](https://github.com/openproject/LessCode/wiki) + +## Alternative libraries +* [xUtils3](https://github.com/wyouflf/xUtils3) +* [LiteCommon](https://github.com/litesuits/android-common) +* [TrineaAndroidCommon](https://github.com/Trinea/android-common) +* [AndroidUtils](https://github.com/jingle1267/android-utils) + +## Author + +> Author weibo:冯建V    mail:673592063@qq.com    QQ:673592063 + +## License + +``` +Copyright (C) LessCode Open Source Project + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +``` diff --git a/README.md b/README.md index 199321b..c5f87c8 100644 --- a/README.md +++ b/README.md @@ -1,26 +1,53 @@ -# LessCode [![Jcenter Status](https://api.bintray.com/packages/openproject/maven/lesscode/images/download.svg)](https://bintray.com/openproject/maven/lesscode) +#### [中文版文档](https://github.com/openproject/LessCode/blob/master/README-cn.md) -less code, more efficient for android +[![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) +[![MethodCount][methodcount-svg]][methodcount-link] + +# LessCode +less code, more efficient for android, for the best android tools library! ## Overview > * support more effective methods than android > * high performence > * easy integration -> * small size (less than 50k, only 45k+ by proguard) +> * small size (only 45k~ by proguard) > * open source ## Gradle ```groovy -compile('com.jayfeng:lesscode-core:0.9.0') { - // exclusion for update the android support jar - // for example, you can use the appcompat-v7 in your project - exclude group: 'com.android.support', module: 'support-v4' - exclude group: 'com.android.support', module: 'appcompat-v7' -} +implementation 'com.jayfeng:lesscode-core:2.4.2' ``` +## Features +|源码|备注| +|-------|-------| +|ActivityLess|Activity相关辅助类:去标题,全屏,两次退出提示,优化Overdraw背景等| +|AdapterLess|打造通用的BaseAdapter,PagerAdapter,RecyclerView.Adapter等| +|AlarmLess|定时器相关| +|AppLess|获取应用版本,名称,签名,清理缓存等| +|BitmapLess|Bitmap处理相关| +|CacheLess|缓存网络请求返回的json| +|DeviceLess|获取设备信息,比如mac| +|DisplayLess|屏幕相关,比如dp和px的转换,状态栏或者标题栏的高度,dpi判断| +|DrawableLess|通用的着色方案| +|EncodeLess|md5加密| +|FileLess|文件处理相关| +|HttpLess|简单的Http工具类,如果是专业用途还是用其他更强大的第三方库吧| +|ImageLess|图片相关| +|KeyBoardLess|输入法的弹出或隐藏| +|LogLess|强大的Log库| +|NetworkLess|网络判断| +|ResourceLess|根据资源名获取ID| +|SerializeLess|序列化和反序列化| +|SharedPreferenceLess|简化和增强SharedPreference的操作| +|StorageLess|手机存储相关,包括:手机内存,内置存储卡(Sdcard),外置存储卡(ExtSdcard)| +|ToastLess|简化Toast的使用| +|UpdateLess/UpdateService|简单但完整的自动更新实现,无缝对接(已分离到LessCode-Update项目)| +|ViewLess|简化繁琐的findViewById和强制转换| + ## Usage ####Config @@ -99,3 +126,5 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. ``` +[methodcount-svg]: https://img.shields.io/badge/Methodscount-717-e91e63.svg +[methodcount-link]: http://www.methodscount.com/?lib=com.jayfeng%3Alesscode-core%3A0.9.6.1 diff --git a/app-ref-lesscode-core/.gitignore b/app-ref-lesscode-core/.gitignore deleted file mode 100644 index 796b96d..0000000 --- a/app-ref-lesscode-core/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/build diff --git a/app-ref-lesscode-core/build.gradle b/app-ref-lesscode-core/build.gradle deleted file mode 100644 index f80e155..0000000 --- a/app-ref-lesscode-core/build.gradle +++ /dev/null @@ -1,29 +0,0 @@ -apply plugin: 'com.android.application' - -android { - compileSdkVersion 23 - buildToolsVersion "23.0.2" - - defaultConfig { - applicationId "com.jayfeng.lesscode.app.ref.lesscodecore" - minSdkVersion 9 - targetSdkVersion 23 - versionCode 1 - versionName "1.0" - } - buildTypes { - release { - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' - } - } -} - -dependencies { - compile fileTree(dir: 'libs', include: ['*.jar']) - compile 'com.android.support:appcompat-v7:23.1.1' - compile('com.jayfeng:lesscode-core:0.7.8') { - exclude group: 'com.android.support', module: 'support-v4' - exclude group: 'com.android.support', module: 'appcompat-v7' - } -} diff --git a/app-ref-lesscode-core/proguard-rules.pro b/app-ref-lesscode-core/proguard-rules.pro deleted file mode 100644 index 3ffecd2..0000000 --- a/app-ref-lesscode-core/proguard-rules.pro +++ /dev/null @@ -1,17 +0,0 @@ -# Add project specific ProGuard rules here. -# By default, the flags in this file are appended to flags specified -# in /home/jay/tools/android-sdk/tools/proguard/proguard-android.txt -# You can edit the include path and order by changing the proguardFiles -# directive in build.gradle. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html - -# Add any project specific keep options here: - -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} diff --git a/app-ref-lesscode-core/src/androidTest/java/com/jayfeng/lesscode/app/ref/lesscodecore/ApplicationTest.java b/app-ref-lesscode-core/src/androidTest/java/com/jayfeng/lesscode/app/ref/lesscodecore/ApplicationTest.java deleted file mode 100644 index 2a9b149..0000000 --- a/app-ref-lesscode-core/src/androidTest/java/com/jayfeng/lesscode/app/ref/lesscodecore/ApplicationTest.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.jayfeng.lesscode.app.ref.lesscodecore; - -import android.app.Application; -import android.test.ApplicationTestCase; - -/** - * Testing Fundamentals - */ -public class ApplicationTest extends ApplicationTestCase { - public ApplicationTest() { - super(Application.class); - } -} \ No newline at end of file diff --git a/app-ref-lesscode-core/src/main/AndroidManifest.xml b/app-ref-lesscode-core/src/main/AndroidManifest.xml deleted file mode 100644 index b52f528..0000000 --- a/app-ref-lesscode-core/src/main/AndroidManifest.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - diff --git a/app-ref-lesscode-core/src/main/java/com/jayfeng/lesscode/app/ref/lesscodecore/MainActivity.java b/app-ref-lesscode-core/src/main/java/com/jayfeng/lesscode/app/ref/lesscodecore/MainActivity.java deleted file mode 100644 index 6fcff14..0000000 --- a/app-ref-lesscode-core/src/main/java/com/jayfeng/lesscode/app/ref/lesscodecore/MainActivity.java +++ /dev/null @@ -1,66 +0,0 @@ -package com.jayfeng.lesscode.app.ref.lesscodecore; - -import android.app.Activity; -import android.os.Bundle; -import android.view.Menu; -import android.view.MenuItem; -import android.view.View; -import android.widget.TextView; - -import com.jayfeng.lesscode.core.AdapterLess; -import com.jayfeng.lesscode.core.ToastLess; -import com.jayfeng.lesscode.core.ViewLess; - -import java.util.ArrayList; -import java.util.List; - - -public class MainActivity extends Activity { - - private TextView textView; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_main); - - textView = ViewLess.$(this, R.id.text); - - ToastLess.$(this, textView.getText().toString()); - - List list = new ArrayList<>(); - list.add("A"); - list.add("B"); - - - AdapterLess.$pager(this, list, R.layout.activity_main, new AdapterLess.PageCallBack() { - @Override - public void instantiateItem(int i, View view, Object o) { - - } - }); - } - - - @Override - public boolean onCreateOptionsMenu(Menu menu) { - // Inflate the menu; this adds items to the action bar if it is present. - getMenuInflater().inflate(R.menu.menu_main, menu); - return true; - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - // Handle action bar item clicks here. The action bar will - // automatically handle clicks on the Home/Up button, so long - // as you specify a parent activity in AndroidManifest.xml. - int id = item.getItemId(); - - //noinspection SimplifiableIfStatement - if (id == R.id.action_settings) { - return true; - } - - return super.onOptionsItemSelected(item); - } -} diff --git a/app-ref-lesscode-core/src/main/res/layout/activity_main.xml b/app-ref-lesscode-core/src/main/res/layout/activity_main.xml deleted file mode 100644 index cb4b9cb..0000000 --- a/app-ref-lesscode-core/src/main/res/layout/activity_main.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - diff --git a/app-ref-lesscode-core/src/main/res/menu/menu_main.xml b/app-ref-lesscode-core/src/main/res/menu/menu_main.xml deleted file mode 100644 index c24a41e..0000000 --- a/app-ref-lesscode-core/src/main/res/menu/menu_main.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - diff --git a/app-ref-lesscode-core/src/main/res/mipmap-hdpi/ic_launcher.png b/app-ref-lesscode-core/src/main/res/mipmap-hdpi/ic_launcher.png deleted file mode 100644 index cde69bc..0000000 Binary files a/app-ref-lesscode-core/src/main/res/mipmap-hdpi/ic_launcher.png and /dev/null differ diff --git a/app-ref-lesscode-core/src/main/res/mipmap-mdpi/ic_launcher.png b/app-ref-lesscode-core/src/main/res/mipmap-mdpi/ic_launcher.png deleted file mode 100644 index c133a0c..0000000 Binary files a/app-ref-lesscode-core/src/main/res/mipmap-mdpi/ic_launcher.png and /dev/null differ diff --git a/app-ref-lesscode-core/src/main/res/mipmap-xhdpi/ic_launcher.png b/app-ref-lesscode-core/src/main/res/mipmap-xhdpi/ic_launcher.png deleted file mode 100644 index bfa42f0..0000000 Binary files a/app-ref-lesscode-core/src/main/res/mipmap-xhdpi/ic_launcher.png and /dev/null differ diff --git a/app-ref-lesscode-core/src/main/res/mipmap-xxhdpi/ic_launcher.png b/app-ref-lesscode-core/src/main/res/mipmap-xxhdpi/ic_launcher.png deleted file mode 100644 index 324e72c..0000000 Binary files a/app-ref-lesscode-core/src/main/res/mipmap-xxhdpi/ic_launcher.png and /dev/null differ diff --git a/app-ref-lesscode-core/src/main/res/values-w820dp/dimens.xml b/app-ref-lesscode-core/src/main/res/values-w820dp/dimens.xml deleted file mode 100644 index 63fc816..0000000 --- a/app-ref-lesscode-core/src/main/res/values-w820dp/dimens.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - 64dp - diff --git a/app-ref-lesscode-core/src/main/res/values/dimens.xml b/app-ref-lesscode-core/src/main/res/values/dimens.xml deleted file mode 100644 index 47c8224..0000000 --- a/app-ref-lesscode-core/src/main/res/values/dimens.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - 16dp - 16dp - diff --git a/app-ref-lesscode-core/src/main/res/values/strings.xml b/app-ref-lesscode-core/src/main/res/values/strings.xml deleted file mode 100644 index 8878ed6..0000000 --- a/app-ref-lesscode-core/src/main/res/values/strings.xml +++ /dev/null @@ -1,6 +0,0 @@ - - AppRef-LesscodeCore - - Hello world! - Settings - diff --git a/app-ref-lesscode-core/src/main/res/values/styles.xml b/app-ref-lesscode-core/src/main/res/values/styles.xml deleted file mode 100644 index 9812b28..0000000 --- a/app-ref-lesscode-core/src/main/res/values/styles.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - diff --git a/app/build.gradle b/app/build.gradle index f0b6b51..3384bef 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,13 +1,13 @@ apply plugin: 'com.android.application' android { - compileSdkVersion 23 - buildToolsVersion "23.0.2" + compileSdkVersion 27 + buildToolsVersion '27.0.3' defaultConfig { applicationId "com.jayfeng.lesscode.app" - minSdkVersion 9 - targetSdkVersion 21 + minSdkVersion 14 + targetSdkVersion 27 versionCode 1 versionName "1.0" } @@ -17,6 +17,10 @@ android { proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } + + lintOptions { + abortOnError false + } } dependencies { diff --git a/app/src/androidTest/java/com/jayfeng/lesscode/app/ApplicationTest.java b/app/src/androidTest/java/com/jayfeng/lesscode/app/ApplicationTest.java deleted file mode 100644 index c8260ef..0000000 --- a/app/src/androidTest/java/com/jayfeng/lesscode/app/ApplicationTest.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.jayfeng.lesscode.app; - -import android.app.Application; -import android.test.ApplicationTestCase; - -/** - * Testing Fundamentals - */ -public class ApplicationTest extends ApplicationTestCase { - public ApplicationTest() { - super(Application.class); - } -} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 4f2c759..dfbd8b5 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -6,7 +6,6 @@ @@ -25,9 +24,6 @@ - @@ -37,9 +33,6 @@ - @@ -85,6 +78,9 @@ + diff --git a/app/src/main/java/com/jayfeng/lesscode/app/activity/AdapterActivity.java b/app/src/main/java/com/jayfeng/lesscode/app/activity/AdapterActivity.java deleted file mode 100644 index b581a68..0000000 --- a/app/src/main/java/com/jayfeng/lesscode/app/activity/AdapterActivity.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.jayfeng.lesscode.app.activity; - -import android.app.Activity; -import android.content.Intent; -import android.os.Bundle; -import android.view.View; -import android.widget.AdapterView; -import android.widget.BaseAdapter; -import android.widget.ListView; -import android.widget.TextView; - -import com.jayfeng.lesscode.app.R; -import com.jayfeng.lesscode.app.model.LessItem; -import com.jayfeng.lesscode.core.AdapterLess; -import com.jayfeng.lesscode.core.ViewLess; - -import java.util.ArrayList; -import java.util.List; - -public class AdapterActivity extends Activity { - - List list; - ListView listView; - BaseAdapter adapter; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_adapter); - - listView = ViewLess.$(this, R.id.listview); - - initData(); - - adapter = AdapterLess.$base(this, list, R.layout.activity_main_list_item, - new AdapterLess.CallBack() { - @Override - public View getView(int position, View convertView, AdapterLess.ViewHolder holder, LessItem lessItem) { - TextView nameView = holder.$view(convertView, R.id.name); - nameView.setText(lessItem.getName()); - return convertView; - } - }); - listView.setAdapter(adapter); - listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - Intent intent = new Intent(); - intent.setClassName(AdapterActivity.this, "com.jayfeng.lesscode.app.activity.adapterless." + list.get(position).getClassName()); - startActivity(intent); - } - }); - } - - private void initData() { - list = new ArrayList<>(); - - LessItem lessItem = new LessItem(); - lessItem.setName("AdapterLess.$base的使用"); - lessItem.setClassName("BaseAdapterActivity"); - list.add(lessItem); - - lessItem = new LessItem(); - lessItem.setName("AdapterLess.$pager的使用"); - lessItem.setClassName("PagerAdapterActivity"); - list.add(lessItem); - - lessItem = new LessItem(); - lessItem.setName("AdapterLess.$recycler的使用"); - lessItem.setClassName("RecyclerAdapterActivity"); - list.add(lessItem); - } - -} diff --git a/app/src/main/java/com/jayfeng/lesscode/app/activity/BitmapActivity.java b/app/src/main/java/com/jayfeng/lesscode/app/activity/BitmapActivity.java new file mode 100644 index 0000000..704d696 --- /dev/null +++ b/app/src/main/java/com/jayfeng/lesscode/app/activity/BitmapActivity.java @@ -0,0 +1,31 @@ +package com.jayfeng.lesscode.app.activity; + +import android.app.Activity; +import android.graphics.Bitmap; +import android.graphics.drawable.BitmapDrawable; +import android.os.Bundle; +import android.widget.ImageView; +import android.widget.TextView; + +import com.jayfeng.lesscode.app.R; +import com.jayfeng.lesscode.core.BitmapLess; +import com.jayfeng.lesscode.core.DeviceLess; +import com.jayfeng.lesscode.core.DisplayLess; +import com.jayfeng.lesscode.core.ViewLess; + +public class BitmapActivity extends Activity { + + private ImageView roundImageView; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_bitmap); + + roundImageView = ViewLess.$(this, R.id.image_round); + + Bitmap bitmap = ((BitmapDrawable) getResources().getDrawable(R.drawable.girl2)).getBitmap(); + bitmap = BitmapLess.$gray(bitmap, true); + roundImageView.setImageBitmap(bitmap); + } +} diff --git a/app/src/main/java/com/jayfeng/lesscode/app/activity/CacheActivity.java b/app/src/main/java/com/jayfeng/lesscode/app/activity/CacheActivity.java index ecdf664..669693d 100644 --- a/app/src/main/java/com/jayfeng/lesscode/app/activity/CacheActivity.java +++ b/app/src/main/java/com/jayfeng/lesscode/app/activity/CacheActivity.java @@ -1,7 +1,12 @@ package com.jayfeng.lesscode.app.activity; import android.app.Activity; +import android.graphics.Bitmap; +import android.graphics.BitmapRegionDecoder; +import android.graphics.Matrix; +import android.graphics.drawable.BitmapDrawable; import android.os.Bundle; +import android.support.v4.util.LruCache; import com.jayfeng.lesscode.app.R; diff --git a/app/src/main/java/com/jayfeng/lesscode/app/activity/DisplayActivity.java b/app/src/main/java/com/jayfeng/lesscode/app/activity/DisplayActivity.java index 27f0b24..6470ea4 100644 --- a/app/src/main/java/com/jayfeng/lesscode/app/activity/DisplayActivity.java +++ b/app/src/main/java/com/jayfeng/lesscode/app/activity/DisplayActivity.java @@ -15,6 +15,7 @@ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_display); + ToastLess.$(this, DisplayLess.$width(this) + "x" + DisplayLess.$height(this)); new Handler().postDelayed(new Runnable() { @Override diff --git a/app/src/main/java/com/jayfeng/lesscode/app/activity/DrawableActivity.java b/app/src/main/java/com/jayfeng/lesscode/app/activity/DrawableActivity.java index 800cc86..b04f197 100644 --- a/app/src/main/java/com/jayfeng/lesscode/app/activity/DrawableActivity.java +++ b/app/src/main/java/com/jayfeng/lesscode/app/activity/DrawableActivity.java @@ -6,18 +6,13 @@ import android.graphics.PorterDuff; import android.graphics.drawable.Drawable; import android.os.Bundle; -import android.support.v4.graphics.drawable.DrawableCompat; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; -import android.widget.BaseAdapter; -import android.widget.Button; import android.widget.ImageView; import android.widget.Spinner; import com.jayfeng.lesscode.app.R; -import com.jayfeng.lesscode.core.AdapterLess; -import com.jayfeng.lesscode.core.AppLess; import com.jayfeng.lesscode.core.DrawableLess; import com.jayfeng.lesscode.core.ToastLess; import com.jayfeng.lesscode.core.ViewLess; diff --git a/app/src/main/java/com/jayfeng/lesscode/app/activity/KeyboradActivity.java b/app/src/main/java/com/jayfeng/lesscode/app/activity/KeyboradActivity.java index a1612bd..e9dd8d7 100644 --- a/app/src/main/java/com/jayfeng/lesscode/app/activity/KeyboradActivity.java +++ b/app/src/main/java/com/jayfeng/lesscode/app/activity/KeyboradActivity.java @@ -2,14 +2,42 @@ import android.app.Activity; import android.os.Bundle; +import android.view.View; +import android.widget.Button; +import android.widget.EditText; import com.jayfeng.lesscode.app.R; +import com.jayfeng.lesscode.core.KeyBoardLess; +import com.jayfeng.lesscode.core.ViewLess; public class KeyboradActivity extends Activity { + private EditText editText; + private Button showKeyboradButton; + private Button hideKeyboradButton; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_keyborad); + + editText = ViewLess.$(this, R.id.edit); + showKeyboradButton = ViewLess.$(this, R.id.show); + hideKeyboradButton = ViewLess.$(this, R.id.hide); + + showKeyboradButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + KeyBoardLess.$show(KeyboradActivity.this, editText); + } + }); + + hideKeyboradButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + KeyBoardLess.$hide(KeyboradActivity.this, editText); + } + }); + } } diff --git a/app/src/main/java/com/jayfeng/lesscode/app/activity/MainActivity.java b/app/src/main/java/com/jayfeng/lesscode/app/activity/MainActivity.java index 75e784b..8e12900 100644 --- a/app/src/main/java/com/jayfeng/lesscode/app/activity/MainActivity.java +++ b/app/src/main/java/com/jayfeng/lesscode/app/activity/MainActivity.java @@ -1,27 +1,21 @@ package com.jayfeng.lesscode.app.activity; import android.app.Activity; -import android.content.Intent; import android.os.Bundle; -import android.view.View; -import android.widget.AdapterView; +import android.os.Environment; import android.widget.BaseAdapter; import android.widget.ListView; -import android.widget.TextView; import com.jayfeng.lesscode.app.R; import com.jayfeng.lesscode.app.model.LessItem; -import com.jayfeng.lesscode.app.model.Person; import com.jayfeng.lesscode.core.ActivityLess; -import com.jayfeng.lesscode.core.AdapterLess; +import com.jayfeng.lesscode.core.HttpLess; import com.jayfeng.lesscode.core.LogLess; -import com.jayfeng.lesscode.core.NetworkLess; -import com.jayfeng.lesscode.core.SerializeLess; -import com.jayfeng.lesscode.core.SharedPreferenceLess; import com.jayfeng.lesscode.core.ToastLess; import com.jayfeng.lesscode.core.ViewLess; import java.io.File; +import java.net.URLEncoder; import java.util.ArrayList; import java.util.List; @@ -43,32 +37,63 @@ protected void onCreate(Bundle savedInstanceState) { initData(); - adapter = AdapterLess.$base(this, list, R.layout.activity_main_list_item, - new AdapterLess.CallBack() { - @Override - public View getView(int position, View convertView, AdapterLess.ViewHolder holder, LessItem lessItem) { - TextView nameView = holder.$view(convertView, R.id.name); - nameView.setText(lessItem.getName()); - return convertView; - } - }); - listView.setAdapter(adapter); - listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + final File mDestDir = new File(Environment.getExternalStorageDirectory().getPath() + "/lesscode-download"); + if (mDestDir.exists() && !mDestDir.isDirectory()) { + mDestDir.delete(); + } + if (mDestDir.exists() || mDestDir.mkdirs()) { + + } + final File mDestFile = new File(mDestDir.getPath() + "/" + URLEncoder.encode("http://www.vpngo.com/download/vpngo-release-v1.3.1-46.apk")); + new Thread() { @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - Intent intent = new Intent(); - intent.setClassName(MainActivity.this, "com.jayfeng.lesscode.app.activity." + list.get(position).getClassName()); - startActivity(intent); + public void run() { + try { + HttpLess.$download("http://www.vpngo.com/download/vpngo-release-v1.3.1-46.apk", mDestFile, false, new HttpLess.DownloadCallBack() { + @Override + public void onDownloading(int progress) { + + } + + @Override + public void onDownloaded() { + LogLess.$d("下载完成"); + } + }); + } catch (Exception e) { + e.printStackTrace(); + LogLess.$d(e.getMessage()); + } } - }); - - LogLess.$d("network:" + NetworkLess.$online() + ", type:" + NetworkLess.$type()); - - Person person = new Person("fengj"); - SerializeLess.$se(new File(getCacheDir(), "person").getAbsolutePath(), person); - - Person person1 = SerializeLess.$de(new File(getCacheDir(), "person").getAbsolutePath()); - ToastLess.$(this, person1.getName()); + }.start(); + + +// adapter = AdapterLess.$base(this, list, R.layout.activity_main_list_item, +// new AdapterLess.CallBack() { +// @Override +// public View getView(int position, View convertView, AdapterLess.ViewHolder holder, LessItem lessItem) { +// TextView nameView = holder.$view(convertView, R.id.name); +// nameView.setText(lessItem.getName()); +// return convertView; +// } +// }); +// listView.setAdapter(adapter); +// listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { +// @Override +// public void onItemClick(AdapterView parent, View view, int position, long id) { +// Intent intent = new Intent(); +// intent.setClassName(MainActivity.this, "com.jayfeng.lesscode.app.activity." + list.get(position).getClassName()); +// startActivity(intent); +// } +// }); +// +// LogLess.$d("network: %s, type: %s", NetworkLess.$online(), NetworkLess.$type()); +// +// Person person = new Person("fengj"); +// SerializeLess.$se(new File(getCacheDir(), "person").getAbsolutePath(), person); +// +// Person person1 = SerializeLess.$de(new File(getCacheDir(), "person").getAbsolutePath()); +// ToastLess.$(this, person1.getName()); } @@ -81,13 +106,13 @@ private void initData() { list.add(lessItem); lessItem = new LessItem(); - lessItem.setName("AdapterLess的使用"); - lessItem.setClassName("AdapterActivity"); + lessItem.setName("AppLess的使用"); + lessItem.setClassName("AppActivity"); list.add(lessItem); lessItem = new LessItem(); - lessItem.setName("AppLess的使用"); - lessItem.setClassName("AppActivity"); + lessItem.setName("BitmapLess的使用"); + lessItem.setClassName("BitmapActivity"); list.add(lessItem); lessItem = new LessItem(); @@ -160,11 +185,6 @@ private void initData() { lessItem.setClassName("ToastActivity"); list.add(lessItem); - lessItem = new LessItem(); - lessItem.setName("UpdateLess的使用"); - lessItem.setClassName("UpdateActivity"); - list.add(lessItem); - lessItem = new LessItem(); lessItem.setName("ViewLess的使用"); lessItem.setClassName("ViewActivity"); diff --git a/app/src/main/java/com/jayfeng/lesscode/app/activity/SharedPreferenceActivity.java b/app/src/main/java/com/jayfeng/lesscode/app/activity/SharedPreferenceActivity.java index 92fe23e..7156472 100644 --- a/app/src/main/java/com/jayfeng/lesscode/app/activity/SharedPreferenceActivity.java +++ b/app/src/main/java/com/jayfeng/lesscode/app/activity/SharedPreferenceActivity.java @@ -15,17 +15,17 @@ protected void onCreate(Bundle savedInstanceState) { setContentView(R.layout.activity_shared_preference); - SharedPreferenceLess.$put(this, "key1", 333); - SharedPreferenceLess.$put(this, "key2", 0.5f); - SharedPreferenceLess.$put(this, "key3", true); - SharedPreferenceLess.$put(this, "key4", 100000L); - SharedPreferenceLess.$put(this, "key5", "i am a string"); - SharedPreferenceLess.$put(this, "key5", null); + SharedPreferenceLess.$put("key1", 333); + SharedPreferenceLess.$put("key2", 0.5f); + SharedPreferenceLess.$put("key3", true); + SharedPreferenceLess.$put("key4", 100000L); + SharedPreferenceLess.$put("key5", "i am a string"); + SharedPreferenceLess.$put("key5", null); - LogLess.$d(SharedPreferenceLess.$get(this, "key1", 0) + ""); - LogLess.$d(SharedPreferenceLess.$get(this, "key2", 0f) + ""); - LogLess.$d(SharedPreferenceLess.$get(this, "key3", false) + ""); - LogLess.$d(SharedPreferenceLess.$get(this, "key4", 0L) + ""); - LogLess.$d(SharedPreferenceLess.$get(this, "key5", "")); + LogLess.$d(SharedPreferenceLess.$get("key1", 0) + ""); + LogLess.$d(SharedPreferenceLess.$get("key2", 0f) + ""); + LogLess.$d(SharedPreferenceLess.$get("key3", false) + ""); + LogLess.$d(SharedPreferenceLess.$get("key4", 0L) + ""); + LogLess.$d(SharedPreferenceLess.$get("key5", "")); } } diff --git a/app/src/main/java/com/jayfeng/lesscode/app/activity/ToastActivity.java b/app/src/main/java/com/jayfeng/lesscode/app/activity/ToastActivity.java index e830192..71721b8 100644 --- a/app/src/main/java/com/jayfeng/lesscode/app/activity/ToastActivity.java +++ b/app/src/main/java/com/jayfeng/lesscode/app/activity/ToastActivity.java @@ -4,6 +4,7 @@ import android.os.Bundle; import com.jayfeng.lesscode.app.R; +import com.jayfeng.lesscode.core.ToastLess; public class ToastActivity extends Activity { @@ -11,5 +12,8 @@ public class ToastActivity extends Activity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_toast); + + + ToastLess.$("xxxxx"); } } diff --git a/app/src/main/java/com/jayfeng/lesscode/app/activity/UpdateActivity.java b/app/src/main/java/com/jayfeng/lesscode/app/activity/UpdateActivity.java deleted file mode 100644 index 3dbb731..0000000 --- a/app/src/main/java/com/jayfeng/lesscode/app/activity/UpdateActivity.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.jayfeng.lesscode.app.activity; - -import android.app.Activity; -import android.os.Bundle; - -import com.jayfeng.lesscode.app.R; -import com.jayfeng.lesscode.core.UpdateLess; - -public class UpdateActivity extends Activity { - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_update); - - String updateJson = "{\n" + - " \"vercode\":112,\n" + - " \"vername\":\"V1.1\",\n" + - " \"download\":\"http://www.apk.anzhi.com/data3/apk/201506/09/3a978f27369b4a8bf6de1270da9871ec_86281300.apk\",\n" + - " \"log\":\"upgrade content\"\n" + - " }"; - UpdateLess.$check(this, updateJson); - } -} diff --git a/app/src/main/java/com/jayfeng/lesscode/app/activity/adapterless/BaseAdapterActivity.java b/app/src/main/java/com/jayfeng/lesscode/app/activity/adapterless/BaseAdapterActivity.java deleted file mode 100644 index d4deedd..0000000 --- a/app/src/main/java/com/jayfeng/lesscode/app/activity/adapterless/BaseAdapterActivity.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.jayfeng.lesscode.app.activity.adapterless; - -import android.app.Activity; -import android.os.Bundle; -import android.view.View; -import android.widget.BaseAdapter; -import android.widget.ListView; -import android.widget.TextView; - -import com.jayfeng.lesscode.app.R; -import com.jayfeng.lesscode.app.model.Person; -import com.jayfeng.lesscode.core.AdapterLess; -import com.jayfeng.lesscode.core.ViewLess; - -import java.util.ArrayList; -import java.util.List; - -public class BaseAdapterActivity extends Activity { - - List list; - ListView listView; - BaseAdapter adapter; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_adapter_base); - listView = ViewLess.$(this, R.id.listview); - initData(); - - // simple callback - /* - adapter = AdapterLess.$base(this, list, R.layout.activity_main_list_item, - new AdapterLess.CallBack() { - @Override - public View getView(int position, View convertView, AdapterLess.ViewHolder holder, Person person) { - TextView nameView = holder.$view(convertView, R.id.name); - nameView.setText(person.getName()); - return convertView; - } - }); - */ - adapter = AdapterLess.$base(this, list, - new int[] { R.layout.activity_main_list_item, R.layout.adapter_list_item_header}, - new AdapterLess.FullCallBack() { - @Override - public View getView(int position, View convertView, AdapterLess.ViewHolder holder, Person person) { - TextView nameView = holder.$view(convertView, R.id.name); - nameView.setText(person.getName()); - return convertView; - } - - @Override - public int getItemViewType(int position) { - Person person = list.get(position); - if ("header".equals(person.getName())) { - return 1; - } else { - return 0; - } - } - - @Override - public boolean isEnabled(int position) { - Person person = list.get(position); - if ("header".equals(person.getName())) { - return false; - } - return true; - } - }); - // full callback - - listView.setAdapter(adapter); - } - - private void initData() { - list = new ArrayList<>(); - list.add(new Person("header")); - list.add(new Person("jay")); - list.add(new Person("bee")); - list.add(new Person("header")); - list.add(new Person("chras")); - list.add(new Person("nichid")); - } - -} diff --git a/app/src/main/java/com/jayfeng/lesscode/app/activity/adapterless/PagerAdapterActivity.java b/app/src/main/java/com/jayfeng/lesscode/app/activity/adapterless/PagerAdapterActivity.java deleted file mode 100644 index ea3ca7a..0000000 --- a/app/src/main/java/com/jayfeng/lesscode/app/activity/adapterless/PagerAdapterActivity.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.jayfeng.lesscode.app.activity.adapterless; - -import android.app.Activity; -import android.os.Bundle; -import android.support.v4.view.PagerAdapter; -import android.support.v4.view.ViewPager; -import android.view.View; -import android.widget.BaseAdapter; -import android.widget.ListView; -import android.widget.TextView; - -import com.jayfeng.lesscode.app.R; -import com.jayfeng.lesscode.app.model.Person; -import com.jayfeng.lesscode.core.AdapterLess; -import com.jayfeng.lesscode.core.ViewLess; - -import java.util.ArrayList; -import java.util.List; - -public class PagerAdapterActivity extends Activity { - - List list; - ViewPager viewPager; - PagerAdapter adapter; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_adapter_pager); - viewPager = ViewLess.$(this, R.id.viewpager); - initData(); - - adapter = AdapterLess.$pager(this, list, - R.layout.activity_main_list_item, - new AdapterLess.PageCallBack() { - @Override - public void instantiateItem(int position, View view, Person person) { - TextView nameView = ViewLess.$(view, R.id.name); - nameView.setText("page " + position + ":" + person.getName()); - } - }); - - viewPager.setAdapter(adapter); - } - - private void initData() { - list = new ArrayList<>(); - list.add(new Person("header")); - list.add(new Person("jay")); - list.add(new Person("bee")); - list.add(new Person("header")); - list.add(new Person("chras")); - list.add(new Person("nichid")); - } - -} diff --git a/app/src/main/java/com/jayfeng/lesscode/app/activity/adapterless/RecyclerAdapterActivity.java b/app/src/main/java/com/jayfeng/lesscode/app/activity/adapterless/RecyclerAdapterActivity.java deleted file mode 100644 index 8362bbd..0000000 --- a/app/src/main/java/com/jayfeng/lesscode/app/activity/adapterless/RecyclerAdapterActivity.java +++ /dev/null @@ -1,69 +0,0 @@ -package com.jayfeng.lesscode.app.activity.adapterless; - -import android.app.Activity; -import android.graphics.Color; -import android.graphics.drawable.ColorDrawable; -import android.graphics.drawable.GradientDrawable; -import android.os.Bundle; -import android.support.v7.widget.LinearLayoutManager; -import android.support.v7.widget.RecyclerView; -import android.widget.TextView; - -import com.jayfeng.lesscode.app.R; -import com.jayfeng.lesscode.app.model.Person; -import com.jayfeng.lesscode.core.AdapterLess; -import com.jayfeng.lesscode.core.DisplayLess; -import com.jayfeng.lesscode.core.ViewLess; -import com.jayfeng.lesscode.core.other.DividerItemDecoration; - -import java.util.ArrayList; -import java.util.List; - -public class RecyclerAdapterActivity extends Activity { - - List list; - RecyclerView recyclerView; - RecyclerView.LayoutManager layoutManager; - RecyclerView.Adapter adapter; - DividerItemDecoration dividerItemDecoration; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_adapter_recycler); - recyclerView = ViewLess.$(this, R.id.recycler); - - layoutManager = new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false); - recyclerView.setLayoutManager(layoutManager); - dividerItemDecoration = new DividerItemDecoration(this, DividerItemDecoration.HORIZONTAL_LIST, getResources().getDrawable(R.drawable.list_divider)); - dividerItemDecoration.setWidth(DisplayLess.$dp2px(16) + 1); - - initData(); - - adapter = AdapterLess.$recycler(this, list, - R.layout.activity_main_list_item, - new AdapterLess.RecyclerCallBack() { - - @Override - public void onBindViewHolder(int position, AdapterLess.RecyclerViewHolder recyclerViewHolder, Person person) { - TextView nameView = recyclerViewHolder.$view(R.id.name); - nameView.setText(person.getName()); - } - }); - - recyclerView.setAdapter(adapter); - - recyclerView.addItemDecoration(dividerItemDecoration); - } - - private void initData() { - list = new ArrayList<>(); - list.add(new Person("header")); - list.add(new Person("jay")); - list.add(new Person("bee")); - list.add(new Person("header")); - list.add(new Person("chras")); - list.add(new Person("nichid")); - } - -} diff --git a/app/src/main/res/drawable-xhdpi/girl.jpg b/app/src/main/res/drawable-xhdpi/girl.jpg new file mode 100644 index 0000000..d63d2c8 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/girl.jpg differ diff --git a/app/src/main/res/drawable-xhdpi/girl2.jpg b/app/src/main/res/drawable-xhdpi/girl2.jpg new file mode 100644 index 0000000..568bb02 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/girl2.jpg differ diff --git a/app/src/main/res/drawable-xhdpi/xinru.jpg b/app/src/main/res/drawable-xhdpi/xinru.jpg new file mode 100644 index 0000000..7f199cd Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/xinru.jpg differ diff --git a/app/src/main/res/drawable/list_divider_p.xml b/app/src/main/res/drawable/list_divider_p.xml new file mode 100644 index 0000000..dc9ea11 --- /dev/null +++ b/app/src/main/res/drawable/list_divider_p.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/list_item_bg.xml b/app/src/main/res/drawable/list_item_bg.xml new file mode 100644 index 0000000..a9c68a1 --- /dev/null +++ b/app/src/main/res/drawable/list_item_bg.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_bitmap.xml b/app/src/main/res/layout/activity_bitmap.xml new file mode 100644 index 0000000..0030c92 --- /dev/null +++ b/app/src/main/res/layout/activity_bitmap.xml @@ -0,0 +1,17 @@ + + + + + + + diff --git a/app/src/main/res/layout/activity_keyborad.xml b/app/src/main/res/layout/activity_keyborad.xml index 4f669c7..ba68b90 100644 --- a/app/src/main/res/layout/activity_keyborad.xml +++ b/app/src/main/res/layout/activity_keyborad.xml @@ -1,12 +1,29 @@ - - + - +