View Helper.java
import java.io.IOException; | |
import java.net.HttpURLConnection; | |
import java.net.URL; | |
import java.util.Map; | |
public class Helper { | |
public enum Channel {HDJ, J2, INEWS}; | |
public enum Quality {QUALITY_720P, QUALITY_360P}; | |
private static String[] links720p = {"http://token.tvb.com/stream/live/hls/mobilehd_hdj.smil", | |
"http://token.tvb.com/stream/live/hls/mobilehd_jade.smil", |
View cuhk_campus_map_data.json
{ | |
campus : [ | |
{"id":"1", "campus_en":"Central Campus", "campus_xb5":"中央校園", "shortname":"", "color":"", "lat_lng":"(22.41938957865346, 114.20692563056946)", "contains_landmarks":"True"}, | |
{"id":"2", "campus_en":"Chung Chi College", "campus_xb5":"崇基學院", "shortname":"cc", "color":"", "lat_lng":"(22.415214072123707, 114.2094898223877)", "contains_landmarks":"True"}, | |
{"id":"3", "campus_en":"New Asia College", "campus_xb5":"新亞書院", "shortname":"na", "color":"", "lat_lng":"(22.42137810711142, 114.20880317687988)", "contains_landmarks":"True"}, | |
{"id":"4", "campus_en":"United College", "campus_xb5":"聯合書院", "shortname":"uc", "color":"", "lat_lng":"(22.421417778212405, 114.20525193214417)", "contains_landmarks":"True"}, | |
{"id":"5", "campus_en":"Shaw College", "campus_xb5":"逸夫書院", "shortname":"sc", "color":"", "lat_lng":"(22.42287320389422, 114.20157998800278)", "contains_landmarks":"True"}, | |
{"id":"6", "campus_en":"Residential Area", "campus_xb5":"宿舍", "shortname":"", "color":"", "lat_lng":"", "contains_landmarks":"False"}, |
View GsonRequest.java
import java.io.UnsupportedEncodingException; | |
import com.android.volley.NetworkResponse; | |
import com.android.volley.ParseError; | |
import com.android.volley.Response; | |
import com.android.volley.toolbox.HttpHeaderParser; | |
import com.android.volley.toolbox.JsonRequest; | |
import com.google.gson.Gson; | |
import com.google.gson.JsonSyntaxException; |
View TimeHelper.java
public class TimeHelper{ | |
public static final SimpleDateFormat HMS_DATE_FORMAT = new SimpleDateFormat("hh:mm:ss"); | |
public static long toMillis(int hour, int minute, int second){ | |
return toSeconds(hour, minute, second) * 1000; | |
} | |
public static long toSeconds(int hour, int minute, int second){ | |
return (hour * 3600 + minute * 60 + second); | |
} |
View calcDist.java
private double calcDist(double lat1, double lng1, double lat2, double lng2) { | |
double earthRadius = 3958.75; | |
double lat = Math.toRadians(lat2 - lat1); | |
double lng = Math.toRadians(lng2 - lng1); | |
double a = Math.sin(lat / 2) * Math.sin(lat / 2) | |
+ Math.cos(Math.toRadians(lat1)) | |
* Math.cos(Math.toRadians(lat2)) * Math.sin(lng / 2) | |
* Math.sin(lng / 2); | |
double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)); | |
double dist = earthRadius * c; |
View ViewPagerActivity.java
//implement ViewPager.SimpleOnPageChangeListener(), override the following method | |
public void onPageScrollStateChanged(int state) { | |
if (state == ViewPager2.SCROLL_STATE_IDLE) { | |
int curr = mViewPager.getCurrentItem(); | |
int lastReal = mViewPager.getAdapter().getCount() - 2; | |
if (curr == 0) { | |
mViewPager.setCurrentItem(lastReal, false); | |
} else if (curr > lastReal) { | |
mViewPager.setCurrentItem(1, false); | |
} |
View DefaultApplication.java
import android.app.Application; | |
import android.app.UiModeManager; | |
import android.content.res.Configuration; | |
/** | |
* Created by fung.lam on 27/07/2015. | |
*/ | |
public class DefaultApplication extends Application { | |
private boolean isRunningOnTv(){ |
View gist:1e2cd5fd098cc88b8ae1
Glide.with(this) | |
.load(url) | |
.asBitmap().diskCacheStrategy(DiskCacheStrategy.ALL).centerCrop() | |
.into(new BitmapImageViewTarget(mImageViewBackdrop) { | |
@Override | |
public void onResourceReady(Bitmap bitmap, GlideAnimation anim) { | |
super.onResourceReady(bitmap, anim); | |
Palette.from(bitmap).generate(new Palette.PaletteAsyncListener() { | |
@Override | |
public void onGenerated(Palette palette) { |
View GsonRequest.java
import android.support.annotation.NonNull; | |
import android.support.annotation.Nullable; | |
import android.util.Log; | |
import com.android.volley.NetworkResponse; | |
import com.android.volley.Request; | |
import com.android.volley.Response; | |
import com.android.volley.toolbox.JsonRequest; | |
import com.google.gson.Gson; | |
import com.google.gson.GsonBuilder; |
View AspectRatioImageView.java
// Copyright 2012 Square, Inc. | |
package com.squareup.widgets; | |
import android.content.Context; | |
import android.content.res.TypedArray; | |
import android.util.AttributeSet; | |
import android.widget.ImageView; | |
/** Maintains an aspect ratio based on either width or height. Disabled by default. */ | |
public class AspectRatioImageView extends ImageView { |
OlderNewer