ठीक है, मैं पढ़ रहा हूं और चारों ओर खोज रहा हूं, और अब मैं दीवार के खिलाफ अपना सिर पीट रहा हूं ताकि यह पता लगाने की कोशिश की जा सके। यहाँ मेरे पास अभी तक क्या है:
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);
}
@Override
protected void onDraw(Canvas canvas)
{
Rect r = mRect;
Paint paint = mPaint;
canvas.drawRect(r, paint);
super.onDraw(canvas);
}
@Override
protected 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 मिलता है।
कोई विचार? धन्यवाद।
संपादित करें: तो मैंने IRain चैनल में कुछ रोमैनग्यू के साथ बात की, और मेरे पास अब नीचे दिए गए कोड के साथ सादे आयताकार चित्रों के लिए काम कर रहा है। यह अभी भी छाया को सीधे मेरे बिटमैप की पारदर्शिता की ओर आकर्षित नहीं करेगा, लेकिन मैं अभी भी उस पर काम कर रहा हूं।
@Override
protected void onDraw(Canvas canvas)
{
Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.omen);
Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setShadowLayer(5.5f, 6.0f, 6.0f, Color.BLACK);
canvas.drawColor(Color.GRAY);
canvas.drawRect(50, 50, 50 + bmp.getWidth(), 50 + bmp.getHeight(), paint);
canvas.drawBitmap(bmp, 50, 50, null);
}