Моя проблема проста: как сделать такой же эффект иконок на рабочем столе Android, нажав на них? Другими словами, как сделать этот временный эффект заднего освещения? В общем, как реализовать эффект подсветки кнопок андроида изображения, окружающие край изображения? Возможно, я хочу сделать это программно, не вставляя много изображений в свое приложение. Заранее спасибо.Как сделать изображение края изображения андроида будет выделено при нажатии на него
ответ
я нашел что-то работу:
public Bitmap highlightImage(Bitmap src) {
// create new bitmap, which will be painted and becomes result image
Bitmap bmOut = Bitmap.createBitmap(src.getWidth() , src.getHeight() , Bitmap.Config.ARGB_8888);
// setup canvas for painting
Canvas canvas = new Canvas(bmOut);
// setup default color
canvas.drawColor(0, PorterDuff.Mode.CLEAR);
// create a blur paint for capturing alpha
Paint ptBlur = new Paint();
ptBlur.setMaskFilter(new BlurMaskFilter(15, Blur.NORMAL));
int[] offsetXY = new int[2];
// capture alpha into a bitmap
Bitmap bmAlpha = src.extractAlpha(ptBlur, offsetXY);
// create a color paint
Paint ptAlphaColor = new Paint();
ptAlphaColor.setColor(0xFFFFFFFF);
// paint color for captured alpha region (bitmap)
canvas.drawBitmap(bmAlpha, offsetXY[0], offsetXY[1], ptAlphaColor);
// free memory
bmAlpha.recycle();
// paint the image source
canvas.drawBitmap(src, 0, 0, null);
// return out final image
return bmOut;
}
Вы можете использовать этот метод, например, в кнопки OnClick, чтобы выделить края растрового изображения
Пусть это мой test_button.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@drawable/test_effect" />
<item android:state_pressed="false" android:drawable="@drawable/your_image_name" />
<item android:drawable="@drawable/your_image_name" /> <!-- default -->
Это как ваш test_effect.xml должен выглядеть:
<?xml version="1.0" encoding="utf-8"?>
<item>
<shape android:shape="rectangle">
<gradient
android:endColor="#3399CCFF"
android:startColor="#8899CCFF"/>
<padding android:top="5dp" android:right="5dp" android:bottom="5dp" android:left="5dp" />
<corners android:radius="5dp"/>
</shape>
</item>
<!-- Background -->
<item android:drawable="@drawable/your_image_name"/>
Примечание: ваше имя_имя везде одинаково.
спасибо за написание кода. Мое сомнение в том, что вы описываете градиент, покрывающий весь фон, и я уже в состоянии это сделать, но я хочу создать вторую линию замирания, которая идеально подходит к краю изображения внутри изображения: изображение a тело с прозрачным фоном, и я хочу, чтобы линия замирания была параллельна к краю тела. Я не знаю, могу ли я это объяснить ... –
Извините, но я не мог понять, что вы говорите. =/ – Uma
Можете ли вы разместить свой код – Uma
Вы должны использовать селектор – Uma
@Rani, но селектор позволяет мне изменить фоновое изображение, поэтому я должен обмениваться изображениями, могу ли я сделать что-то программно, не создавая несколько файлов изображений? –
у вас может быть еще один файл xml, в котором вы можете дать тот же фон и добавить теневой эффект вокруг него. – Uma