GithubHelp home page GithubHelp logo

yinglannull / shadowimageview Goto Github PK

View Code? Open in Web Editor NEW
2.6K 45.0 305.0 8.19 MB

🔥可以根据图片内容变阴影颜色,更加细腻的阴影效果 It can change color according to the picture, more delicate shadow effect

License: Apache License 2.0

Java 100.00%
android image java shadow ui view

shadowimageview's Introduction

ShadowImageView

Abstract

More exquisite shadow effect, used in some special scene to enhance the user experience.

Chinese Documents

查看中文文档

Picture

1 2

GIF

1

Add Picture

3

Demo

Download App

Usage

Gradle

dependencies {
    compile 'com.yinglan.shadowimageview:shadowimageview:1.0.4'
}

In layout

	    <com.yinglan.shadowimageview.ShadowImageView
	            android:id="@+id/shadow"
                android:layout_width="300dp"
                android:layout_height="300dp"
                app:shadowRound="20dp"
                app:shadowSrc="@mipmap/lotus"
                app:shadowColor="@color/colorAccent"/>

Set Picture

    shadow.setImageResource(resID); 
    shadow.setImageDrawable(drawable); 
    shadow.setImageBitmap(bitmap);

Set the picture radius

    shadow.setImageRadius(radius);

Set the shadow color of the image

    shadow.setImageShadowColor(color);

Notice

SeePPMusicImageShadow, do a simple implementation, there may be a potential problem and use learning exchanges, looking forward to you have a better way of implementation.

License

The work done has been licensed under Apache License 2.0. The license file can be found here. You can find out more about the license at:

http://www.apache.org/licenses/LICENSE-2.0

shadowimageview's People

Contributors

yinglannull avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

shadowimageview's Issues

demo 安装后一打开就闪退

java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.yinglan.shadowdemo/com.yinglan.shadowdemo.MainActivity}: java.lang.ClassNotFoundException: Didn't find class "com.yinglan.shadowdemo.MainActivity" on path: DexPathList[[zip file "/data/app/com.yinglan.shadowdemo-1/base.apk"],nativeLibraryDirectories=[/data/app/com.yinglan.shadowdemo-1/lib/arm64, /system/lib64, /vendor/lib64]]

能不能把设置阴影效果的方法开放出来

你好 我之前也尝试过用Palette的方法提取到图片的颜色 但是没有发散效果是纯色的 没有作者实现的这么好 但是你这个能不能把设置四周阴影效果的方法都开放出来 让用户可以自定义上下左右四个方向的阴影效果?或者回复一下我怎么设置 谢谢

内存抖动

内存抖动,不知道你发现没有...ShadowImageView dispatchDraw()死循环

Memory Leak

There's a memory leak in Support.v7.Pallette

StateListDrawable 会报类型转换错误

修改的

if (((ImageView) view).getDrawable() instanceof ClipDrawable) {
rgb = Color.parseColor("#8D8D8D");
shadowPaint.setShadowLayer(radius, 0, shadowColor, getDarkerColor(rgb));
} else if (((ImageView) view).getDrawable() instanceof ColorDrawable) {
rgb = ((ColorDrawable) ((ImageView) view).getDrawable()).getColor();
shadowPaint.setShadowLayer(40, 0, 28, getDarkerColor(rgb));
} else {
if (((ImageView) view).getDrawable() instanceof StateListDrawable) {
StateListDrawable drawable = (StateListDrawable) ((ImageView) view).getDrawable();
bitmap = ((BitmapDrawable) drawable.getCurrent()).getBitmap();
} else {
bitmap = ((BitmapDrawable) ((ImageView) view).getDrawable()).getBitmap();
}

.............
}

使用glide加载图片内存泄漏

I/Choreographer: Skipped 46 frames! The application may be doing too much work on its main thread. D/dalvikvm: GC_FOR_ALLOC freed 116K, 9% free 43366K/47316K, paused 29ms, total 29ms D/dalvikvm: GC_FOR_ALLOC freed 40K, 8% free 46222K/50196K, paused 26ms, total 32ms D/dalvikvm: GC_FOR_ALLOC freed 8K, 8% free 49676K/53660K, paused 22ms, total 23ms D/dalvikvm: GC_FOR_ALLOC freed 3541K, 12% free 51413K/58216K, paused 16ms, total 18ms D/dalvikvm: GC_FOR_ALLOC freed 6438K, 16% free 51464K/60672K, paused 25ms, total 25ms

使用系统的ImageView,一样的加载方式,系统的正常,ShadowImageView内存泄漏

与原repo的创意相近但方式不同

在PPMusicImageShadow的代码中有这样一段代码

    func applyBlur(ciimage : CIImage) -> UIImage?{
        
        let overlay = CIImage.init(color: CIColor(color: UIColor(white: 0.0, alpha: 0.3)))
        overlay.cropping(to: ciimage.extent)
        
        
        if let filter = CIFilter(name: "CIGaussianBlur") {
            
            filter.setValue(ciimage, forKey: kCIInputImageKey)
            filter.setValue(blurRadius, forKey: kCIInputRadiusKey)
            let context = CIContext(options: nil)
            if let output = filter.outputImage,
                let cgimg = context.createCGImage(output, from: ciimage.extent)
            {
                
                return UIImage(cgImage: cgimg)
            }
        }
        
        return nil
    }

根据这段代码我们可以猜测到,原来的实现方案应该是将图片资源进行高斯模糊然后绘制到View的底部,希望对你接下来的开发有帮助

AndroidX中显示没有效果

使用AndroidAutoSize屏幕适配下,不能正常显示。
image
有没有什么办法在不取消适配的情况下,解决这个问题

problem

可以加载网络图片吗?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.