牙叔教程 簡單易懂javascript
本篇教程是一個自定義控件的教學演示, 無任何實際功能, 更沒有提現功能, 那只是一個自定義按鈕java
主要演示自動義控件和動畫, 除此以外沒有其餘任何功能 android
再次強調, 本腳本只是UI演示, 無任何其餘功能 canvas
autojs自定義控件例子markdown
9.0.4網絡
importClass(android.view.View);
importClass(android.graphics.Color);
importClass(android.graphics.drawable.GradientDrawable);
importClass(android.text.Spannable);
importClass(android.text.SpannableStringBuilder);
importClass(android.text.style.ForegroundColorSpan);
importClass(android.graphics.LinearGradient);
importClass(android.graphics.Shader);
importClass(android.graphics.Bitmap);
importClass("android.graphics.BitmapFactory");
importClass(android.graphics.BitmapShader);
importClass(android.view.WindowManager);
importClass(android.widget.ArrayAdapter);
importClass(android.widget.AdapterView);
importClass(android.net.Uri);
importClass(java.util.ArrayList);
importClass(android.graphics.PaintFlagsDrawFilter);
importClass(android.graphics.Color);
importClass(android.animation.ObjectAnimator);
importClass(android.animation.AnimatorListenerAdapter);
importClass(android.util.TypedValue);
複製代碼
function getSpinnerAdapter(dataList) {
let adapter = JavaAdapter(android.widget.SpinnerAdapter, {
getCount: function () {
return dataList.length;
},
getItem: function (position) {
return dataList[position];
},
getItemId: function (position) {
return position;
},
getViewTypeCount: function () {
return 1;
},
getItemViewType: function (pos) {
return 0;
},
getDropDownView: function (position, convertView, parent) {
log("getDropDownView");
if (!convertView) {
let boxXml = (
<frame> <TextView id="_text" gravity="center" textColor="#000000" textSize="20sp" /> </frame>
);
convertView = ui.inflate(boxXml);
}
let item = dataList[position];
convertView.getChildAt(0).setText(item);
return convertView;
},
getView: function (position, convertView, parent) {
log("getView");
if (!convertView) {
let boxXml = (
<horizontal> <text id="name" paddingLeft="3" android:layout_width="wrap_content" android:layout_height="match_parent" textColor="#ffffff" gravity="center" textSize="10sp" ></text> <img tint="#ffffff" padding="-18 0 0 0" android:layout_width="30dp" android:layout_height="match_parent" android:layout_gravity="center_vertical" src="@drawable/ic_arrow_drop_down_black_48dp" ></img> </horizontal>
);
convertView = ui.inflate(boxXml);
}
let item = dataList[position];
convertView.name.setText(item);
return convertView;
},
});
return adapter;
}
複製代碼
function setOnTouchListener(floatyWindow, childView, clickAction) {
childView.setOnTouchListener(function (view, event) {
switch (event.getAction()) {
case event.ACTION_DOWN:
log("ACTION_DOWN");
x = event.getRawX();
y = event.getRawY();
windowX = floatyWindow.getX();
windowY = floatyWindow.getY();
downTime = new Date().getTime();
return true;
case event.ACTION_MOVE:
log("ACTION_MOVE");
//移動手指時調整懸浮窗位置
floatyWindow.setPosition(windowX + (event.getRawX() - x), windowY + (event.getRawY() - y));
return true;
case event.ACTION_UP:
log("ACTION_UP");
log("按下時長: " + (new Date().getTime() - downTime));
//若是判斷爲長按,退出腳本
if (new Date().getTime() - downTime > 3000 && event.getRawX() - x < 5 && event.getRawY() - y < 5) {
exit();
} else {
//手指彈起時若是偏移很小則判斷爲點擊
if (Math.abs(event.getRawY() - y) < 5 && Math.abs(event.getRawX() - x) < 5) {
clickAction();
}
}
return true;
}
return true;
});
}
複製代碼
function getViewAttr(ballView) {
let parentView = ballView.getParent();
let parentViewWidth = parentView.getWidth();
let parentViewHeight = parentView.getHeight();
let parentViewLeft = parentView.getLeft();
let parentViewRight = parentView.getRight();
let parentViewX = parentView.getX();
let parentViewY = parentView.getY();
let parentViewPaddingLeft = parentView.getPaddingLeft();
let parentViewPaddingRight = parentView.getPaddingRight();
let ballViewWidth = ballView.getWidth();
let ballViewHeight = ballView.getHeight();
let ballViewLeft = ballView.getLeft();
let ballViewRight = ballView.getRight();
let ballViewX = ballView.getX();
let ballViewY = ballView.getY();
let ball = {
parentViewWidth: parentViewWidth,
parentViewHeight: parentViewHeight,
parentViewLeft: parentViewLeft,
parentViewRight: parentViewRight,
parentViewX: parentViewX,
parentViewY: parentViewY,
parentViewPaddingRight: parentViewPaddingRight,
parentViewPaddingLeft: parentViewPaddingLeft,
ballViewWidth: ballViewWidth,
ballViewHeight: ballViewHeight,
ballViewLeft: ballViewLeft,
ballViewRight: ballViewRight,
ballViewX: ballViewX,
ballViewY: ballViewY,
};
return ball;
}
複製代碼
function setBackgroundRoundedRectangle(view) {
gradientDrawable = new GradientDrawable();
gradientDrawable.setShape(GradientDrawable.RECTANGLE);
gradientDrawable.setStroke(5, colors.parseColor(增量更新按鈕顏色));
gradientDrawable.setCornerRadius(10);
gradientDrawable.setSize(50, 50);
view.setBackground(gradientDrawable);
}
複製代碼
mPopWindow.setOnDismissListener(
new PopupWindow.OnDismissListener({
onDismiss: function () {
backgroundAlpha(1);
},
})
);
複製代碼
部份內容來自網絡 本教程僅用於學習, 禁止用於其餘用途ide