diff --git a/README-cn.md b/README-cn.md
index 861e90b..2b151f5 100644
--- a/README-cn.md
+++ b/README-cn.md
@@ -13,7 +13,7 @@
## Gradle
```groovy
-compile('com.jayfeng:lesscode-core:1.0')
+implementation 'com.jayfeng:lesscode-core:2.4.2'
```
## Features
diff --git a/README.md b/README.md
index c9f08da..c5f87c8 100644
--- a/README.md
+++ b/README.md
@@ -18,7 +18,7 @@ less code, more efficient for android, for the best android tools library!
## Gradle
```groovy
-compile('com.jayfeng:lesscode-core:1.0')
+implementation 'com.jayfeng:lesscode-core:2.4.2'
```
## Features
diff --git a/app/build.gradle b/app/build.gradle
index ec60648..3384bef 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -1,13 +1,13 @@
apply plugin: 'com.android.application'
android {
- compileSdkVersion 25
- buildToolsVersion "25.0.2"
+ compileSdkVersion 27
+ buildToolsVersion '27.0.3'
defaultConfig {
applicationId "com.jayfeng.lesscode.app"
- minSdkVersion 9
- targetSdkVersion 25
+ minSdkVersion 14
+ targetSdkVersion 27
versionCode 1
versionName "1.0"
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index e62253b..dfbd8b5 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -24,9 +24,6 @@
-
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/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/MainActivity.java b/app/src/main/java/com/jayfeng/lesscode/app/activity/MainActivity.java
index b57dd9b..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: %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());
+ }.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());
}
@@ -80,11 +105,6 @@ private void initData() {
lessItem.setClassName("ActivityActivity");
list.add(lessItem);
- lessItem = new LessItem();
- lessItem.setName("AdapterLess的使用");
- lessItem.setClassName("AdapterActivity");
- list.add(lessItem);
-
lessItem = new LessItem();
lessItem.setName("AppLess的使用");
lessItem.setClassName("AppActivity");
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 140d2e5..0000000
--- a/app/src/main/java/com/jayfeng/lesscode/app/activity/adapterless/BaseAdapterActivity.java
+++ /dev/null
@@ -1,89 +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.AdapterViewTypeRecyclerCallBack;
-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;
- }
- });
- */
- // full callback
- 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;
- }
- });
-
-
- 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 e999789..0000000
--- a/app/src/main/java/com/jayfeng/lesscode/app/activity/adapterless/RecyclerAdapterActivity.java
+++ /dev/null
@@ -1,144 +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.GridLayoutManager;
-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.AdapterViewTypeRecyclerCallBack;
-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.VERTICAL, false);
-// layoutManager = new GridLayoutManager(this, 4);
- recyclerView.setLayoutManager(layoutManager);
- dividerItemDecoration = new DividerItemDecoration(this, DividerItemDecoration.GRID_LIST, new ColorDrawable(Color.parseColor("#00000000")));
- dividerItemDecoration.setWidth(DisplayLess.$dp2px(4));
- dividerItemDecoration.setHeight(DisplayLess.$dp2px(4));
-
- 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());
- }
- });
- */
-
- adapter = AdapterLess.$recycler(this, list,
- new int[] { R.layout.activity_main_list_item, R.layout.adapter_list_item_header},
- new AdapterViewTypeRecyclerCallBack() {
- @Override
- public int getItemViewType(int position) {
- Person person = list.get(position);
- if ("header".equals(person.getName())) {
- return 1;
- } else {
- return 0;
- }
- }
-
- @Override
- public void onViewType0(int position, AdapterLess.RecyclerViewHolder recyclerViewHolder, Person person) {
- TextView nameView = recyclerViewHolder.$view(R.id.name);
- nameView.setText(person.getName());
- }
-
- @Override
- public void onViewType1(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"));
- 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"));
- 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"));
- 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"));
- 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"));
- 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"));
- list.add(new Person("header"));
- list.add(new Person("gggggg"));
- list.add(new Person("ggxxx"));
- list.add(new Person("gewewewe"));
- list.add(new Person("gtyyyy"));
- list.add(new Person("guugyyyy"));
- list.add(new Person("header"));
- list.add(new Person("jay"));
- list.add(new Person("zzzzzzzzzz"));
- list.add(new Person("header"));
- list.add(new Person("yyyyyyyyyyyyyy"));
- list.add(new Person("etrtertret"));
- list.add(new Person("zsssss"));
- }
-
-}
diff --git a/build.gradle b/build.gradle
index 47804e3..9987d03 100644
--- a/build.gradle
+++ b/build.gradle
@@ -3,9 +3,10 @@
buildscript {
repositories {
jcenter()
+ google()
}
dependencies {
- classpath 'com.android.tools.build:gradle:2.2.3'
+ classpath 'com.android.tools.build:gradle:3.0.1'
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.1'
classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5'
// NOTE: Do not place your application dependencies here; they belong
@@ -16,5 +17,6 @@ buildscript {
allprojects {
repositories {
jcenter()
+ google()
}
}
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 0e65f82..cb24766 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
-#Wed Aug 24 08:51:21 CST 2016
+#Wed Mar 28 16:07:08 CST 2018
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip
diff --git a/lesscode-core/build.gradle b/lesscode-core/build.gradle
index 83e59bd..55d9bb4 100644
--- a/lesscode-core/build.gradle
+++ b/lesscode-core/build.gradle
@@ -2,15 +2,15 @@ apply plugin: 'com.android.library'
apply plugin: 'com.github.dcendents.android-maven'
apply plugin: 'com.jfrog.bintray'
-version = "1.2" // #CONFIG# // project version
+version = "2.4.2" // #CONFIG# // project version
android {
- compileSdkVersion 25
- buildToolsVersion "25.0.2"
+ compileSdkVersion 27
+ buildToolsVersion "27.0.2"
// resourcePrefix "less_" // #CONFIG# // please remove this if you don't known it
defaultConfig {
- minSdkVersion 9
- targetSdkVersion 25
+ minSdkVersion 14
+ targetSdkVersion 27
versionCode 1
versionName "1.0"
}
@@ -28,8 +28,8 @@ android {
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
- compile 'com.android.support:support-v4:25.1.0'
- compile 'com.android.support:recyclerview-v7:25.1.0'
+ compile 'com.android.support:support-v4:27.0.2'
+ compile 'com.android.support:recyclerview-v7:27.0.2'
}
def siteUrl = 'https://github.com/openproject/LessCode' // #CONFIG# // project homepage
diff --git a/lesscode-core/src/main/java/com/jayfeng/lesscode/core/AdapterLess.java b/lesscode-core/src/main/java/com/jayfeng/lesscode/core/AdapterLess.java
deleted file mode 100644
index f6cfcbf..0000000
--- a/lesscode-core/src/main/java/com/jayfeng/lesscode/core/AdapterLess.java
+++ /dev/null
@@ -1,583 +0,0 @@
-package com.jayfeng.lesscode.core;
-
-import android.content.Context;
-import android.support.v4.app.Fragment;
-import android.support.v4.app.FragmentManager;
-import android.support.v4.app.FragmentPagerAdapter;
-import android.support.v4.view.PagerAdapter;
-import android.support.v7.widget.RecyclerView;
-import android.util.SparseArray;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.BaseAdapter;
-
-import java.util.List;
-import java.util.Objects;
-
-/**
- * 适配器简化相关的工具类
- * 常用于:ListView,ViewPager,RecyclerView
- */
-public final class AdapterLess {
-
- /**
- * 创建一个RecyclerView.Adapter
- * 面向: RecyclerView
- * 主要是:
- * 1. 抽象出重复代码,默认实现一些常规代码
- * 2. 封装了RecyclerViewHolder
- * 3. 自动传递Model给getView
- *
- * @param context
- * @param list model的列表
- * @param layoutId 布局xml的id
- * @param recyclerCallBack 包含nBindViewHolder方法的回调
- * @param r
- * @return
- */
- public static RecyclerView.Adapter $recycler(final Context context,
- final List list,
- final int layoutId,
- final RecyclerCallBack recyclerCallBack) {
- RecyclerView.Adapter result = new RecyclerView.Adapter() {
- @Override
- public RecyclerViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {
- View view = LayoutInflater.from(context)
- .inflate(layoutId, viewGroup, false);
- RecyclerViewHolder recyclerViewHolder = new RecyclerViewHolder(view);
- return recyclerViewHolder;
- }
-
- @Override
- public void onBindViewHolder(RecyclerViewHolder viewHolder, int position) {
- T t = null;
- if (position < list.size()) {
- t = list.get(position);
- }
- recyclerCallBack.onBindViewHolder(position, viewHolder, t);
- }
-
- @Override
- public int getItemCount() {
- if (list != null) {
- return list.size();
- }
- return 0;
- }
- };
- return result;
- }
-
- /**
- * 创建一个RecyclerView.Adapter
- * 面向: RecyclerView
- * 支持多布局,也多增加了两个回调方法,便于自定义:
- * 1. getViewType
- *
- * @param context
- * @param list model的列表
- * @param layoutIds 布局xml的id
- * @param fullRecyclerCallBack 包含nBindViewHolder方法的回调
- * @param r
- * @return
- */
- public static RecyclerView.Adapter $recycler(final Context context,
- final List list,
- final int[] layoutIds,
- final FullRecyclerCallBack fullRecyclerCallBack) {
- RecyclerView.Adapter result = new RecyclerView.Adapter() {
- @Override
- public RecyclerViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {
- View view = LayoutInflater.from(context)
- .inflate(layoutIds[viewType], viewGroup, false);
- RecyclerViewHolder recyclerViewHolder = new RecyclerViewHolder(view);
- return recyclerViewHolder;
- }
-
- @Override
- public void onBindViewHolder(RecyclerViewHolder viewHolder, int position) {
- T t = null;
- if (position < list.size()) {
- t = list.get(position);
- }
- fullRecyclerCallBack.onBindViewHolder(position, viewHolder, t);
- }
-
- @Override
- public int getItemCount() {
- if (list != null) {
- return list.size();
- }
- return 0;
- }
-
- @Override
- public int getItemViewType(int position) {
- return fullRecyclerCallBack.getItemViewType(position);
- }
- };
- return result;
- }
-
- /**
- * 创建BaseAdapter
- * 面向: AbsListView
- * 1. 抽象出重复代码,默认实现一些常规代码
- * 2. 封装了ViewHolder
- * 3. 自动传递Model给getView
- *
- * @param context
- * @param list model的列表
- * @param layoutId 布局xml的id
- * @param callBack 包含getView方法的回调
- * @param
- * @return
- */
- public static BaseAdapter $base(final Context context,
- final List list,
- final int layoutId,
- final CallBack callBack) {
-
- BaseAdapter result = new BaseAdapter() {
-
- @Override
- public int getCount() {
- if (list != null) {
- return list.size();
- }
- return 0;
- }
-
- @Override
- public T getItem(int position) {
- return list.get(position);
- }
-
- @Override
- public long getItemId(int position) {
- return 0;
- }
-
- @Override
- public View getView(int position, View convertView, ViewGroup parent) {
- ViewHolder holder;
- if (null == convertView) {
- holder = new ViewHolder();
- convertView = LayoutInflater.from(context).inflate(layoutId, null);
- convertView.setTag(holder);
- } else {
- holder = (ViewHolder) convertView.getTag();
- }
- T t = null;
- if (position < list.size()) {
- t = getItem(position);
- }
- return callBack.getView(position, convertView, holder, t);
- }
-
- };
- return result;
- }
-
-
- /**
- * 同上,也是创建了BaseAdapter
- * 面向: AbsListView
- * 支持多布局,也多增加了两个回调方法,便于自定义:
- * 1. getViewType
- * 2. isEnabled
- *
- * @param context
- * @param list model列表
- * @param layoutIds 布局xml的id数组
- * @param fullCallBack 包含getView,getViewType,isEnabled方法的回调
- * @param
- * @return
- */
- public static BaseAdapter $base(final Context context,
- final List list,
- final int[] layoutIds,
- final FullCallBack fullCallBack) {
-
- BaseAdapter result = new BaseAdapter() {
-
- @Override
- public int getCount() {
- if (list != null) {
- return list.size();
- }
- return 0;
- }
-
- @Override
- public T getItem(int position) {
- return list.get(position);
- }
-
- @Override
- public long getItemId(int position) {
- return 0;
- }
-
- @Override
- public int getItemViewType(int position) {
- return fullCallBack.getItemViewType(position);
- }
-
- @Override
- public int getViewTypeCount() {
- return layoutIds.length;
- }
-
- @Override
- public boolean isEnabled(int position) {
- return fullCallBack.isEnabled(position);
- }
-
- @Override
- public View getView(int position, View convertView, ViewGroup parent) {
- ViewHolder[] holders = new ViewHolder[layoutIds.length];
- int i = getItemViewType(position);
- if (null == convertView) {
- holders[i] = new ViewHolder();
- convertView = LayoutInflater.from(context).inflate(layoutIds[i], null);
- convertView.setTag(holders[i]);
- } else {
- holders[i] = (ViewHolder) convertView.getTag();
- }
- T t = null;
- if (position < list.size()) {
- t = getItem(position);
- }
- return fullCallBack.getView(position, convertView, holders[i], t);
- }
-
- };
- return result;
- }
-
- /**
- * 创建PagerAdapter
- * 面向: ViewPager
- * 主要是:
- * 1. 抽象出重复代码,默认实现一些常规代码
- * 2. 封装了instantiateItem
- * 3. 自动传递Model给getView
- *
- * @param context
- * @param list
- * @param layoutId
- * @param pageCallBack
- * @param
- * @return
- */
- public static PagerAdapter $pager(final Context context,
- final List list,
- final int layoutId,
- final PageCallBack pageCallBack) {
- PagerAdapter result = new PagerAdapter() {
-
- @Override
- public int getCount() {
- return list.size();
- }
-
- @Override
- public boolean isViewFromObject(View view, Object object) {
- return view == object;
- }
-
- @Override
- public Object instantiateItem(ViewGroup container, int position) {
- View view = LayoutInflater.from(context).inflate(layoutId, null);
- container.addView(view);
- pageCallBack.instantiateItem(position, view, list.get(position));
- return view;
- }
-
- @Override
- public void destroyItem(ViewGroup container, int position, Object object) {
- container.removeView((View) object);
- }
- };
- return result;
- }
-
- /**
- * 创建PagerAdapter
- * 面向: ViewPager
- * 主要是:
- * 1. 增加destroyItem
- *
- * @param context
- * @param list
- * @param layoutId
- * @param fullPageCallBack
- * @param
- * @return
- */
- public static PagerAdapter $pager(final Context context,
- final List list,
- final int layoutId,
- final FullPageCallBack fullPageCallBack) {
- PagerAdapter result = new PagerAdapter() {
-
- @Override
- public int getCount() {
- return list.size();
- }
-
- @Override
- public boolean isViewFromObject(View view, Object object) {
- return view == object;
- }
-
- @Override
- public Object instantiateItem(ViewGroup container, int position) {
- View view = LayoutInflater.from(context).inflate(layoutId, null);
- container.addView(view);
- fullPageCallBack.instantiateItem(position, view, list.get(position));
- return view;
- }
-
- @Override
- public void destroyItem(ViewGroup container, int position, Object object) {
- container.removeView((View) object);
- fullPageCallBack.destroyItem(container, position, object, list.get(position));
- }
- };
- return result;
- }
-
- public static PagerAdapter $pagerWithDataChanged(final Context context,
- final List list,
- final int layoutId,
- final FullPageCallBack fullPageCallBack) {
- PagerAdapter result = new PagerAdapter() {
-
- private int mChildCount = 0;
-
- @Override
- public int getCount() {
- return list.size();
- }
-
- @Override
- public boolean isViewFromObject(View view, Object object) {
- return view == object;
- }
-
- @Override
- public Object instantiateItem(ViewGroup container, int position) {
- View view = LayoutInflater.from(context).inflate(layoutId, null);
- container.addView(view);
- fullPageCallBack.instantiateItem(position, view, list.get(position));
- return view;
- }
-
- @Override
- public void destroyItem(ViewGroup container, int position, Object object) {
- container.removeView((View) object);
- fullPageCallBack.destroyItem(container, position, object, list.get(position));
- }
-
- @Override
- public int getItemPosition(Object object) {
- if (mChildCount > 0) {
- mChildCount--;
- return POSITION_NONE;
- }
- return super.getItemPosition(object);
- }
-
- @Override
- public void notifyDataSetChanged() {
- mChildCount = getCount();
- super.notifyDataSetChanged();
- }
- };
- return result;
- }
-
- /**
- * 创建了FragmentPagerAdapter
- * 面向: ViewPager
- * 主要是:
- * 1. 抽象出重复代码,默认实现getCount方法
- *
- * @param fragmentManager
- * @param count
- * @param fragmentPagerCallBack
- * @return
- */
- public static FragmentPagerAdapter $pager(FragmentManager fragmentManager,
- final int count,
- final FragmentPagerCallBack fragmentPagerCallBack) {
- FragmentPagerAdapter result = new FragmentPagerAdapter(fragmentManager) {
- @Override
- public Fragment getItem(int position) {
- return fragmentPagerCallBack.getItem(position);
- }
-
- @Override
- public int getCount() {
- return count;
- }
- };
- return result;
- }
-
- /**
- * 同上,创建了FragmentPagerAdapter
- * 面向: ViewPager
- * 通过getPageTitle回调方法支持fragment标题定义
- * 主要是:
- * 1. 抽象出重复代码,默认实现getCount方法
- *
- * @param fragmentManager
- * @param count
- * @param fullFragmentPagerCallBack
- * @return
- */
- public static FragmentPagerAdapter $pager(final FragmentManager fragmentManager,
- final int count,
- final FullFragmentPagerCallBack fullFragmentPagerCallBack) {
- FragmentPagerAdapter result = new FragmentPagerAdapter(fragmentManager) {
- @Override
- public Fragment getItem(int position) {
- return fullFragmentPagerCallBack.getItem(position);
- }
-
- @Override
- public int getCount() {
- return count;
- }
-
- @Override
- public String getPageTitle(int position) {
- return fullFragmentPagerCallBack.getPageTitle(position);
- }
- };
- return result;
- }
-
- /**
- * RecyclerCallBack
- *
- * @param
- */
- public interface RecyclerCallBack {
- void onBindViewHolder(int position, RecyclerViewHolder recyclerViewHolder, T t);
- }
-
- /**
- * RecyclerCallBack
- *
- * @param
- */
- public interface FullRecyclerCallBack {
- void onBindViewHolder(int position, RecyclerViewHolder recyclerViewHolder, T t);
-
- int getItemViewType(int position);
- }
-
- /**
- * 简化版本的$base的CallBack
- *
- * @param
- */
- public interface CallBack {
- View getView(int position, View convertView, ViewHolder holder, T t);
- }
-
- /**
- * 增强版本的$base的CallBack
- *
- * @param
- */
- public interface FullCallBack {
- View getView(int position, View convertView, ViewHolder holder, T t);
-
- int getItemViewType(int position);
-
- boolean isEnabled(int position);
- }
-
- /**
- * 简化版本的$pager的CallBack
- *
- * @param
- */
- public interface PageCallBack {
- void instantiateItem(int position, View view, T t);
- }
-
- /**
- * 简化版本的$pager的CallBack
- *
- * @param
- */
- public interface FullPageCallBack {
- void instantiateItem(int position, View view, T t);
-
- void destroyItem(ViewGroup container, int position, Object object, T t);
- }
-
- /**
- * 简化版本的$pager的CallBack(针对fragment)
- */
- public interface FragmentPagerCallBack {
- Fragment getItem(int position);
- }
-
- /**
- * 增强版本的$pager的CallBack(针对fragment)
- */
- public interface FullFragmentPagerCallBack {
- Fragment getItem(int position);
-
- String getPageTitle(int position);
- }
-
-
- /**
- * ViewHolder类相当于一个享元模式的工厂类
- * 主要用了以下优化点:
- * 1. 缓存了findViewById的view,如果已经创建,则直接返回,提高了性能
- * 2. 用SparseArray代替HashMap优化性能
- */
- public static class ViewHolder {
- public SparseArray views = new SparseArray<>();
-
- /**
- * 从缓存里获取viewId对应的View
- *
- * @param convertView
- * @param viewId
- * @param
- * @return
- */
- public T $view(View convertView, int viewId) {
- View v = views.get(viewId);
- if (null == v) {
- v = ViewLess.$(convertView, viewId);
- views.put(viewId, v);
- }
- return (T) v;
- }
- }
-
- /**
- * 单独封装了RecyclerView的ViewHolder
- */
- public static class RecyclerViewHolder extends RecyclerView.ViewHolder {
- public RecyclerViewHolder(View itemView) {
- super(itemView);
- }
-
- public T $view(int viewId) {
- return ViewLess.$(itemView, viewId);
- }
- }
-}
diff --git a/lesscode-core/src/main/java/com/jayfeng/lesscode/core/AdapterViewTypeRecyclerCallBack.java b/lesscode-core/src/main/java/com/jayfeng/lesscode/core/AdapterViewTypeRecyclerCallBack.java
deleted file mode 100644
index a5d3938..0000000
--- a/lesscode-core/src/main/java/com/jayfeng/lesscode/core/AdapterViewTypeRecyclerCallBack.java
+++ /dev/null
@@ -1,58 +0,0 @@
-package com.jayfeng.lesscode.core;
-
-/**
- * 进一步分发多种类型的FullRecyclerCallBack
- * @param
- */
-public abstract class AdapterViewTypeRecyclerCallBack implements AdapterLess.FullRecyclerCallBack {
-
- @Override
- public void onBindViewHolder(int position, AdapterLess.RecyclerViewHolder recyclerViewHolder, T t) {
- onViewCommon(position, recyclerViewHolder, t);
-
- if (getItemViewType(position) == 0) {
- onViewType0(position, recyclerViewHolder, t);
- } else if (getItemViewType(position) == 1) {
- onViewType1(position, recyclerViewHolder, t);
- } else if (getItemViewType(position) == 2) {
- onViewType2(position, recyclerViewHolder, t);
- } else if (getItemViewType(position) == 3) {
- onViewType3(position, recyclerViewHolder, t);
- } else if (getItemViewType(position) == 4) {
- onViewType4(position, recyclerViewHolder, t);
- } else if (getItemViewType(position) == 5) {
- onViewType5(position, recyclerViewHolder, t);
- }
- }
-
- public void onViewCommon(int position, AdapterLess.RecyclerViewHolder recyclerViewHolder, T t) {
-
- }
-
- public void onViewType0(int position, AdapterLess.RecyclerViewHolder recyclerViewHolder, T t) {
-
- }
-
- public void onViewType1(int position, AdapterLess.RecyclerViewHolder recyclerViewHolder, T t) {
-
- }
-
- public void onViewType2(int position, AdapterLess.RecyclerViewHolder recyclerViewHolder, T t) {
-
- }
-
- public void onViewType3(int position, AdapterLess.RecyclerViewHolder recyclerViewHolder, T t) {
-
- }
-
- public void onViewType4(int position, AdapterLess.RecyclerViewHolder recyclerViewHolder, T t) {
-
- }
-
- public void onViewType5(int position, AdapterLess.RecyclerViewHolder recyclerViewHolder, T t) {
-
- }
-
- @Override
- public abstract int getItemViewType(int position);
-}
diff --git a/lesscode-core/src/main/java/com/jayfeng/lesscode/core/ApplicationLess.java b/lesscode-core/src/main/java/com/jayfeng/lesscode/core/ApplicationLess.java
index 7c13710..4a521bb 100644
--- a/lesscode-core/src/main/java/com/jayfeng/lesscode/core/ApplicationLess.java
+++ b/lesscode-core/src/main/java/com/jayfeng/lesscode/core/ApplicationLess.java
@@ -14,7 +14,7 @@ public final class ApplicationLess {
* @param context
* @return
*/
- private static boolean $init(Context context) {
+ public static boolean $init(Context context) {
ActivityManager am = ((ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE));
List processInfos = am.getRunningAppProcesses();
String mainProcessName = context.getPackageName();
diff --git a/lesscode-core/src/main/java/com/jayfeng/lesscode/core/HttpLess.java b/lesscode-core/src/main/java/com/jayfeng/lesscode/core/HttpLess.java
index c782d31..d0936f3 100644
--- a/lesscode-core/src/main/java/com/jayfeng/lesscode/core/HttpLess.java
+++ b/lesscode-core/src/main/java/com/jayfeng/lesscode/core/HttpLess.java
@@ -52,7 +52,12 @@ public final class HttpLess {
String value = entry.getValue().toString();
conn.setRequestProperty(key, value);
}
- if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
+ if (conn.getResponseCode() == HttpURLConnection.HTTP_MOVED_PERM
+ || conn.getResponseCode()== HttpURLConnection.HTTP_MOVED_TEMP) {
+ // 重定向地址下载
+ String redirectDownloadUrl = conn.getHeaderField("location");
+ return $get(redirectDownloadUrl, header);
+ } else if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
is = conn.getInputStream();
return FileLess.$read(is);
}
@@ -264,7 +269,12 @@ public void run() {
String value = entry.getValue().toString();
conn.setRequestProperty(key, value);
}
- if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
+ if (conn.getResponseCode() == HttpURLConnection.HTTP_MOVED_PERM
+ || conn.getResponseCode()== HttpURLConnection.HTTP_MOVED_TEMP) {
+ // 重定向地址下载
+ String redirectDownloadUrl = conn.getHeaderField("location");
+ return $download(redirectDownloadUrl, dest, append, header, callBack);
+ } else if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
is = conn.getInputStream();
remoteSize = conn.getContentLength();
String contentEndcoding = conn.getHeaderField("Content-Encoding");
diff --git a/lesscode-core/src/main/java/com/jayfeng/lesscode/core/NetworkLess.java b/lesscode-core/src/main/java/com/jayfeng/lesscode/core/NetworkLess.java
index 7024c49..c532f5a 100644
--- a/lesscode-core/src/main/java/com/jayfeng/lesscode/core/NetworkLess.java
+++ b/lesscode-core/src/main/java/com/jayfeng/lesscode/core/NetworkLess.java
@@ -60,6 +60,7 @@ public static enum NetworkType {
if (type == ConnectivityManager.TYPE_MOBILE) {
switch (subType) {
case TelephonyManager.NETWORK_TYPE_GPRS:
+ case TelephonyManager.NETWORK_TYPE_GSM:
case TelephonyManager.NETWORK_TYPE_EDGE:
case TelephonyManager.NETWORK_TYPE_CDMA:
case TelephonyManager.NETWORK_TYPE_1xRTT:
@@ -75,10 +76,15 @@ public static enum NetworkType {
case TelephonyManager.NETWORK_TYPE_EVDO_B:
case TelephonyManager.NETWORK_TYPE_EHRPD:
case TelephonyManager.NETWORK_TYPE_HSPAP:
+ case TelephonyManager.NETWORK_TYPE_TD_SCDMA:
return NetworkType.MOBILE_MIDDLE;// 3G
case TelephonyManager.NETWORK_TYPE_LTE:
+ case TelephonyManager.NETWORK_TYPE_IWLAN:
+ case 19: // TelephonyManager.NETWORK_TYPE_LTE_CA
return NetworkType.MOBILE_FAST; // 4G
+ default: // we think the network will be more and more better
+ return NetworkType.MOBILE_FAST;
}
}
diff --git a/lesscode-core/src/main/java/com/jayfeng/lesscode/core/StorageLess.java b/lesscode-core/src/main/java/com/jayfeng/lesscode/core/StorageLess.java
index 8b046e9..d881dc2 100644
--- a/lesscode-core/src/main/java/com/jayfeng/lesscode/core/StorageLess.java
+++ b/lesscode-core/src/main/java/com/jayfeng/lesscode/core/StorageLess.java
@@ -186,17 +186,29 @@ public static class ExtSdcard {
}
private static long total(File path) {
- StatFs stat = new StatFs(path.getPath());
- long blockSize = stat.getBlockSize();
- long totalBlocks = stat.getBlockCount();
- return blockSize * totalBlocks;
+ try {
+ StatFs stat = new StatFs(path.getPath());
+ long blockSize = stat.getBlockSize();
+ long totalBlocks = stat.getBlockCount();
+ return blockSize * totalBlocks;
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ return 0;
}
private static long free(File path) {
- StatFs stat = new StatFs(path.getPath());
- long blockSize = stat.getBlockSize();
- long freeBlocks = stat.getAvailableBlocks();
- return blockSize * freeBlocks;
+ try {
+ StatFs stat = new StatFs(path.getPath());
+ long blockSize = stat.getBlockSize();
+ long freeBlocks = stat.getAvailableBlocks();
+ return blockSize * freeBlocks;
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ return 0;
}
private static long used(File path) {