android - 怎么给一个imageview设置一个shadow 设置一个阴影
阿神
阿神 2017-04-17 14:52:20
0
1
679

怎么给一个imageview设置一个shadow 设置一个阴影

阿神
阿神

闭关修行中......

全員に返信(1)
伊谢尔伦
比較的単純な方法ですが、効果は醜いです。同様に、線を描く代わりに影絵を使用すると、良い結果が得られます。

ImageView をオーバーライドする

パブリック クラス HKImageView extends ImageView {

    public HKImageView(Context context, AttributeSet attrs) {
        super(context, attrs, 0);
    }

    public HKImageView(Context コンテキスト) {
        スーパー(コンテキスト);
    }

    @オーバーライド
    protected void onDraw(Canvas Canvas) {
        Log.d("lg", "onDraw");
        super.onDraw(キャンバス);

        // 境界線を描画します
        Rectrect1 = getRect(canvas);
        ペイントペイント = new Paint();
        ペイント.setColor(Color.GRAY);
        ペイント.setStyle(ペイント.スタイル.STROKE);

        // 境界線を描画します
        Canvas.drawRect(rect1, ペイント);
        
        ペイント.setColor(Color.LTGRAY);

        //右側の影をシミュレートする垂直線を描画します
        Canvas.drawLine(rect1.right + 1、rect1.top + 2、rect1.right + 1、
                ect1.bottom + 2、ペイント);
        //水平線を引いて下の影をシミュレートします
        Canvas.drawLine(rect1.left + 2、rect1.bottom + 1、rect1.right + 2、
                ect1.bottom + 1、ペイント);
        
        //右側の影をシミュレートする垂直線を描画します
        Canvas.drawLine(rect1.right + 2、rect1.top + 3、rect1.right + 2、
                ect1.bottom + 3、ペイント);
        //水平線を引いて下の影をシミュレートします
        Canvas.drawLine(rect1.left + 3、rect1.bottom + 2、rect1.right + 3、
                ect1.bottom + 2、ペイント);
    }

    Rect getRect(キャンバス キャンバス) {
        Rect 長方形 = Canvas.getClipBounds();
        ect.bottom -= getPaddingBottom();
        ect.right -= getPaddingRight();
        ect.left += getPaddingLeft();
        ect.top += getPaddingTop();
        四角形を返します。
    }
}

使用
効果を得るには画像にパディングを追加する必要があります
imageView.setPadding(3, 3, 5, 5);

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート