1
This commit is contained in:
@@ -0,0 +1,158 @@
|
||||
import LinearLayout from 'android.widget.LinearLayout';
|
||||
import Context from 'android.content.Context'
|
||||
import RelativeLayout from 'android.widget.RelativeLayout';
|
||||
import ViewGroup from 'android.view.ViewGroup';
|
||||
import View from 'android.view.View';
|
||||
import { XRUN_START_LOGO_OPTS, RGBA } from "../interface.uts"
|
||||
import Color from 'android.graphics.Color';
|
||||
import Gravity from 'android.view.Gravity';
|
||||
import GradientDrawable from 'android.graphics.drawable.GradientDrawable';
|
||||
import TextView from 'android.widget.TextView';
|
||||
import Typeface from 'android.graphics.Typeface';
|
||||
import TextUtils from 'android.text.TextUtils';
|
||||
import Uri from 'android.net.Uri';
|
||||
import ObjectAnimator from 'android.animation.ObjectAnimator';
|
||||
import ValueAnimator from 'android.animation.ValueAnimator';
|
||||
import TimeInterpolator from 'android.animation.TimeInterpolator';
|
||||
import MotionEvent from 'android.view.MotionEvent';
|
||||
import { hexToRgb } from "../libs/color.uts"
|
||||
import ViewPropertyAnimator from 'android.view.ViewPropertyAnimator';
|
||||
import ScrollView from 'android.widget.ScrollView';
|
||||
import FrameLayout from 'android.widget.FrameLayout';
|
||||
|
||||
import Fresco from 'com.facebook.fresco.Fresco';
|
||||
// import DraweeController from 'com.facebook.drawee.interfaces.DraweeController';
|
||||
import SimpleDraweeView from 'com.facebook.drawee.view.SimpleDraweeView';
|
||||
import File from 'java.io.File';
|
||||
import WindowManager from 'android.view.WindowManager';
|
||||
import WindowManagerWrapper from 'com.dcloud.android.widget.toast.SafeToastContext.WindowManagerWrapper';
|
||||
import Build from 'android.os.Build';
|
||||
import BitmapFactory from "android.graphics.BitmapFactory";
|
||||
import Bitmap from 'android.graphics.Bitmap';
|
||||
import ImageView from 'android.widget.ImageView';
|
||||
// import ImageRequest from 'com.facebook.imagepipeline.request.ImageRequest';
|
||||
// import ImageRequestBuilder from 'com.facebook.imagepipeline.request.ImageRequestBuilder';
|
||||
|
||||
|
||||
let maskerDom : null | RelativeLayout = null;
|
||||
let maskDomId = 686
|
||||
let tid = 0
|
||||
let isClsoing = false
|
||||
function px2dp(n : number) : number {
|
||||
const mets = UTSAndroid.getAppContext()!.resources!.getDisplayMetrics()
|
||||
return mets.density * n
|
||||
}
|
||||
|
||||
export function hideRunLogo() {
|
||||
let decorView = UTSAndroid.getUniActivity()!.window.decorView as ViewGroup
|
||||
let mk = decorView.findViewById<View>((maskDomId).toInt())
|
||||
if (mk != null) {
|
||||
decorView.removeView(mk)
|
||||
}
|
||||
}
|
||||
function rgbToColorNumber(rgba : RGBA) : Int {
|
||||
return Color.argb((rgba.a * 255).toInt(), rgba!.r.toInt(), rgba!.g.toInt(), rgba!.b.toInt())
|
||||
}
|
||||
|
||||
export function showRunLogo(opts : XRUN_START_LOGO_OPTS) {
|
||||
|
||||
const context = UTSAndroid.getAppContext()! as Context
|
||||
|
||||
let win = context.getSystemService(Context.WINDOW_SERVICE) as WindowManager;
|
||||
|
||||
|
||||
|
||||
|
||||
let decorView = UTSAndroid.getUniActivity()!.window.decorView as ViewGroup
|
||||
let config : XRUN_START_LOGO_OPTS = opts!
|
||||
|
||||
try {
|
||||
let mk = decorView.findViewById<View | null>((maskDomId).toInt())
|
||||
if (mk != null) {
|
||||
decorView.removeView(mk!)
|
||||
}
|
||||
|
||||
} catch (e) {
|
||||
//TODO handle the exception
|
||||
}
|
||||
if (isClsoing) return;
|
||||
let bgColor = rgbToColorNumber(hexToRgb(config.bgColor)!);
|
||||
let logoBgcolor = rgbToColorNumber(hexToRgb(config.logoBgColor)!);
|
||||
let fontColor = rgbToColorNumber(hexToRgb(config.fontColor)!);
|
||||
|
||||
let maskerDom = new RelativeLayout(context)
|
||||
let maskerDomLayrPrams = new LinearLayout.LayoutParams(
|
||||
ViewGroup.LayoutParams.MATCH_PARENT,
|
||||
ViewGroup.LayoutParams.MATCH_PARENT
|
||||
)
|
||||
|
||||
maskerDom.setLayoutParams(maskerDomLayrPrams)
|
||||
maskerDom.setBackgroundColor(bgColor)
|
||||
maskerDom.setId((maskDomId).toInt())
|
||||
|
||||
//创建一个容器用来在底部显示.
|
||||
|
||||
let container = new LinearLayout(context);
|
||||
container.setOrientation(LinearLayout.VERTICAL)
|
||||
container.setGravity(Gravity.CENTER)
|
||||
let containerLayrPrams = new RelativeLayout.LayoutParams(
|
||||
ViewGroup.LayoutParams.MATCH_PARENT,
|
||||
ViewGroup.LayoutParams.WRAP_CONTENT
|
||||
)
|
||||
containerLayrPrams.addRule(RelativeLayout.CENTER_HORIZONTAL)
|
||||
containerLayrPrams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM)
|
||||
let containerPadding = px2dp(80).toInt();
|
||||
container.setPadding(0, 0, 0, containerPadding)
|
||||
container.setLayoutParams(containerLayrPrams)
|
||||
|
||||
// 创建一个logo容器
|
||||
let logoBox = new LinearLayout(context)
|
||||
logoBox.setBottom(px2dp(16).toInt())
|
||||
let wpxlogoBox_w = px2dp(config.width + config.logoPadding).toInt();
|
||||
let wpxlogoBox_h = px2dp(config.height + config.logoPadding).toInt();
|
||||
logoBox.setGravity(Gravity.CENTER)
|
||||
|
||||
// 设置圆角背景
|
||||
let bg = new GradientDrawable()
|
||||
bg.setColor(logoBgcolor)
|
||||
bg.setCornerRadius((px2dp(config.round)).toFloat())
|
||||
logoBox.setClipToOutline(true)
|
||||
logoBox.setBackground(bg)
|
||||
logoBox.setLayoutParams(new LinearLayout.LayoutParams(wpxlogoBox_w, wpxlogoBox_h))
|
||||
|
||||
function loadImageFromAssets(fname : string) : Bitmap|null{
|
||||
let bitmap : Bitmap | null = null
|
||||
try {
|
||||
let assetManager = UTSAndroid.getAppContext()!.getAssets()
|
||||
let inputStream = assetManager.open(fname)
|
||||
bitmap = BitmapFactory.decodeStream(inputStream)
|
||||
} catch (e) {
|
||||
|
||||
}
|
||||
|
||||
return bitmap
|
||||
}
|
||||
|
||||
// 创建图片显示logo;
|
||||
let img = new ImageView(context)
|
||||
img.setImageBitmap(loadImageFromAssets(config.logo))
|
||||
img.setLayoutParams(new FrameLayout.LayoutParams(px2dp(config.width).toInt(), px2dp(config.height).toInt()))
|
||||
logoBox.addView(img)
|
||||
|
||||
//底部的版权.
|
||||
let titleDiv = new TextView(context)
|
||||
// let titleDivheight = px2dp(titleHeight).toInt();
|
||||
titleDiv.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT))
|
||||
titleDiv.setGravity(Gravity.CENTER)
|
||||
titleDiv.setTextSize((config.fontSize).toFloat())
|
||||
titleDiv.setTextColor(fontColor)
|
||||
titleDiv.setText(config.rightText)
|
||||
let titleDivPadding = px2dp(8).toInt();
|
||||
titleDiv.setPadding(0, titleDivPadding, 0, 0)
|
||||
|
||||
container.addView(logoBox)
|
||||
container.addView(titleDiv)
|
||||
maskerDom.addView(container)
|
||||
decorView.addView(maskerDom!)
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user