Преработване на дата (Android)
Публикувано от Ivelin Pavlov в Android Код, Java Код, Код на 27 февруари 2014г.
Една функция, която ми е помагала в доста ситуации. Преработва една дата/час от даден формат в друг. Ако случайно сгрешите с форматите връща null като резултат.
public static String dateStringFromString(String dateStr, String fromFormat, String toFormat) { SimpleDateFormat format = new SimpleDateFormat(fromFormat, Locale.getDefault()); SimpleDateFormat formatOut = new SimpleDateFormat(toFormat, Locale.getDefault()); try { Date date = format.parse(dateStr); return formatOut.format(date).toString(); } catch (ParseException e) { e.printStackTrace(); } return null; }
Пълния помощен клас с допълнителни функции може да видите в цялата статия
Прочети цялата страница »Компютърна графика Javascript
Публикувано от Ivelin Pavlov в Java-Script Код, JavaScript, Код на 21 януари 2014г.
Домашна работа по Компютърна графика. Чертане на линии или окръжности по метода на Брезенхам, от двата края към средата, чертане на кръг по метода на закръглянето и запълване на граници, чрез стек.
Създал съм библиотека на Javascript, която работи в Canvas от HTML и позволява чертането на фигурите лесно и удобно.
Свързал съм я със самия Canvas и позволявам чертане, чрез мишката. Както и съм добавил опции начина на чертане и самото платно. Библиотеката позволява и работа с растеризация, което се иска, за да се види точният метод на чертане и разликата между методите.
Начин на използване:
<script src="graphics.js"></script> <canvas id="myCanvas" width="700" height="700" style="border:1px solid #c3c3c3;"></canvas> <script> //wzimame canvas-a var canvas = document.getElementById("myCanvas"); //vzimame i context-a na canvasa var context = canvas.getContext("2d"); //inizializirame bibliotekata var rasterization = 10; var pointSize = 3 var boundryColor = #444444; var graphics = new Graphics(context, canvas, rasterization, pointSize, boundryColor); //za se nachertae mrejata na tochkite graphics.drawGrid(); //za da se smeni cveta graphics.setColor("#ff0000"); graphics.setBoundryColor("#ff0000"); //i drugite funkcii graphics.drawPoint(x,y); //dobavq pixel na poziciq graphics.getPoint(x,y); //vzima cveta na poziciqta graphics.drawBresenhamLineFromSidesToMid(x1, y1, x2, y2); graphics.drawBresenhamLine(x1, y1, x2, y2); graphics.drawSimpleCircle(xc, yc, R); graphics.drawBresenhamCircle(xc, yc, R); graphics.StackedBoundryFill_4(x, y);
Към повечето публични функции има и дублиращи функции (с наставка UnRasterized), който правят същото, но с допълнителна функция за растеризация. Тя позволява да се предадат директно координатите от Canvas-a и в зависимост от нивото на растеризация да се изчислят правилните обекти. Може да се ползват и без растеризация, като се въведе rasterization = 1;
OriDomi
Публикувано от Ivelin Pavlov в Java-Script Код, Код, Публичен код на 04 януари 2014г.
Ivel.in1.0
Пробвайте да издърпате текста наляво/надясно.
Ivelin
Pavlov
Това е OriDomi. Javascript библиотека за показване на прекрасни ефекти на нагъване на елементи. Може да се ползва за снимки, текст, и всякакви блокове HTML код.
Може да го намерите на:
Paralax
Публикувано от Ivelin Pavlov в Java-Script Код, Код, Програмиране, Публичен код, Сайтове, Технологии на 11 октомври 2013г.
Пробвайте сами
Един прекрасен скрипт за 3D виртуализация и следена на мишката, или наклона (при телефоните).
Това е най-доброто нещо, което съм виждал за тази година. Според мен тепърва ще има широко приложение. Може би всеки ще го иска за своя сайт след като го види.
Изработено е на Javascript и се ползва много лесно. Просто трябва да добавите
$('#scene').parallax();
и в елемента с таг #scene може да добавяте дълбочина на обектите, чрез атрибута
data-depth="0.80"
Официална страница: http://wagerfield.github.io/parallax/
GitHub: https://github.com/wagerfield/parallax
Маркер за позиция и бутон за локация за Android Maps v2
Публикувано от Ivelin Pavlov в Android Код, Java Код, Код на 02 май 2013г.
Тъй като не намерих никаква информация в интернет за това. На Български изобщо го няма.
Но ми трябваше да редактирам бутона на Maps v2 за Android LocateMe, както и синия пин с радиуса. Това се постига с setMyLocationEnabled(true).
Ето и моето решение с фрагменти:
Първо добавям ImageButton за бутона при фрагмента за layout на картата (activity_map.xml):
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="fill_parent" tools:context="android.support.v4.app.FragmentActivity" > <fragment android:id="@+id/tabs_fragment" android:layout_width="fill_parent" android:layout_height="fill_parent" class="com.bucons.savetime.MyMapFragment" /> <ImageButton android:id="@+id/myLocationButton" android:layout_width="40dp" android:layout_height="40dp" android:padding="4dp" android:layout_alignParentRight="true" android:layout_marginRight="10dp" android:layout_marginTop="10dp" android:scaleType="fitCenter" android:src="@drawable/ic_menu_mylocation" android:background="@drawable/map_tile_bg" /> </RelativeLayout>
Има ресурси, които трябва да се добавят за да се вижда като картата по подразбиране.
@drawable/ic_menu_mylocation може да вземете
а за фона: @drawable/map_tile_bg пак, чрез xml:
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android" android:exitFadeDuration="@android:integer/config_shortAnimTime"> <item android:state_pressed="true"> <shape android:shape="rectangle"> <stroke android:width="1px" android:color="@color/map_tile_bg_stroke_pressed"/> <solid android:color="@color/map_tile_bg_solid_pressed"/> <corners android:radius="1dp"/> </shape> </item> <item> <shape android:shape="rectangle"> <stroke android:width="1px" android:color="@color/map_tile_bg_stroke"/> <solid android:color="@color/map_tile_bg_solid"/> <corners android:radius="1dp"/> </shape> </item> </selector>
Има и цветове:
<color name="map_tile_bg_solid">#aaffffff</color> <color name="map_tile_bg_stroke">#ffcccccc</color> <color name="map_tile_bg_solid_pressed">#aaFF9933</color> <color name="map_tile_bg_stroke_pressed">#ffcccccc</color>
Ето и опростен фрагмент за самата карта:
public class MyMapFragment extends SupportMapFragment { //Current location Marker private Marker myLocationMarker; GoogleMap map = null; public MyMapFragment() { } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); setUpMapIfNeeded(); getCurrentLocation(); } //set the map and set the tile for locate me button private void setUpMapIfNeeded() { // Do a null check to confirm that we have not already instantiated the map. if (map == null) { map = getMap(); // Check if we were successful in obtaining the map. if (map != null) { //Top right button for go to location ImageButton locateMeTile = (ImageButton) getSherlockActivity().findViewById(R.id.myLocationButton); locateMeTile.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { getCurrentLocation(); } }); } } } //retrieve the current position. Only once private void getCurrentLocation() { locationManager = (LocationManager) getSherlockActivity().getSystemService(Context.LOCATION_SERVICE); Criteria crit = new Criteria(); String towers = locationManager.getBestProvider(crit, false); Location location = locationManager.getLastKnownLocation(towers); Double glat = null; Double glon = null; if(location != null){ glat = location.getLatitude(); glon = location.getLongitude(); } CameraPosition pos = new CameraPosition.Builder() .target(new LatLng(glat, glon)) .zoom(10) .build(); if(pos != null) { currLocationChange(pos.target); map.animateCamera(CameraUpdateFactory.newCameraPosition(pos)); } else { Toast.makeText(getSherlockActivity(), R.string.main_error, Toast.LENGTH_LONG).show(); } } //Add pin to the current Location or move existing private void currLocationChange(LatLng loc) { if(myLocationMarker != null) { myLocationMarker.setPosition(new LatLng(loc.latitude,loc.longitude)); } else { myLocationMarker = map.addMarker(new MarkerOptions() .position(new LatLng(loc.latitude,loc.longitude))); } } }
Ако съм изпуснал нещо важно може да ми пишете. При натискане на бутона картата опива при местоположението на човека и постава маркер. Както и при стартиране на апликацията. Идеята е, че маркера може да се стилизира по желание. Както и бутона за локация.