Ответы пользователя по тегу Android
  • Как реализовать подобную серверную часть?

    FanKiLL
    @FanKiLL
    Попробуйте netty.io если вам сокеты нужны.
    Ответ написан
    Комментировать
  • Как правильно построить запрос к серверу?

    FanKiLL
    @FanKiLL
    C json мы в скайп всё вроде порешали.
    А как постом отправлять - я тут давал код, он рабочий
    toster.ru/answer?answer_id=336785#answers_list
    Ответ написан
    Комментировать
  • Чем лучше всего читать закладки оффлайн?

    FanKiLL
    @FanKiLL
    Evernote? есть клиенты под все ось - если хотите они даже выдают специальный email - куда вы можете отослать ссылку на статью.

    Или воспользоватся сервисом который написал @umputun - www.ukeeper.com
    Суть сервиса проста, отсылаете ссылку на то что хотите почитать на специальный email - вам назад приходит статья - без лишних вещей только контент. Email вы уж точно не забудете прочитать.
    Можете посмотреть как это будет выглядит - www.ukeeper.com/screenshots
    Ответ написан
  • Какой сервис делает приложение на основе URL сайта?

    FanKiLL
    @FanKiLL
    Так там буквально 3 строчки нужно кода написать

    WebView myWebView = (WebView) findViewById(R.id.webview);
    WebSettings webSettings = myWebView.getSettings();
    webSettings.setJavaScriptEnabled(true);


    Ну ладно 4, добавить пермишен
    <uses-permission android:name="android.permission.INTERNET" />


    А как вы бы потом обновляли, сгенерированное приложение? Ну мало ли, захотели бы убрать title bar? Его же подписывать сертификатом надо, менять версию а то маркет не примет.
    Ответ написан
  • Как вы решаете проблемы с генерацией проектов в Android Studio?

    FanKiLL
    @FanKiLL
    Какие файлы проекта, сами классы, активити меняются? Магия какая то.
    Или меняется настройки IDE? Которые находятся в .idea директории?

    Если второе постав те эту директории в .gitignore
    #################
    ## Idea
    #################
    
    # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm
    
    ## Directory-based project format
    .idea/
    # if you remove the above rule, at least ignore user-specific stuff:
    # .idea/workspace.xml
    # .idea/tasks.xml
    # and these sensitive or high-churn files:
    # .idea/dataSources.ids
    # .idea/dataSources.xml
    # .idea/sqlDataSources.xml
    # .idea/dynamic.xml
    
    ## File-based project format
    *.ipr
    *.iml
    *.iws
    
    ## Additional for IntelliJ
    out/
    
    # generated by mpeltonen/sbt-idea plugin
    .idea_modules/
    
    # generated by JIRA plugin
    atlassian-ide-plugin.xml
    
    # generated by Crashlytics plugin (for Android Studio and Intellij)
    com_crashlytics_export_strings.xml
    Ответ написан
    1 комментарий
  • Как обработать ошибку подключения при отсутствии интернета на андроиде?

    FanKiLL
    @FanKiLL
    public class NetworkManager {
    
        public static boolean isNetworkAvailable(Context context) {
            ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
            NetworkInfo networkInfo = cm.getActiveNetworkInfo();
            if (networkInfo != null && networkInfo.isConnected()) {
                return true;
            } else {
                return false;
            }
        }
    }


    и перед каждым запросом проверять сеть

    if (NetworkManager.isNetworkAvailable(context)) {
        // делаем спокойно запрос
    } else {
        // если сети нет показываем Тост или 
        // кидаем на активити с красивым дизайном где просим сделать реконнект
    }


    Требует пермишина, в манифест добавляем пермишин

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    Ответ написан
    Комментировать
  • Проблемы на эмуляторе Genymotion, при попытки вызвать локально развёрнутый сервис. Какой ip использовать при подключении?

    FanKiLL
    @FanKiLL
    Потому что обращение к localhost в андроид вы обращаетесь к localhost'у на самом андроид.
    На своей машине если на винде откройте cdm и выполните команду ipconfig там будет ip вашей машины, который и нужно подставить вместо локалхоста
    Ответ написан
  • Как передать переменную с одного класса в другой?

    FanKiLL
    @FanKiLL
    -new TaxiApiAsync(),execute("номер телефона");

    @Override
        protected TaxiResponce doInBackground(String... strs) {
            // получили json
            String jsonResponce = null;
            try {
                jsonResponce = new TaxiApi().withPhone(strs[0]).withAdress("Фонтанка 33").done().send();
            } catch (IOException e) {
                e.printStackTrace();
            }
            // распарсили json в класс, чтоб можно было брать данные из обычных
            // переменных
            TaxiResponce taxiResponce = new Gson().fromJson(jsonResponce, TaxiResponce.class);
    
            return taxiResponce;
        }
    Ответ написан
    Комментировать
  • Как быстро сделать эффект нажатия для ImageView или Button с картинкой?

    FanKiLL
    @FanKiLL
    А какой эффект интересует, именно анимация, или смена цвета, бордера, смена размера шрифта?
    Тогда это можно сделать стилями.

    Например красная кнопка
    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:state_pressed="true" >
            <shape>
                <solid
                    android:color="#ef4444" />
                <stroke
                    android:width="1dp"
                    android:color="#992f2f" />
                <corners
                    android:radius="3dp" />
                <padding
                    android:left="10dp"
                    android:top="10dp"
                    android:right="10dp"
                    android:bottom="10dp" />
            </shape>
        </item>
        <item>
            <shape>
                <gradient
                    android:startColor="#ef4444"
                    android:endColor="#992f2f"
                    android:angle="270" />
                <stroke
                    android:width="1dp"
                    android:color="#992f2f" />
                <corners
                    android:radius="3dp" />
                <padding
                    android:left="10dp"
                    android:top="10dp"
                    android:right="10dp"
                    android:bottom="10dp" />
            </shape>
        </item>
    </selector>


    Обратите внимание на android:state_pressed="true" означает когда кнопка например нажата, это разные состояния, подробней можете прочитать тут

    таких состояний довольно много - например android:state_focused

    Так можно поменять полностью дизайн кнопки

    Цепляете потом этот стиль к кнопке в layout

    <Button
                        android:id="@+id/btnCansel"
                        style="@style/button"
                        android:layout_width="fill_parent"
                        android:layout_height="wrap_content"
                        android:layout_weight="1"
                        android:background="@drawable/custom_red_button"
                        android:onClick="onClickCanselButton"
                        android:text="@string/clear" />


    Обратите внимание на android:background="@drawable/custom_red_button" тут цепляется стиль с описанием разных состояний к кнопке.
    Ответ написан
    Комментировать
  • Как переделать request запрос с PHP на Java(под Android)?

    FanKiLL
    @FanKiLL
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    
    import org.apache.http.HttpResponse;
    import org.apache.http.client.HttpClient;
    import org.apache.http.client.methods.HttpPost;
    import org.apache.http.entity.StringEntity;
    import org.apache.http.impl.client.DefaultHttpClient;
    
    public class HttpSend {
    	public static void main(String[] args) {
    		System.out.println(SendJsonViaPost("http://toster.ru/", "ваш json"));
    	}
    
    	public static String SendJsonViaPost(String url, String json) {
    		String responseJson = "";
    		HttpClient client = new DefaultHttpClient();
    		HttpPost post = new HttpPost(url);
    		try {
    			StringEntity stringEntity = new StringEntity(json, "UTF-8");
    			stringEntity.setContentType("application/json");
    			post.setEntity(stringEntity);
    			HttpResponse response = client.execute(post);
    			BufferedReader rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
    			String line = "";
    			while ((line = rd.readLine()) != null) {
    				responseJson += line;
    			}
    			
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    		
    		return responseJson;
    	}
    }


    HttpSend.sendJsonViaPost("http://toster.ru/", "ваш json")
    Ответ написан
    Комментировать
  • Как при нажатии на up, back button перескочить через activity?

    FanKiLL
    @FanKiLL
    При добавлении активити в AndroidManifest.xml выставить флаг android:noHistory="true"
    Например LoginActivity тогда активити не будет присутствовать в цепочке history.

    <activity
      android:name="ru.habrahabr.toster.LoginActivity"
      android:label="@string/title_activity_login"
      android:noHistory="true"
      android:screenOrientation="portrait"
      android:theme="@android:style/Theme.NoTitleBar" >
    </activity>
    Ответ написан
    Комментировать
  • Network Thread?

    FanKiLL
    @FanKiLL
    Сетевой поток будет постоянным, или его будут запускать по нажатию кнопки или его надо запускать через какой то интервал времени?
    Если постоянно в фоне должен быть то делайте Service. В него можно передавать что-то из UI потока и наоборот получать назад.
    Подробней про сервисы хорошая статья — читайте тут

    Если по нажатию кнопки — то используйте AsyncTask. Важно, вы не сможете обновлять UI элементы из других тредов, так что как получите какие то данные, например нужно обновить список твитов используйте метод runOnUiThread (Runnable action) этот метод есть у всех активити.

    Но AsyncTask подходит для маленьких операций, забрать пачку твиттов или забрать rss — не долгие операции.

    Используя ExecutorService можно например реализрвать
    Producer — Consumer. Сотрите в этом скринкасте как.

    Если активити будет несколько, как вы будете шарить между ними очередь? Тут или делать сервис в фоне или инициализировать очередь в Application классе, он будет доступен для всех активити, правда я не могу точно сказать если это хорошая идея хранить там очередь, самому интересно.
    Ответ написан
    2 комментария
  • Android стили и темы?

    FanKiLL
    @FanKiLL
    Попробуйте ещё вот так поменять цвет во всех контролах разом.
     <style name="PinkTheme" parent="android:style/Theme">
            <item name="android:textColorPrimary">#FF69B4</item>
        </style>
    
    Ответ написан
    Комментировать
  • Android стили и темы?

    FanKiLL
    @FanKiLL
    Дело в том что Button, EditText это совсем другой элемент, у которого определены свои стили. Вы же переопределили только цвет у TextView похоже.

    Для кнопок нужно переопределить android:buttonStyle
    Для чекбоксов android:checkboxStyle
    etc…
    Ответ написан
    Комментировать
  • Android стили и темы?

    FanKiLL
    @FanKiLL
    Попробуйте так

    <style name="CustomText" parent="@style/Text">        <item name="android:textSize">20sp</item>        <item name="android:textColor">#008</item>    </style>  

    Протупил, нето…
    Ответ написан
    Комментировать
  • Объясните некурящему про графические свойства компонентов?

    FanKiLL
    @FanKiLL
    Надо увидить buttonStyleSmall стиль, наверно там что-то, потому как в том что вы превели, вроде ничего такого нету.
    Ответ написан