検索

ホームページ  >  に質問  >  本文

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

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

阿神阿神2773日前683

全員に返信(1)返信します

  • 伊谢尔伦

    伊谢尔伦2017-04-17 14:54:20

    比較的単純な方法ですが、効果は醜いです。同様に、線を描く代わりに影絵を使用すると、良い結果が得られます。
    
    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
  • キャンセル返事