帶有下拉陰影的自定義圖像視圖好吧,我一直在閱讀和搜索,現(xiàn)在我的頭撞在墻上,試圖找出這一點(diǎn)。到目前為止,我的情況如下:package com.pockdroid.sandbox;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.Rect;import android.widget.ImageView;public class ShadowImageView extends ImageView {private Rect mRect;private Paint mPaint;public ShadowImageView(Context context){
super(context);
mRect = new Rect();
mPaint = new Paint();
mPaint.setAntiAlias(true);
mPaint.setShadowLayer(2f, 1f, 1f, Color.BLACK);}@Overrideprotected void onDraw(Canvas canvas) {
Rect r = mRect;
Paint paint = mPaint;
canvas.drawRect(r, paint);
super.onDraw(canvas);}@Overrideprotected void onMeasure(int w, int h){
super.onMeasure(w,h);
int mH, mW;
mW = getSuggestedMinimumWidth() < getMeasuredWidth()? getMeasuredWidth() : getSuggestedMinimumWidth();
mH = getSuggestedMinimumHeight() < getMeasuredHeight()? getMeasuredHeight() : getSuggestedMinimumHeight();
setMeasuredDimension(mW + 5, mH + 5);}}測(cè)量中的“+5”是暫時(shí)的;據(jù)我所知,我需要做一些數(shù)學(xué)來確定下降陰影添加到畫布中的大小,對(duì)嗎?但當(dāng)我用這個(gè):public View getView(int position, View convertView, ViewGroup parent) {
ShadowImageView sImageView;
if (convertView == null) {
sImageView = new ShadowImageView(mContext);
GridView.LayoutParams lp = new GridView.LayoutParams(85, 85);
sImageView.setLayoutParams(lp);
sImageView.setScaleType(ImageView.ScaleType.CENTER);
sImageView.setPadding(5,5,5,5);
} else {
sImageView = (ShadowImageView) convertView;
}
sImageView.setImageBitmap(bitmapList.get(position));
return sImageView;}在我的ImageView中,當(dāng)我運(yùn)行程序時(shí),我仍然只得到一個(gè)普通的ImageView。有什么想法嗎?謝謝。
3 回答

Cats萌萌
TA貢獻(xiàn)1805條經(jīng)驗(yàn) 獲得超9個(gè)贊
<ImageView android:id="@+id/image_test" android:background="@drawable/drop_shadow" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingLeft="6px" android:paddingTop="4px" android:paddingRight="8px" android:paddingBottom="9px" android:src="@drawable/pic1" />

DIEA
TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超2個(gè)贊
Paint mShadow = new Paint(); // radius=10, y-offset=2, color=black mShadow.setShadowLayer(10.0f, 0.0f, 2.0f, 0xFF000000); // in onDraw(Canvas) canvas.drawBitmap(bitmap, 0.0f, 0.0f, mShadow);
注記
不要忘記蜂窩和上面你需要調(diào)用 setLayerType(LAYER_TYPE_SOFTWARE, mShadow)
,否則你將看不到你的影子!(@Dmitriy_Boichenko) SetShadowLayer
不幸的是,硬件加速不能工作,因此它大大降低了性能(@馬特磨損)
- 3 回答
- 0 關(guān)注
- 371 瀏覽
添加回答
舉報(bào)
0/150
提交
取消