Личный cайт

Andrew ScyTer'a

Меню сайта
Анекдот дня
Категории раздела
Фрагменты жизни [13]
Путь к финансовой свободе [1]
Программирование под Android [5]
Форма входа
Поиск
Календарь
«  Ноябрь 2017  »
ПнВтСрЧтПтСбВс
  12345
6789101112
13141516171819
20212223242526
27282930
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Главная » Программирование под Android

Few days ago I had to solve such problem. I have FragmentA with ScrollView and lot of items in it. One of the middle items should be FragmentB. It's work fine, but on screen rotation FragmentB appears few seconds latter, than FragmentA created. So I lose ScrollView position on screen rotate.
I've tried a lot of ways to solve problem and was almost ready to replace FragmentB with CustomView, but at last find such solution of this problem:

fragment_a.xml:

android:id="@+id/fragment_a"
...>

android:id="@+id/scroll_view"
...>

.../>

android:id="@+id/fragment_b_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"/>

.../>




FragmentA.java

...
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
mainView = inflater.inflate(R.layout.fragment_a, ...);

FragmentB fragmentB = (FragmentB) getChildFragmentManager().findFragmentByTag(FragmentB .FRAGMENT_TAG);
Bundle arguments;
if (fragmentB == null) {
arguments = new Bundle();
arguments.putInt("i", 5);
// (put default params)

} else {
arguments = fragmentB.getArguments();
}

fragmentB = new FragmentB ();
fragmentB.setArguments(arguments);
getChildFragmentManager()
.beginTransaction()
.replace(
R.id.fragment_b_container,
fragmentB,
FragmentB .FRAGMENT_TAG
)
.commit();
...

FragmentB.java

int i, j;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle arguments = getArguments();
if (arguments != null) {
i = arguments.getInt("i");
j = arguments.getInt("j", -1);
}
}

...
// do stuf with j
...

@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
getArguments().putInt("i", i);
getArguments().putInt("j", j);
}

Категория: Программирование под Android | Просмотров: 122 | Добавил: ScyTer | Дата: 26.06.2015 | Комментарии (0)

In Developer Console  https://play.google.com/apps/publish?hl=en in tab Game Services add new game (button "Add new game").

Fill Game Title and category.


Then in Console https://console.developers.google.com/project you'll see new Project:


Open it. This is your new project info:


Project number you need to fill in Android App to get your registrationID so you can get GCM from this game:
registrationID = gcm.register(projectNumber);

Then open APIs tab and selec Cloud Messaging for Android:


Press Enable API, so you'll get such result:


Open Credentials and then press "Create new key" button for public api access:


Choose "Server key":


Then you can fill IPs witch avaliable to send GCM notifications (I set field empty, so any IP can send notification):


Then set API key on your server. Also allowed IPs can be edit any time:


Server example:
$api_key = 'AIzaSyAzC2eZQB6ATqOiJigVh7IaR29jWcxuM2M';

$registrationIDs= array("APA91bGetPCtbLbTdyorzlK-0BzkBc0sc1O-ZiFPSt90IceRS_BYrdFxxMBr9y1ZcvCihwm51ZcXnctcHDhBGYG07iCLfXDN_U8sgd7vR682c__FESDuQteTifoXIFSrgH9tM -LrSQ_0DVBJh"); //registrationIDs of android devices
$message = array("Test message!"); // Message to be sent

// Set POST variables
$url = 'https://android.googleapis.com/gcm/send';

$fields = array(
'registration_ids' => $registrationIDs,
'data'  => array( "message" => $message ) // tut lubye polya mogut byt'
);
$headers = array(
'Authorization: key='. $api_key,
'Content-Type: application/json'
);

$ch = curl_init();
curl_setopt( $ch, CURLOPT_URL, $url);
curl_setopt( $ch, CURLOPT_POST, true);
curl_setopt( $ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode( $fields));
$result = curl_exec($ch);
curl_close($ch);
?>
Категория: Программирование под Android | Просмотров: 143 | Добавил: ScyTer | Дата: 15.05.2015 | Комментарии (0)

После обновления прошивки телефона, у меня стало появляться сообщение:
Для работы приложения требуется обновить сервисы google play
Но когда заходишь в Play Market, там доступны только варианты Открыть и Отключить (сделать нельзя, т.к. нет root прав).
Решение подобной проблемы простое: мне помог логин через браузер на ноуте в Play Market, поиск там сервисов и нажатие кнопочки Установить (с последующим выбором устройства). Телефон тут же начал загружать новую версию Google Play Services.
Категория: Программирование под Android | Просмотров: 140 | Добавил: ScyTer | Дата: 20.03.2015 | Комментарии (0)

Теперь буду чаще делать заметки в данной категории. Сегодня такой вот интересный повод нашелся по поводу отмены анимации.

view.animator.cancel()
view.clearAnimation()
view.animate()
animation.cancel()
могут не помочь с отменой анимации (либо не отменяют, либо делают это не сразу, особенно если ты запускаешь тут же другую анимацию).

Мне помогло только
animation.reset()
Категория: Программирование под Android | Просмотров: 158 | Добавил: ScyTer | Дата: 11.12.2014 | Комментарии (0)

После долгого перерыва снова пишу в блог. На этот раз впервые в категорию Программирование под Android.

Сегодня речь пойдет о том, как включить шрифты из файла ttf в проект на LibGDX.
На самом деле, все очень просто. Для начала добавляем к проекту пару библиотек: gdx-stb-truetype и gdx-stb-truetype-natives (если что, они сразу тут, но может найдете более новые версии).
Затем объявляете ваш font и символы, которые собираетесь использовать:
Код

public static BitmapFont font; // он у меня глобальная статическая переменная
...
final String FONT_CHARACTERS = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789][_!$%#@|\\/?-+=()*&.;,{}\"'<>";

Загружаете его, меняете характеристики:
Код

font= TrueTypeFontFactory.createBitmapFont(Gdx.files.internal("data/font.ttf"),FONT_CHARACTERS, 12.5f, 7.5f, 1.0f, Gdx.graphics.getWidth(),Gdx.graphics.getHeight());
font.setColor(Color.RED);

И рисуете (между batch.begin и batch.end естественно):
Код
  
font.draw(font, "This is some text", 10, 10); 


А более подробно и про русские шрифты нашел мануальчик  вот тут.
Категория: Программирование под Android | Просмотров: 1506 | Добавил: ScyTer | Дата: 16.01.2014 | Комментарии (0)

Блог
26.06.2015
Using dynamic Fragment inside Fragment
[Программирование под Android]
15.05.2015
GCM in Android
[Программирование под Android]
20.03.2015
Обновление Google Play Services
[Программирование под Android]
11.12.2014
Отмена анимации
[Программирование под Android]
16.10.2014
Середина осени
[Фрагменты жизни]
Форум
  • Стоит посмотреть, послушать, почитать...

  • Разное другое

  • Разное другое

  • Стоит посмотреть, послушать, почитать...

  • Фрагменты моей жизни

  • Copyright ScyTer © 2017Создать бесплатный сайт с uCoz