帶有下拉陰影的自定義圖像視圖好吧,我一直在閱讀和搜索,現在我的頭撞在墻上,試圖找出這一點。到目前為止,我的情況如下: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);}}測量中的“+5”是暫時的;據我所知,我需要做一些數學來確定下降陰影添加到畫布中的大小,對嗎?但當我用這個: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中,當我運行程序時,我仍然只得到一個普通的ImageView。有什么想法嗎?謝謝。
3 回答

Cats萌萌
TA貢獻1805條經驗 獲得超9個贊
<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貢獻1820條經驗 獲得超3個贊
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);
注記
不要忘記蜂窩和上面你需要調用 setLayerType(LAYER_TYPE_SOFTWARE, mShadow)
,否則你將看不到你的影子!(@Dmitriy_Boichenko) SetShadowLayer
不幸的是,硬件加速不能工作,因此它大大降低了性能(@馬特磨損)
- 3 回答
- 0 關注
- 381 瀏覽
添加回答
舉報
0/150
提交
取消