Как выполнить или реализовать пакетный файл в Java-проекте с затмением

Чтобы создать этот эффект, мне было проще всего создать весь вид, перекрывающий экран, а затем вычитая части экрана с помощью слоев и UIBezierPaths. Для реализации Swift:

// Create a view filling the screen.
let overlay = UIView(frame: CGRectMake(0, 0, 
    UIScreen.mainScreen().bounds.width,
    UIScreen.mainScreen().bounds.height))

// Set a semi-transparent, black background.
overlay.backgroundColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.85)

// Create the initial layer from the view bounds.
let maskLayer = CAShapeLayer()
maskLayer.frame = overlay.bounds
maskLayer.fillColor = UIColor.blackColor().CGColor

// Create the frame for the circle.
let radius: CGFloat = 50.0
let rect = CGRectMake(
        CGRectGetMidX(overlay.frame) - radius,
        CGRectGetMidY(overlay.frame) - radius,
        2 * radius,
        2 * radius)

// Create the path.
let path = UIBezierPath(rect: overlay.bounds)
maskLayer.fillRule = kCAFillRuleEvenOdd

// Append the circle to the path so that it is subtracted.
path.appendPath(UIBezierPath(ovalInRect: rect))
maskLayer.path = path.CGPath

// Set the mask of the view.
overlay.layer.mask = maskLayer

// Add the view so it is visible.
self.view.addSubview(overlay)

Я проверил код выше, и вот результат:

Я добавил библиотека CocoaPods, которая абстрагирует многие из вышеуказанного кода и позволяет легко создавать наложения с прямоугольными / круглыми отверстиями, позволяя пользователю взаимодействовать с представлениями за наложением. Я использовал его для создания этого учебника для одного из наших приложений:

Tutorial using the TAOverlayView [/g2]

Библиотека называется TAOverlayView и открыта источник под Apache 2.0. Надеюсь, вы сочтете это полезным!

1
задан Ballon 24 October 2010 в 17:11
поделиться