伊谢尔伦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);