亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

請問帶有下拉陰影的自定義圖像視圖

請問帶有下拉陰影的自定義圖像視圖

梵蒂岡之花 2019-08-03 12:16:16
帶有下拉陰影的自定義圖像視圖好吧,我一直在閱讀和搜索,現在我的頭撞在墻上,試圖找出這一點。到目前為止,我的情況如下: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個贊

好吧,我沒有預見到這個問題會有更多的答案,所以我現在要做的只是一個矩形圖像的解決方案。我使用了以下NinePatch:
以及XML中的適當填充:

<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"
        />

為了獲得一個相當好的結果:
不太理想,但也行。



查看完整回答
反對 回復 2019-08-03
?
DIEA

TA貢獻1820條經驗 獲得超3個贊

這是取自Romain Guy在Devoxx的演講,pdf這里.

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);

希望這能幫上忙。

注記

  1. 不要忘記蜂窩和上面你需要調用

    setLayerType(LAYER_TYPE_SOFTWARE, mShadow)

    ,否則你將看不到你的影子!(@Dmitriy_Boichenko)
  2. SetShadowLayer

    不幸的是,硬件加速不能工作,因此它大大降低了性能(@馬特磨損)




查看完整回答
反對 回復 2019-08-03
  • 3 回答
  • 0 關注
  • 381 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號