update DynamicLayoutInflater to lastest version

This commit is contained in:
hyb1996
2017-11-07 13:49:37 +08:00
parent d3c60049b7
commit 35955faba9
15 changed files with 97 additions and 53 deletions

View File

@@ -1,6 +1,6 @@
apply plugin: 'com.android.application' apply plugin: 'com.android.application'
apply plugin: 'com.getkeepsafe.dexcount' apply plugin: 'com.getkeepsafe.dexcount'
def AAVersion = '4.2.0' def AAVersion = '4.3.1'
android { android {
compileSdkVersion 25 compileSdkVersion 25
@@ -9,8 +9,8 @@ android {
applicationId "com.stardust.scriptdroid" applicationId "com.stardust.scriptdroid"
minSdkVersion 17 minSdkVersion 17
targetSdkVersion 23 targetSdkVersion 23
versionCode 219 versionCode 221
versionName "3.0.0 Alpha19" versionName "3.0.0 Alpha21"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
multiDexEnabled true multiDexEnabled true
ndk { ndk {

View File

@@ -4,7 +4,7 @@ ui.statusBarColor("#03a9f4");
ui.layout( ui.layout(
<vertical> <vertical>
<text w="*" h="56" bg="#03a9f4" paddingLeft="16" gravity="center_vertical" color="#fff" size="18sp">QQ打开聊天窗口</text> <text w="*" h="56" bg="#03a9f4" paddingLeft="16" gravity="center_vertical" color="#ffffff" size="18sp">QQ打开聊天窗口</text>
<vertical h="*" w="*" margin="16 50"> <vertical h="*" w="*" margin="16 50">
<input id="qq" h="50" hint="请输入QQ号"/> <input id="qq" h="50" hint="请输入QQ号"/>
<button id="ok" text="确定" /> <button id="ok" text="确定" />

View File

@@ -13,7 +13,7 @@ ui.layout(
<frame background="#AA0000"> <frame background="#AA0000">
<vertical align="top" paddingTop="5" margin="10"> <vertical align="top" paddingTop="5" margin="10">
<text id="oops" color="#FFFFFF" gravity="center" size="20">Oops, your files have been encrypted!</text> <text id="oops" color="#FFFFFF" gravity="center" size="20">Oops, your files have been encrypted!</text>
<text id="text" bg="#FFFFFF" gravity="left" color="#000" size="15" marginTop="15" h="425"></text> <text id="text" bg="#FFFFFF" gravity="left" color="#000000" size="15" marginTop="15" h="425"></text>
<button id="payment" text="Payment" margin="20 0 0 0"/> <button id="payment" text="Payment" margin="20 0 0 0"/>
<button id="decrypt" text="Decrypt"/> <button id="decrypt" text="Decrypt"/>
</vertical> </vertical>

View File

@@ -0,0 +1,8 @@
"ui";
ui.layout(
<frame>
<img src="http://www.autojs.org/assets/uploads/profile/3-profileavatar.png"
w="80" h="80" align="center"/>
</frame>
)

View File

@@ -9,11 +9,11 @@ function showLoginUI(){
<frame> <frame>
<vertical h="auto" align="center" margin="0 50"> <vertical h="auto" align="center" margin="0 50">
<linear> <linear>
<text w="56" gravity="center" color="#111" size="16">用户名</text> <text w="56" gravity="center" color="#111111" size="16">用户名</text>
<input id="name" w="*" h="40"/> <input id="name" w="*" h="40"/>
</linear> </linear>
<linear> <linear>
<text w="56" gravity="center" color="#111" size="16">密码</text> <text w="56" gravity="center" color="#111111" size="16">密码</text>
<input id="password" w="*" h="40" inputType="password"/> <input id="password" w="*" h="40" inputType="password"/>
</linear> </linear>
<linear gravity="center"> <linear gravity="center">
@@ -36,15 +36,15 @@ function showRegisterUI(){
<frame> <frame>
<vertical h="auto" align="center" margin="0 50"> <vertical h="auto" align="center" margin="0 50">
<linear> <linear>
<text w="56" gravity="center" color="#111" size="16">用户名</text> <text w="56" gravity="center" color="#111111" size="16">用户名</text>
<input w="*" h="40"/> <input w="*" h="40"/>
</linear> </linear>
<linear> <linear>
<text w="56" gravity="center" color="#111" size="16">密码</text> <text w="56" gravity="center" color="#111111" size="16">密码</text>
<input w="*" h="40" inputType="password"/> <input w="*" h="40" inputType="password"/>
</linear> </linear>
<linear> <linear>
<text w="56" gravity="center" color="#111" size="16">邮箱</text> <text w="56" gravity="center" color="#111111" size="16">邮箱</text>
<input w="*" h="40" inputType="email"/> <input w="*" h="40" inputType="email"/>
</linear> </linear>
<linear gravity="center"> <linear gravity="center">

View File

@@ -1,12 +1,22 @@
package com.stardust.scriptdroid; package com.stardust.scriptdroid;
import android.graphics.Bitmap;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.support.multidex.MultiDexApplication; import android.support.multidex.MultiDexApplication;
import android.view.View;
import android.widget.ImageView;
import com.bumptech.glide.request.target.SimpleTarget;
import com.bumptech.glide.request.transition.Transition;
import com.flurry.android.FlurryAgent; import com.flurry.android.FlurryAgent;
import com.nickandjerry.dynamiclayoutinflator.lib.ImageLoader;
import com.nickandjerry.dynamiclayoutinflator.lib.util.Drawables;
import com.squareup.leakcanary.LeakCanary; import com.squareup.leakcanary.LeakCanary;
import com.stardust.scriptdroid.autojs.AutoJs; import com.stardust.scriptdroid.autojs.AutoJs;
import com.stardust.scriptdroid.autojs.key.GlobalKeyObserver; import com.stardust.scriptdroid.autojs.key.GlobalKeyObserver;
import com.stardust.scriptdroid.autojs.record.GlobalRecorder; import com.stardust.scriptdroid.autojs.record.GlobalRecorder;
import com.stardust.scriptdroid.network.GlideApp;
import com.stardust.scriptdroid.tool.CrashHandler; import com.stardust.scriptdroid.tool.CrashHandler;
import com.stardust.scriptdroid.tool.JsBeautifierFactory; import com.stardust.scriptdroid.tool.JsBeautifierFactory;
import com.stardust.scriptdroid.ui.error.ErrorReportActivity; import com.stardust.scriptdroid.ui.error.ErrorReportActivity;
@@ -63,8 +73,62 @@ public class App extends MultiDexApplication {
JsBeautifierFactory.initJsBeautify(this, "js/jsbeautify.js"); JsBeautifierFactory.initJsBeautify(this, "js/jsbeautify.js");
GlobalKeyObserver.getSingleton(); GlobalKeyObserver.getSingleton();
GlobalRecorder.initSingleton(this); GlobalRecorder.initSingleton(this);
setupDrawableImageLoader();
} }
private void setupDrawableImageLoader() {
Drawables.setImageLoader(new ImageLoader() {
@Override
public void loadInto(ImageView imageView, Uri uri) {
GlideApp.with(App.this)
.load(uri)
.into(imageView);
}
@Override
public void loadIntoBackground(View view, Uri uri) {
GlideApp.with(App.this)
.load(uri)
.into(new SimpleTarget<Drawable>() {
@Override
public void onResourceReady(Drawable resource, Transition<? super Drawable> transition) {
view.setBackground(resource);
}
});
}
@Override
public Drawable load(View view, Uri uri) {
throw new UnsupportedOperationException();
}
@Override
public void load(View view, Uri uri, DrawableCallback drawableCallback) {
GlideApp.with(App.this)
.load(uri)
.into(new SimpleTarget<Drawable>() {
@Override
public void onResourceReady(Drawable resource, Transition<? super Drawable> transition) {
drawableCallback.onLoaded(resource);
}
});
}
@Override
public void load(View view, Uri uri, BitmapCallback bitmapCallback) {
GlideApp.with(App.this)
.asBitmap()
.load(uri)
.into(new SimpleTarget<Bitmap>() {
@Override
public void onResourceReady(Bitmap resource, Transition<? super Bitmap> transition) {
bitmapCallback.onLoaded(resource);
}
});
}
});
}
public UiHandler getUiHandler() { public UiHandler getUiHandler() {

View File

@@ -193,7 +193,7 @@ public class CodeGenerateDialog extends ThemeColorMaterialDialogBuilder {
@OnCheckedChanged(R.id.checkbox) @OnCheckedChanged(R.id.checkbox)
void onCheckedChanged() { void onCheckedChanged() {
getChild().checked = checkBox.isChecked(); getChild().checked = checkBox.isChecked();
if (checkBox.isChecked() && getChild().group.titleRes != R.string.text_action) if (checkBox.isChecked() && getChild().group.titleRes != R.string.text_options)
uncheckOthers(getParentAdapterPosition(), getChild()); uncheckOthers(getParentAdapterPosition(), getChild());
} }

View File

@@ -18,7 +18,6 @@ import android.widget.TextView;
import com.bumptech.glide.Glide; import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy; import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.makeramen.roundedimageview.RoundedImageView; import com.makeramen.roundedimageview.RoundedImageView;
import com.nickandjerry.dynamiclayoutinflator.lib.DynamicLayoutInflator;
import com.stardust.scriptdroid.R; import com.stardust.scriptdroid.R;
import com.stardust.scriptdroid.network.GlideApp; import com.stardust.scriptdroid.network.GlideApp;
import com.stardust.scriptdroid.network.Glides; import com.stardust.scriptdroid.network.Glides;

View File

@@ -40,7 +40,9 @@ dependencies {
}) })
testCompile 'junit:junit:4.12' testCompile 'junit:junit:4.12'
compile fileTree(dir: 'libs', include: ['*.jar']) compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.github.hyb1996:DynamicLayoutInflator:0.1' compile('com.github.hyb1996:DynamicLayoutInflator:0.22', {
exclude group: 'com.android.support'
})
compile 'org.greenrobot:eventbus:3.0.0' compile 'org.greenrobot:eventbus:3.0.0'
compile 'net.lingala.zip4j:zip4j:1.3.2' compile 'net.lingala.zip4j:zip4j:1.3.2'
compile('com.afollestad.material-dialogs:core:0.9.2.3', { compile('com.afollestad.material-dialogs:core:0.9.2.3', {

View File

@@ -43,7 +43,7 @@ public class ReadOnlyUiObject extends UiObject {
@Override @Override
public String className() { public String className() {
return mNodeInfo.className.toString(); return mNodeInfo.className;
} }
@Override @Override
@@ -53,7 +53,7 @@ public class ReadOnlyUiObject extends UiObject {
@Override @Override
public String packageName() { public String packageName() {
return mNodeInfo.packageName.toString(); return mNodeInfo.packageName;
} }
@Override @Override

View File

@@ -6,7 +6,8 @@ import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.TextView; import android.widget.TextView;
import com.nickandjerry.dynamiclayoutinflator.lib.DynamicLayoutInflator; import com.nickandjerry.dynamiclayoutinflator.lib.DynamicLayoutInflater;
import com.nickandjerry.dynamiclayoutinflator.lib.util.Drawables;
import com.stardust.autojs.core.ui.widget.JsFrameLayout; import com.stardust.autojs.core.ui.widget.JsFrameLayout;
import com.stardust.autojs.core.ui.xml.XmlConverter; import com.stardust.autojs.core.ui.xml.XmlConverter;
import com.stardust.util.MapEntries; import com.stardust.util.MapEntries;
@@ -22,45 +23,13 @@ import java.util.Map;
public class ConvertLayoutInflater implements JsLayoutInflater { public class ConvertLayoutInflater implements JsLayoutInflater {
static {
DynamicLayoutInflator.createViewRunnables();
DynamicLayoutInflator.viewRunnables.put("inputType", new DynamicLayoutInflator.ViewParamRunnable() {
private final Map<String, Integer> mInputTypes = new MapEntries<String, Integer>()
.entry("text", InputType.TYPE_CLASS_TEXT)
.entry("number", InputType.TYPE_CLASS_NUMBER)
.entry("phone", InputType.TYPE_CLASS_PHONE)
.entry("datetime", InputType.TYPE_CLASS_DATETIME)
.entry("password", InputType.TYPE_TEXT_VARIATION_PASSWORD | InputType.TYPE_CLASS_TEXT)
.entry("email", InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS | InputType.TYPE_CLASS_TEXT)
.entry("date", InputType.TYPE_DATETIME_VARIATION_DATE | InputType.TYPE_CLASS_DATETIME)
.entry("time", InputType.TYPE_DATETIME_VARIATION_TIME | InputType.TYPE_CLASS_DATETIME)
.map();
@Override
public void apply(View view, String value, ViewGroup parent, Map<String, String> attrs) {
if (!(view instanceof TextView))
return;
TextView textView = (TextView) view;
String[] types = value.split("[|]");
int inputType = 0;
for (String type : types) {
if (mInputTypes.containsKey(type)) {
inputType |= mInputTypes.get(type);
}
}
if (inputType != 0)
textView.setInputType(inputType);
}
});
}
@Override @Override
public View inflate(Context context, String xml) { public View inflate(Context context, String xml) {
try { try {
String androidLayoutXml = XmlConverter.convertToAndroidLayout(xml); String androidLayoutXml = XmlConverter.convertToAndroidLayout(xml);
JsFrameLayout root = new JsFrameLayout(context); JsFrameLayout root = new JsFrameLayout(context);
DynamicLayoutInflator.inflate(context, androidLayoutXml, root); new DynamicLayoutInflater(context).inflate(androidLayoutXml, root);
return root; return root;
} catch (Exception e) { } catch (Exception e) {
throw new RuntimeException(e); throw new RuntimeException(e);

View File

@@ -7,7 +7,8 @@ import android.util.TypedValue;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import com.nickandjerry.dynamiclayoutinflator.lib.DynamicLayoutInflator; import com.nickandjerry.dynamiclayoutinflator.lib.util.Ids;
/** /**
* Created by Stardust on 2017/5/14. * Created by Stardust on 2017/5/14.
@@ -17,7 +18,7 @@ public class JsViewHelper {
@Nullable @Nullable
public static View findViewByStringId(View view, String id) { public static View findViewByStringId(View view, String id) {
View result = DynamicLayoutInflator.findViewByIdString(view, id); View result = view.findViewById(Ids.getIdFromName(id));
if (result != null) if (result != null)
return result; return result;
if (!(view instanceof ViewGroup)) { if (!(view instanceof ViewGroup)) {

View File

@@ -36,7 +36,7 @@ public class XmlConverter {
.map("button", JsButton.class.getName()) .map("button", JsButton.class.getName())
.map("text", JsTextView.class.getName()) .map("text", JsTextView.class.getName())
.map("input", JsEditText.class.getName()) .map("input", JsEditText.class.getName())
.map("image", "ImageView") .map("img", "ImageView")
); );
private static final AttributeHandler ATTRIBUTE_HANDLER = new AttributeHandler.AttrNameRouter() private static final AttributeHandler ATTRIBUTE_HANDLER = new AttributeHandler.AttrNameRouter()

View File

@@ -18,6 +18,7 @@ allprojects {
maven { maven {
url "https://jitpack.io" url "https://jitpack.io"
} }
google()
} }
} }

View File

@@ -26,6 +26,6 @@ dependencies {
exclude group: 'com.android.support', module: 'support-annotations' exclude group: 'com.android.support', module: 'support-annotations'
}) })
testCompile 'junit:junit:4.12' testCompile 'junit:junit:4.12'
compile 'com.android.support:support-annotations:25.3.1' compile 'com.android.support:support-annotations:25.4.0'
compile 'com.github.hyb1996:settingscompat:1.1.5' compile 'com.github.hyb1996:settingscompat:1.1.5'
} }