• Как дебажить страницу (JS)?

    Gariks
    @Gariks
    На node.js есть такая штука называется browser-sync и различные таск менеджеры например Gulp, но для JS тебе лучше использовать Webpack, это комбайн посложней.
    Вот настроенный проект для JS со всеми возможными плюшками - https://github.com/Garik-/template-project.js. Добавь туда browser-sync или аналог и наслаждайся.

    А вот проект верстки на Gulp с browser-sync - https://github.com/artemtyrsin/theme_shanti/, посмотри там gulpfile.js и package.json.
    Ответ написан
    1 комментарий
  • Обработка нажатий клавиш в custom view?

    Gariks
    @Gariks Автор вопроса
    Метод научного тыка выручает. Клавиатуру можно вызвать к элементам TextView и его дочерним таким способом

    	public void showSoftKeyboard(View view) {
    
    		if (view.requestFocus()) {
    			InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
    			imm.showSoftInput(view, InputMethodManager.SHOW_FORCED);
    		}
    
    	}
    


    При этом view.requestFocus сработает только если у элемента стоят флаги view.setFocusable(true); или view.setFocusableInTouchMode(true);, а InputMethodManager.SHOW_FORCED обеспечивает корректное переключение вида клавиатуры при изменении ориентации экрана.

    Далее по порядку.
     EditText.setImeOptions(EditorInfo.IME_FLAG_NO_EXTRACT_UI); // в альбомном виде не показывается поле ввода и прочее
     EditText.setInputType(InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS); // не показываются подсказки
    

    ^ эти действия можно выполнить и из XML файла задав нужные атрибуты, но у меня элемент генерируется программно.

    Обработка нажатия клавиш ExitText.addTextChangedListener и в самом TextWatcher процедура определения клавиши реализована на afterTextChanged(Editable s) (если вы меняете Editable в процессе работы afterTextChanged вызовется снова с измененными данными). TextWatcher ловит ТОЛЬКО текстовые кнопки, например, backspace он уже не обрабатывает, возможно нужно будет внедрять onKeyListener (еще не реализовывал).

    Есть еще такая интересная штука как TextView.OnEditorActionListener, но по опытам он срабатывает только тогда когда вы нажали кнопку «Готово» в альбомной ориентации клавиатуры, и не срабатывает на хадварную кнопку «назад», которая закрывает клавиатуру — получается через него не определить скрытие/закрытие клавиатуры.
    Ответ написан
    Комментировать
  • Циклическое обновление данных с REST сервиса в фоне (dataDroid)?

    Gariks
    @Gariks Автор вопроса
    Решил проблему в лоб. Создал еще один IntentService сервис с независимым от MainActivity классом requestListener
    	@Override
    	protected void onHandleIntent(Intent arg0) {
    				
    		String user_id=prefs.getString("user_id", "0");
    		Request updateRequest = new Request(RequestFactory.REQUEST_TWEETS);
    
    		updateRequest.put("method", "projects.feed");
    		updateRequest.put("id", user_id);
    		updateRequest.put(Tweets.CREATED,
    				prefs.getString(user_id + "_" + Tweets.CREATED, ""));
    		
    		requestManager.execute(updateRequest, requestListener);
    	}
    


    и таймер в MainActivity, который перезагружается на onStart либо после ручного обновления списка.
    	void startTimer() {
    		Intent intent = new Intent(context, TestService.class);
    		PendingIntent pendingIntent = PendingIntent.getService(context, 0,
    				intent, 0);
    		AlarmManager am = (AlarmManager) context
    				.getSystemService(Context.ALARM_SERVICE);
    		
    		am.cancel(pendingIntent);
    		
    		long interval_=1000 * 60 * Integer.parseInt(interval);
    
    		am.setRepeating(AlarmManager.ELAPSED_REALTIME, SystemClock.elapsedRealtime()
    				+ interval_, interval_, pendingIntent);
    	}
    


    Соответственно если в будущем придется добавлять функционал можно передавать extras сервису, а в нем самом уже, например фабрику запросов.
    Ответ написан
    Комментировать
  • Инструментарий разработки приложения под Win?

    Gariks
    @Gariks
    На днях писал для себя программу, которая с сайта получает количество непрочитанных сообщений и отображает иконку в трее. При клике мышкой открывает нужный сайт, правая кнопка мыши открывает диалог настройки, значения которых хранятся в реестре.
    Практически чистый код С с использованием WinAPI и библиотеки WinInet.

    исходный код

    Скомпилировать можно используя VS, главное не забыть про файл ресурсов с двумя иконками (могу выслать архив с проектом)
    Ответ написан
    2 комментария