Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
spydark91
85 / 85 / 2
Регистрация: 03.03.2011
Сообщений: 1,873
#1

Выбор фрагмента на картинке фильтром - Программирование Android

11.06.2013, 17:20. Просмотров 428. Ответов 8
Метки нет (Все метки)

Может быть есть какой-нибудь стандартный способ выбирать кусок картинки, наложив на оставшуюся часть картинки фильтр
есть идея, но она попахивает супер извращенным велосипедом

Добавлено через 19 часов 17 минут
нет идей?)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
YuraAAA
1566 / 1308 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
11.06.2013, 20:48     Выбор фрагмента на картинке фильтром #2
click
spydark91
85 / 85 / 2
Регистрация: 03.03.2011
Сообщений: 1,873
12.06.2013, 20:31  [ТС]     Выбор фрагмента на картинке фильтром #3
посмотрел повнимательнее пример с того сайта, это несколько не то, что требуется

нарисовал картинку
надо чтобы незакрашенный прямоугольник можно было перемещать пальцем, а там где заштриховано был наложен фильтр, как в вашем примере

у меня идея наложить сверху 4 TextView`ера, скажем, и регулировать их высоту и ширину.. но это как то не очень смотрится..
spydark91
85 / 85 / 2
Регистрация: 03.03.2011
Сообщений: 1,873
12.06.2013, 20:32  [ТС]     Выбор фрагмента на картинке фильтром #4
картинка
Миниатюры
Выбор фрагмента на картинке фильтром  
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
12.06.2013, 22:33     Выбор фрагмента на картинке фильтром #5
берете картинку и рисуете поверх 4 прямоугольники.
spydark91
85 / 85 / 2
Регистрация: 03.03.2011
Сообщений: 1,873
14.06.2013, 21:14  [ТС]     Выбор фрагмента на картинке фильтром #6
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package com.example.pr;
 
import android.R.color;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.util.Log;
import android.widget.ImageView;
 
public class pictureView extends ImageView {
    
    public pictureView(Context context) {
        super(context);
    }
    public void onDraw(Canvas canvas) {
        Paint p = new Paint();
        p.setColor(color.holo_red_dark);
        canvas.drawRect(0, 0, getWidth(), getHeight(), p);
        Log.d("s","sss");
        super.onDraw(canvas);
    }
 
}
XML
1
2
3
4
5
        <com.example.pr.pictureView
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:id="@+id/img"
            android:src="@drawable/qs"  />
Java
1
2
3
final pictureView img = (pictureView)findViewById(R.id.img);
                ans.setBounds(0, 0, ans.getIntrinsicWidth(), ans.getIntrinsicHeight());
                img.setImageDrawable(ans);
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
06-14 17:05:58.766: D/AndroidRuntime(2334): Shutting down VM
06-14 17:05:58.766: W/dalvikvm(2334): threadid=1: thread exiting with uncaught exception (group=0x40015560)
06-14 17:05:58.786: E/AndroidRuntime(2334): FATAL EXCEPTION: main
06-14 17:05:58.786: E/AndroidRuntime(2334): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.pr/com.example.pr.userImgDialog_Activity}: android.view.InflateException: Binary XML file line #17: Error inflating class com.example.pr.pictureView
06-14 17:05:58.786: E/AndroidRuntime(2334):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
06-14 17:05:58.786: E/AndroidRuntime(2334):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
06-14 17:05:58.786: E/AndroidRuntime(2334):     at android.app.ActivityThread.access$1500(ActivityThread.java:117)
06-14 17:05:58.786: E/AndroidRuntime(2334):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
06-14 17:05:58.786: E/AndroidRuntime(2334):     at android.os.Handler.dispatchMessage(Handler.java:99)
06-14 17:05:58.786: E/AndroidRuntime(2334):     at android.os.Looper.loop(Looper.java:123)
06-14 17:05:58.786: E/AndroidRuntime(2334):     at android.app.ActivityThread.main(ActivityThread.java:3683)
06-14 17:05:58.786: E/AndroidRuntime(2334):     at java.lang.reflect.Method.invokeNative(Native Method)
06-14 17:05:58.786: E/AndroidRuntime(2334):     at java.lang.reflect.Method.invoke(Method.java:507)
06-14 17:05:58.786: E/AndroidRuntime(2334):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
06-14 17:05:58.786: E/AndroidRuntime(2334):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
06-14 17:05:58.786: E/AndroidRuntime(2334):     at dalvik.system.NativeStart.main(Native Method)
06-14 17:05:58.786: E/AndroidRuntime(2334): Caused by: android.view.InflateException: Binary XML file line #17: Error inflating class com.example.pr.pictureView
06-14 17:05:58.786: E/AndroidRuntime(2334):     at android.view.LayoutInflater.createView(LayoutInflater.java:508)
06-14 17:05:58.786: E/AndroidRuntime(2334):     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:570)
06-14 17:05:58.786: E/AndroidRuntime(2334):     at android.view.LayoutInflater.rInflate(LayoutInflater.java:623)
06-14 17:05:58.786: E/AndroidRuntime(2334):     at android.view.LayoutInflater.inflate(LayoutInflater.java:408)
06-14 17:05:58.786: E/AndroidRuntime(2334):     at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
06-14 17:05:58.786: E/AndroidRuntime(2334):     at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
06-14 17:05:58.786: E/AndroidRuntime(2334):     at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:207)
06-14 17:05:58.786: E/AndroidRuntime(2334):     at android.app.Activity.setContentView(Activity.java:1657)
06-14 17:05:58.786: E/AndroidRuntime(2334):     at com.example.pr.userImgDialog_Activity.onCreate(userImgDialog_Activity.java:44)
06-14 17:05:58.786: E/AndroidRuntime(2334):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
06-14 17:05:58.786: E/AndroidRuntime(2334):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
06-14 17:05:58.786: E/AndroidRuntime(2334):     ... 11 more
06-14 17:05:58.786: E/AndroidRuntime(2334): Caused by: java.lang.NoSuchMethodException: pictureView(Context,AttributeSet)
06-14 17:05:58.786: E/AndroidRuntime(2334):     at java.lang.Class.getMatchingConstructor(Class.java:643)
06-14 17:05:58.786: E/AndroidRuntime(2334):     at java.lang.Class.getConstructor(Class.java:472)
06-14 17:05:58.786: E/AndroidRuntime(2334):     at android.view.LayoutInflater.createView(LayoutInflater.java:480)
06-14 17:05:58.786: E/AndroidRuntime(2334):     ... 21 more
06-14 17:10:58.915: I/Process(2334): Sending signal. PID: 2334 SIG: 9
не пойму в чем дело..

Добавлено через 1 минуту
строчка 17 в xml файле, это как раз com.example.geodating.pictureView
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
14.06.2013, 21:23     Выбор фрагмента на картинке фильтром #7
не хватает конструктора
Java
1
pictureView(Context,AttributeSet)
spydark91
85 / 85 / 2
Регистрация: 03.03.2011
Сообщений: 1,873
14.06.2013, 21:46  [ТС]     Выбор фрагмента на картинке фильтром #8
Java
1
2
3
4
5
6
7
    public void onDraw(Canvas canvas) {
        Paint p = new Paint();
        p.setColor(getResources().getColor(R.color.general_screen_picture_bg));
        canvas.drawRect(0, 0, getWidth(), getHeight(), p);
        Log.d("s","sss");
        super.onDraw(canvas);
    }
таким макаром картинка получается сверху..
как сделать чтоб нарисованное мной было сверху?

Добавлено через 2 минуты
наверно надо вызвать перересовку после установки картинки

Добавлено через 15 секунд
как?

Добавлено через 4 минуты
Java
1
img.invalidate();
нашел

но загруженная картинка всеравно сверху..
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.06.2013, 21:48     Выбор фрагмента на картинке фильтром
Еще ссылки по теме:
Обращение к элементам фрагмента из активити Android
Android Передача даных с фрагмента к фрагменту!
Android Активити отрабатывает быстрее фрагмента
Замена фрагмента из другого класса Android
Android TabActivity исчезает содержимое фрагмента

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
14.06.2013, 21:48     Выбор фрагмента на картинке фильтром #9
Java
1
2
3
4
5
6
7
8
 public void onDraw(Canvas canvas) {
        super.onDraw(canvas);
 
        Paint p = new Paint();
        p.setColor(getResources().getColor(R.color.general_screen_picture_bg));
        canvas.drawRect(0, 0, getWidth(), getHeight(), p);
        Log.d("s","sss");
    }
Yandex
Объявления
14.06.2013, 21:48     Выбор фрагмента на картинке фильтром
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru