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.getkeepsafe.dexcount'
def AAVersion = '4.2.0'
def AAVersion = '4.3.1'
android {
compileSdkVersion 25
@@ -9,8 +9,8 @@ android {
applicationId "com.stardust.scriptdroid"
minSdkVersion 17
targetSdkVersion 23
versionCode 219
versionName "3.0.0 Alpha19"
versionCode 221
versionName "3.0.0 Alpha21"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
multiDexEnabled true
ndk {

View File

@@ -4,7 +4,7 @@ ui.statusBarColor("#03a9f4");
ui.layout(
<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">
<input id="qq" h="50" hint="请输入QQ号"/>
<button id="ok" text="确定" />

View File

@@ -13,7 +13,7 @@ ui.layout(
<frame background="#AA0000">
<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="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="decrypt" text="Decrypt"/>
</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>
<vertical h="auto" align="center" margin="0 50">
<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"/>
</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"/>
</linear>
<linear gravity="center">
@@ -36,15 +36,15 @@ function showRegisterUI(){
<frame>
<vertical h="auto" align="center" margin="0 50">
<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"/>
</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"/>
</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"/>
</linear>
<linear gravity="center">

View File

@@ -1,12 +1,22 @@
package com.stardust.scriptdroid;
import android.graphics.Bitmap;
import android.graphics.drawable.Drawable;
import android.net.Uri;
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.nickandjerry.dynamiclayoutinflator.lib.ImageLoader;
import com.nickandjerry.dynamiclayoutinflator.lib.util.Drawables;
import com.squareup.leakcanary.LeakCanary;
import com.stardust.scriptdroid.autojs.AutoJs;
import com.stardust.scriptdroid.autojs.key.GlobalKeyObserver;
import com.stardust.scriptdroid.autojs.record.GlobalRecorder;
import com.stardust.scriptdroid.network.GlideApp;
import com.stardust.scriptdroid.tool.CrashHandler;
import com.stardust.scriptdroid.tool.JsBeautifierFactory;
import com.stardust.scriptdroid.ui.error.ErrorReportActivity;
@@ -63,8 +73,62 @@ public class App extends MultiDexApplication {
JsBeautifierFactory.initJsBeautify(this, "js/jsbeautify.js");
GlobalKeyObserver.getSingleton();
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() {

View File

@@ -193,7 +193,7 @@ public class CodeGenerateDialog extends ThemeColorMaterialDialogBuilder {
@OnCheckedChanged(R.id.checkbox)
void onCheckedChanged() {
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());
}

View File

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

View File

@@ -40,7 +40,9 @@ dependencies {
})
testCompile 'junit:junit:4.12'
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 'net.lingala.zip4j:zip4j:1.3.2'
compile('com.afollestad.material-dialogs:core:0.9.2.3', {

View File

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

View File

@@ -6,7 +6,8 @@ import android.view.View;
import android.view.ViewGroup;
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.xml.XmlConverter;
import com.stardust.util.MapEntries;
@@ -22,45 +23,13 @@ import java.util.Map;
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
public View inflate(Context context, String xml) {
try {
String androidLayoutXml = XmlConverter.convertToAndroidLayout(xml);
JsFrameLayout root = new JsFrameLayout(context);
DynamicLayoutInflator.inflate(context, androidLayoutXml, root);
new DynamicLayoutInflater(context).inflate(androidLayoutXml, root);
return root;
} catch (Exception e) {
throw new RuntimeException(e);

View File

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

View File

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

View File

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

View File

@@ -26,6 +26,6 @@ dependencies {
exclude group: 'com.android.support', module: 'support-annotations'
})
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'
}