Когда я запускаю свое приложение, он отправляет запрос в db через класс AsyncTask. В то время как приложение получает данные, я получил белый экран, и когда связь с db будет завершена, отобразится карта со всем маркером, полученным с сервера. Мне интересно, есть ли способ показать заставку, используя onProgressUpdate. Или, если есть лучший способ показать заставку. Изображение, которое я выбираю, является файлом jpeg.Заставка экрана на AsyncTask & Maps
ответ
OnLocationChanged Я называю AsyncTask:
AsyncTaskRunner run = new AsyncTaskRunner();
run.execute (lat, lng);
поэтому код AsyncTask:
class AsyncTaskRunner extends AsyncTask<Double, Void, List<Map<String, Double>>> {
@Override
protected List<Map<String, Double>> doInBackground(Double... coords) {
try {
URL url = new URL(....);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.connect();
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String inputLine;
while ((inputLine = in.readLine()) != null) {
JSONObject jsonObject = new JSONObject(inputLine);
String code = jsonObject.getString("code");
Log.i("FontaneDB", code);
JSONArray data = jsonObject.getJSONArray("data");
for (int i = 0; i < data.length(); i++) {
JSONObject fontana = data.getJSONObject(i);
//Iterate through the elements of the array i
Map<String, Double> font = new HashMap<String, Double>();
font.put("latitudine", Double.parseDouble(fontana.getString("latitudine")));
font.put("longitudine", Double.parseDouble(fontana.getString("longitudine")));
result.add(font);
}
}
in.close();
}
catch (Exception e) {
Log.e("FontaneDB", e.toString());
}
return result;
}
@Override
protected void onPostExecute(List<Map<String, Double>> maps) {
int distance, contatore = 1;
Location loc = new Location(LocationManager.NETWORK_PROVIDER);
if (maps.isEmpty()) {
Toast.makeText(context, "Non ci sono fontane nelle vicinanze", Toast.LENGTH_LONG).show();
}
else {
for (Map<String, Double> fontana : maps) {
loc.setLatitude(fontana.get("latitudine"));
loc.setLongitude(fontana.get("longitudine"));
distance = Math.round(mCurrentLocation.distanceTo(loc));
Log.i("FontaneDB", "loc: "+loc.toString());
Log.i("FontaneDB", "mcurr "+ mCurrentLocation.distanceTo(loc));
Log.i("Distanza", "distanza: "+distance);
Log.i("Prova", "Latitudine: " + fontana.get("latitudine").toString());
if (contatore == 1) {
mMap.addMarker(new MarkerOptions().
position(new LatLng(fontana.get("latitudine"), fontana.get("longitudine"))).
icon(BitmapDescriptorFactory.
defaultMarker(BitmapDescriptorFactory.HUE_BLUE)).title(distance + "m")).showInfoWindow();
contatore++;
}
else {
mMap.addMarker(new MarkerOptions().
position(new LatLng(fontana.get("latitudine"), fontana.get("longitudine"))).
icon(BitmapDescriptorFactory.
defaultMarker(BitmapDescriptorFactory.HUE_BLUE)).title(distance + "m"));
}
}
}
}
}
метод onProgressUpdate не используется .. И я хотел бы использовать его для SplashScreen. Как я могу это сделать, если это возможно?
Вы можете сделать это, измените для себя - он отлично подходит для меня для тех же проблем.
частный класс официант расширяет AsyncTask {
@Override
protected Void doInBackground(Void... params) {
try {
// do your background job like load Map
} catch (Exception e) {
e.printStackTrace();
}finally{
}
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
//Show Map here or pass Map Activity after parsing completion
}
}
TNX за ответ, но я думаю, это не то, что мне нужно. Ниже вы можете найти код для общения с db и все материалы для карты. Но я не знаю, возможно ли показать всплеск экрана onProgressUpdate или нет. И как я могу это сделать ... – Yoshi
вы не поняли, что я думаю :) btw спасибо –
nope ... Я не знаю, т- – Yoshi
Вот возможное (непроверенное) решение, есть SplashActivity.java, который проходит карту к вашему MainActivity.java, что затем анализировать и отображать карту:
SplashActivity.java
public class SplashActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);
new AsyncTaskRunner.execute();
}
public void mapsRetrieved(List<Map<String, Double>> maps) {
Intent intent = new Intent(this, MainActivity.class); //adjust class name as needed
intent.putExtra("maps", maps);
startActivity(intent);
}
private class AsyncTaskRunner extends AsyncTask<Double, Void, List<Map<String, Double>>> {
//YOUR CODE
@Override
protected void onPostExecute(List<Map<String, Double>> maps) {
mapsRetrieved(maps);
}
}
}
В activity_splash.xml, импортировать .jpeg как вытяжке актива и заменить {} YOUR_BACKGROUND_HERE
activity_splash.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
<!-- REPLACE {YOUR_BACKGROUND_HERE} -->
android:background="@drawable/{YOUR_BACKGROUND_HERE}"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.daose.watinfo.SplashActivity"/>
Вы можете получить карту как так
MainActivity.java
public class EventListActivity extends AppCompatActivity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list);
List<Map<String, Double>> maps = (List<Map<String, Double>>) getIntent().getSerializableExtra("maps");
//YOUR ORIGINAL POST-EXECUTE CODE BELOW
}
}
Тогда в вашем AndroidManifest.xml, изменить wh при запуске приложения открывается.
AndroidManifest.xml
<application
<!-- other stuff -->
<activity android:name=".SplashActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<!-- other stuff -->
</application>
- 1. Заставка экрана с AsyncTask
- 2. Заставка с использованием AsyncTask
- 3. Заставка экрана заставки
- 4. Заставка экрана C#
- 5. Заставка экрана в ios
- 6. Заставка экрана на веб-странице в Javascript
- 7. Xcode 6 локализованный заставка экрана
- 8. Заставка экрана черного экрана в ионном
- 9. Duplicate HTML-заставка для экрана
- 10. Экранная заставка для считывателя экрана
- 11. Заставка экрана с индикатором выполнения
- 12. Заставка экрана Android приложение остановлено
- 13. Заставка экрана Xcode индикатор выполнения
- 14. Заставка экрана в Android glitch
- 15. Заставка экрана в WPF два монитора
- 16. Заставка экрана между действиями в android
- 17. Заставка экрана меняется каждый прогон (XCODE, PhoneGAP)
- 18. Ориентация экрана для AsyncTask
- 19. Заставка экрана - winforms против WPF? VS 2012
- 20. Заставка экрана становится магнитной, когда используется оверлей
- 21. Заставка экрана вызывает сбой в Windows XP
- 22. Заставка закрыта до завершения основного экрана
- 23. Заставка Заставка Цвет изображения непоследовательный
- 24. Заставка экрана не уничтожит себя? Java
- 25. Заставка экрана перед выходом пользователя из системы
- 26. заставка экрана css высота 100% не работает
- 27. Заставка экрана, когда сайт открыт на мобильном устройстве - Как
- 28. Заставка экрана для приложения на панели приложений Android
- 29. Заставка Заставка не работает
- 30. Заставка заставка несколько секунд
показать коды, что вы делаете –