Skip to content

Instantly share code, notes, and snippets.

View BramYeh's full-sized avatar

Bram Yeh BramYeh

View GitHub Profile
@BramYeh
BramYeh / 1.json
Created November 28, 2017 12:13
Schema verison 1 for Migrate SQLiteOpenHelper and SQLiteDatabase to Room (with Testing)
{
"formatVersion": 1,
"database": {
"version": 1,
"identityHash": "99c7946712f93a4d723efbe10a500eb0",
"entities": [
{
"tableName": "users",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`userid` INTEGER NOT NULL, `username` TEXT, PRIMARY KEY(`userid`))",
"fields": [
@BramYeh
BramYeh / 2.json
Last active November 28, 2017 12:28
Schema verison 2 for Migrate SQLiteOpenHelper and SQLiteDatabase to Room (with Testing)
{
"formatVersion": 1,
"database": {
"version": 2,
"identityHash": "99c7946712f93a4d723efbe10a500eb0",
"entities": [
{
"tableName": "Users",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`mId` INTEGER NOT NULL, `mUserName` TEXT, PRIMARY KEY(`mId`))",
"fields": [
@BramYeh
BramYeh / CyclePagerAdapter.java
Created August 15, 2017 05:08
CyclePagerAdapter Example
public abstract class CyclePagerAdapter<T> extends PagerAdapter implements ViewPager.OnPageChangeListener {
protected List<T> mItemList = null;
private WeakReference<CycleViewPager> mViewPagerRef = null;
public CyclePagerAdapter(@NonNull List<T> list, @NonNull CycleViewPager cycleViewPager) {
if (list.size() <= 1) {
// needn't to support infinite cycle
mItemList = new ArrayList<>(list);
} else {
// refer: https://maniacdev.com/2013/08/tutorial-how-to-create-an-infinite-scrolling-uicollectionview
@BramYeh
BramYeh / CycleViewPager.java
Created August 15, 2017 05:07
CycleViewPager Example
public class CycleViewPager extends ViewPager {
public CycleViewPager(Context context) {
super(context);
}
public CycleViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
}
@BramYeh
BramYeh / AclassOptimized.java
Last active July 7, 2017 03:53
Sample of Optimized Aclass
Class Aclass {
private void methodToOptimize() {
Cclass cclass = new Cclass();
new AsyncTask<Cclass, Void, Void>() {
@Override
protected Void doInBackground(Cclass... params) {
return null;
}
}.execute(new Cclass[]{cclass});
@BramYeh
BramYeh / Aclass.java
Last active July 6, 2017 14:45
Sample of Aclass
Class Aclass {
private void methodToOptimize() {
Bclass bclass = new Bclass();
bclass.methodCalledOnce();
}
}
@BramYeh
BramYeh / Bclass.java
Last active July 6, 2017 14:38
Sample for Bclass
Class Bclass {
static class Cclass {
}
public void methodCalledOnce() {
Cclass cclass = new Cclass();
new AsyncTask<Cclass, Void, Void>() {
@Override
protected Void doInBackground(Cclass... params) {
@BramYeh
BramYeh / swipe-operation-handler
Created April 29, 2017 19:35
sample: make existed cells support swipe-operation
- (void)containerViewPanGestureRecognized:(UIPanGestureRecognizer *)gestureRecognizer
{
switch (gestureRecognizer.state) {
case UIGestureRecognizerStateBegan: {
self.originalLocation = [gestureRecognizer locationInView:self.contentView];
break;
}
case UIGestureRecognizerStateChanged: {
CGFloat newX = [gestureRecognizer locationInView:self].x - self.originalLocation.x;
@BramYeh
BramYeh / WKWebview_Update_Request
Created March 29, 2017 12:23
Add cookies into request that webview loads requests
// assume request is original request you want wkwebview to load
NSMutableURLRequest *mutableRequest = [request mutableCopy];
[mutableRequest setValue:"CookieKey = CookieValue" forHTTPHeaderField:@"Cookie"];
// navigates to a requested URL
[self.webView loadRequest:mutableRequest];
@BramYeh
BramYeh / WKNavigationDelegate_Add_JavaScript
Last active March 29, 2017 12:06
Use JavaScript that injects cookies
#pragma mark - WKNavigationDelegate
- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation {
[webView evaluateJavaScript:@"document.cookie ='CookieKey=CookieValue'" completionHandler:nil];
}