diff --git a/.idea/misc.xml b/.idea/misc.xml index 7158618..cc72de3 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,8 +1,5 @@ - - - - - - - - - - - - - - + diff --git a/app/build.gradle b/app/build.gradle index 57d8386..8caf27f 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,14 +2,15 @@ apply plugin: 'com.android.application' android { compileSdkVersion 25 - buildToolsVersion "25.0.3" + buildToolsVersion '26.0.2' defaultConfig { applicationId "com.studentsearch.xoodle.studentsearch" - minSdkVersion 15 + minSdkVersion 19 targetSdkVersion 25 versionCode 5 versionName "1.3" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" + vectorDrawables.useSupportLibrary = true } buildTypes { release { @@ -20,16 +21,16 @@ android { aaptOptions { cruncherEnabled = false } + productFlavors { + } } dependencies { - compile fileTree(dir: 'libs', include: ['*.jar']) + compile fileTree(include: ['*.jar'], dir: 'libs') androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) - final GOOGLE_VERSION = '25.3.1' - compile "com.android.support:preference-v7:$GOOGLE_VERSION" compile "com.android.support:design:$GOOGLE_VERSION" compile "com.android.support:appcompat-v7:$GOOGLE_VERSION" @@ -39,16 +40,9 @@ dependencies { compile "com.android.support:support-annotations:$GOOGLE_VERSION" compile "com.android.support:customtabs:$GOOGLE_VERSION" compile "com.android.support:support-v4:$GOOGLE_VERSION" - compile 'com.squareup.retrofit:retrofit:1.9.0' testCompile 'junit:junit:4.12' //Retrofit 2, OkHttp and Gson - compile 'com.squareup.retrofit2:retrofit:2.3.0' - compile 'com.squareup.retrofit2:converter-gson:2.3.0' compile 'com.google.code.gson:gson:2.8.0' compile 'com.squareup.picasso:picasso:2.5.2' //Rounded Image View - compile 'com.makeramen:roundedimageview:2.3.0' - compile 'jp.wasabeef:recyclerview-animators:2.2.7@aar' - // Card Slider Android - 'com.ramotion.cardslider:card-slider:0.1.0' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 43738fe..226fb73 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,8 +1,11 @@ - + - + + + + android:name="com.studentsearch.xoodle.studentsearch.SplashActivity" + android:theme="@style/SplashTheme" + android:screenOrientation="portrait"> - - + + - - - + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/studentsearch/xoodle/studentsearch/AboutAppActivity.java b/app/src/main/java/com/studentsearch/xoodle/studentsearch/AboutAppActivity.java index 5846554..1dfabc7 100644 --- a/app/src/main/java/com/studentsearch/xoodle/studentsearch/AboutAppActivity.java +++ b/app/src/main/java/com/studentsearch/xoodle/studentsearch/AboutAppActivity.java @@ -1,19 +1,68 @@ package com.studentsearch.xoodle.studentsearch; +import android.content.Intent; +import android.net.Uri; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v7.app.AppCompatActivity; +import android.view.View; /** * Created by aryan on 15/7/17. */ -public class AboutAppActivity extends AppCompatActivity { +public class AboutAppActivity extends AppCompatActivity implements View.OnClickListener{ @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_about_app); getSupportActionBar().setDisplayHomeAsUpEnabled(true); + findViewById(R.id.about_app_btn_app_repo).setOnClickListener(this); + findViewById(R.id.about_app_btn_aryan_email).setOnClickListener(this); + findViewById(R.id.about_app_btn_aryan_github).setOnClickListener(this); + findViewById(R.id.about_app_btn_kaushal_email).setOnClickListener(this); + findViewById(R.id.about_app_btn_kaushal_github).setOnClickListener(this); + findViewById(R.id.about_app_btn_utkarsh_email).setOnClickListener(this); + findViewById(R.id.about_app_btn_utkarsh_github).setOnClickListener(this); + findViewById(R.id.about_app_btn_siddharth_email).setOnClickListener(this); + findViewById(R.id.about_app_btn_siddharth_github).setOnClickListener(this); + findViewById(R.id.about_app_btn_yash_email).setOnClickListener(this); + findViewById(R.id.about_app_btn_yash_github).setOnClickListener(this); + } + + @Override + public void onClick(View v) { + Intent intent = null; + switch (v.getId()) { + case R.id.about_app_btn_app_repo: intent = new Intent("android.intent.action.VIEW", Uri.parse("https://github.com/xoodle/frost")); + break; + case R.id.about_app_btn_aryan_email: intent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts( + "mailto","saryan@iitk.ac.in", null)); + break; + case R.id.about_app_btn_aryan_github: intent = new Intent("android.intent.action.VIEW", Uri.parse("https://github.com/aryanshar")); + break; + case R.id.about_app_btn_kaushal_email: intent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts( + "mailto","kaushalk@iitk.ac.in", null)); + break; + case R.id.about_app_btn_kaushal_github: intent = new Intent("android.intent.action.VIEW", Uri.parse("https://github.com/kaushal-k")); + break; + case R.id.about_app_btn_utkarsh_email: intent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts( + "mailto","butkarsh@iitk.ac.in", null)); + break; + case R.id.about_app_btn_utkarsh_github: intent = new Intent("android.intent.action.VIEW", Uri.parse("https://github.com/ubarsaiyan")); + break; + case R.id.about_app_btn_siddharth_email: intent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts( + "mailto","sidgane@iitk.ac.in", null)); + break; + case R.id.about_app_btn_siddharth_github: intent = new Intent("android.intent.action.VIEW", Uri.parse("https://github.com/siddharth2610")); + break; + case R.id.about_app_btn_yash_email: intent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts( + "mailto","yashsriv@iitk.ac.in", null)); + break; + case R.id.about_app_btn_yash_github: intent = new Intent("android.intent.action.VIEW", Uri.parse("https://github.com/yashsriv")); + break; + } + startActivity(intent); } } diff --git a/app/src/main/java/com/studentsearch/xoodle/studentsearch/DetailsActivity.java b/app/src/main/java/com/studentsearch/xoodle/studentsearch/DetailsActivity.java index 6c5c10a..c3eb561 100644 --- a/app/src/main/java/com/studentsearch/xoodle/studentsearch/DetailsActivity.java +++ b/app/src/main/java/com/studentsearch/xoodle/studentsearch/DetailsActivity.java @@ -1,301 +1,89 @@ package com.studentsearch.xoodle.studentsearch; -import android.animation.AnimatorSet; -import android.animation.ObjectAnimator; -import android.content.Context; +import android.app.Activity; import android.content.Intent; -import android.graphics.Typeface; import android.net.Uri; -import android.os.Build; +import android.os.AsyncTask; import android.os.Bundle; +import android.os.Environment; import android.support.annotation.Nullable; -import android.support.annotation.StyleRes; import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.RecyclerView; -import android.view.Gravity; +import android.view.Menu; +import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.widget.ImageView; -import android.widget.TextSwitcher; import android.widget.TextView; -import android.widget.ViewSwitcher; -import com.studentsearch.xoodle.studentsearch.adapter.SliderAdapter; -import com.studentsearch.xoodle.studentsearch.cardslider.CardSliderLayoutManager; -import com.studentsearch.xoodle.studentsearch.cardslider.CardSnapHelper; + +import com.squareup.picasso.Picasso; +import com.studentsearch.xoodle.studentsearch.adapter.SearchResultAdapter; import com.studentsearch.xoodle.studentsearch.utils.ConstantUtils; import com.studentsearch.xoodle.studentsearch.utils.MappingUtils; -import java.util.ArrayList; +import org.w3c.dom.Text; + +import java.io.File; /** - * Created by kaushal on 7/7/17. + * Created by aryan on 15/7/17. */ public class DetailsActivity extends AppCompatActivity { - ArrayList studentList; - private SliderAdapter sliderAdapter; - private CardSliderLayoutManager layoutManger; - private RecyclerView recyclerView; - private int currentPosition; - - private TextView name1TextView; - private TextView name2TextView; - private int nameOffset1; - private int nameOffset2; - private long nameAnimDuration; - - private TextSwitcher deptSwitcher; - private TextSwitcher hallSwitcher; - private TextSwitcher rollSwitcher; - private TextSwitcher usernameSwitcher; - private TextSwitcher bloodGroupSwitcher; - private TextSwitcher placeSwitcher; - - private String name_fb; - private String email; - - private ImageView deptImage; - - public static Intent getNewIntent(Context context) { - Intent i = new Intent(context, DetailsActivity.class); - return i; - } + private StudentData thisStudent = null; + private ImageView iv = null; + private TextView tvName = null; + private TextView tvEmail = null; + private TextView tvRollNo = null; + private TextView tvAddr = null; + private TextView tvProgramme = null; + private TextView tvHometown = null; + private TextView tvBloodGroup = null; @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { + public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.activity_details); - studentList = SearchResultActivity.studentDataArrayList; - currentPosition = getIntent().getIntExtra(ConstantUtils.CARD_SLIDER_POSITION, 0); - sliderAdapter = new SliderAdapter(this, studentList, new OnCardClickListener()); - initRecyclerView(); - initNameText(); - initSwitchers(); - initImages(); - ImageView imageLogo1 = (ImageView)findViewById(R.id.facebook); - imageLogo1.setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - // TODO Auto-generated method stub - name_fb = (studentList.get(currentPosition).getName()); - String url = "https://m.facebook.com/public/"+name_fb; - - Intent i = new Intent(Intent.ACTION_VIEW); - i.setData(Uri.parse(url)); - startActivity(i); - } - }); - ImageView imageLogo2 = (ImageView)findViewById(R.id.mail); - imageLogo2.setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - email = studentList.get(currentPosition).getUserName(); - Intent intent = new Intent(Intent.ACTION_SEND); - intent.setType("plain/text"); - intent.putExtra(Intent.EXTRA_EMAIL, new String[] { email+"@iitk.ac.in" }); - startActivity(Intent.createChooser(intent, "")); - } - }); - } - - private void initRecyclerView() { - recyclerView = (RecyclerView) findViewById(R.id.recycler_view); - recyclerView.setAdapter(sliderAdapter); - recyclerView.setHasFixedSize(true); - recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { - @Override - public void onScrollStateChanged(RecyclerView recyclerView, int newState) { - if (newState == RecyclerView.SCROLL_STATE_IDLE) { - onActiveCardChange(); - } - } - }); - layoutManger = (CardSliderLayoutManager) recyclerView.getLayoutManager(); - layoutManger.scrollToPosition(currentPosition); - new CardSnapHelper().attachToRecyclerView(recyclerView); - } - - private void initNameText() { - nameAnimDuration = getResources().getInteger(R.integer.labels_animation_duration); - nameOffset1 = getResources().getDimensionPixelSize(R.dimen.left_offset); - nameOffset2 = getResources().getDimensionPixelSize(R.dimen.card_width); - name1TextView = (TextView) findViewById(R.id.tv_name_1); - name2TextView = (TextView) findViewById(R.id.tv_name_2); - - name1TextView.setX(nameOffset1); - name2TextView.setX(nameOffset2); - name1TextView.setText(studentList.get(currentPosition).getName().toUpperCase()); - name2TextView.setAlpha(0f); - - name1TextView.setTypeface(Typeface.createFromAsset(getAssets(), "open-sans-extrabold.ttf")); - name2TextView.setTypeface(Typeface.createFromAsset(getAssets(), "open-sans-extrabold.ttf")); - } - - private void initSwitchers() { - deptSwitcher = (TextSwitcher) findViewById(R.id.ts_dept); - deptSwitcher.setFactory(new TextViewFactory(R.style.PlaceTextView, false)); - deptSwitcher.setCurrentText(studentList.get(currentPosition).getDept().toUpperCase()); - - hallSwitcher = (TextSwitcher) findViewById(R.id.ts_hall); - hallSwitcher.setFactory(new TextViewFactory(R.style.PlaceTextView, false)); - hallSwitcher.setCurrentText(studentList.get(currentPosition).getRoomNo() + ", " + studentList.get(currentPosition).getHall().toUpperCase()); - - rollSwitcher = (TextSwitcher) findViewById(R.id.ts_roll_no); - rollSwitcher.setFactory(new TextViewFactory(R.style.PlaceTextView, false)); - rollSwitcher.setCurrentText(studentList.get(currentPosition).getRollNo().toUpperCase()); - - usernameSwitcher = (TextSwitcher) findViewById(R.id.ts_username); - usernameSwitcher.setFactory(new TextViewFactory(R.style.PlaceTextView, false)); - usernameSwitcher.setCurrentText(studentList.get(currentPosition).getUserName() + "@iitk.ac.in"); - - bloodGroupSwitcher = (TextSwitcher) findViewById(R.id.ts_blood_group); - bloodGroupSwitcher.setFactory(new TextViewFactory(R.style.PlaceTextView, false)); - bloodGroupSwitcher.setCurrentText(studentList.get(currentPosition).getBloodGroup()); - - placeSwitcher = (TextSwitcher) findViewById(R.id.ts_place); - placeSwitcher.setFactory(new TextViewFactory(R.style.PlaceTextView, false)); - placeSwitcher.setCurrentText(studentList.get(currentPosition).getAddress().toUpperCase()); - - } - - private void initImages() { - deptImage = (ImageView) findViewById(R.id.dept_image); - deptImage.setImageDrawable(getDrawable(R.drawable.ic_dept)); - } - - private void setNameText(String text, boolean left2right) { - final TextView invisibleText; - final TextView visibleText; - if (name1TextView.getAlpha() > name2TextView.getAlpha()) { - visibleText = name1TextView; - invisibleText = name2TextView; - } else { - visibleText = name2TextView; - invisibleText = name1TextView; - } - - final int vOffset; - if (left2right) { - invisibleText.setX(0); - vOffset = nameOffset2; - } else { - invisibleText.setX(nameOffset2); - vOffset = 0; - } - - invisibleText.setText(text); - - final ObjectAnimator iAlpha = ObjectAnimator.ofFloat(invisibleText, "alpha", 1f); - final ObjectAnimator vAlpha = ObjectAnimator.ofFloat(visibleText, "alpha", 0f); - final ObjectAnimator iX = ObjectAnimator.ofFloat(invisibleText, "x", nameOffset1); - final ObjectAnimator vX = ObjectAnimator.ofFloat(visibleText, "x", vOffset); - - final AnimatorSet animSet = new AnimatorSet(); - animSet.playTogether(iAlpha, vAlpha, iX, vX); - animSet.setDuration(nameAnimDuration); - animSet.start(); - } - - private void onActiveCardChange() { - final int pos = layoutManger.getActiveCardPosition(); - if (pos == RecyclerView.NO_POSITION || pos == currentPosition) { - return; - } - onActiveCardChange(pos); - } - - private void onActiveCardChange(int pos) { - int animH[] = new int[] {R.anim.slide_in_right, R.anim.slide_out_left}; - int animV[] = new int[] {R.anim.slide_in_top, R.anim.slide_out_bottom}; - final boolean left2right = pos < currentPosition; - if (left2right) { - animH[0] = R.anim.slide_in_left; - animH[1] = R.anim.slide_out_right; - animV[0] = R.anim.slide_in_bottom; - animV[1] = R.anim.slide_out_top; - } - - StudentData student = studentList.get(pos); - - setNameText(student.getName().toUpperCase(), left2right); - - deptImage.setImageDrawable(getDrawable(R.drawable.ic_dept)); - - deptSwitcher.setInAnimation(DetailsActivity.this, animV[0]); - deptSwitcher.setOutAnimation(DetailsActivity.this, animV[1]); - deptSwitcher.setText(student.getDept().toUpperCase()); - - hallSwitcher.setInAnimation(DetailsActivity.this, animV[0]); - hallSwitcher.setOutAnimation(DetailsActivity.this, animV[1]); - hallSwitcher.setText(student.getRoomNo() + ", " + student.getHall().toUpperCase()); - - rollSwitcher.setInAnimation(DetailsActivity.this, animV[0]); - rollSwitcher.setOutAnimation(DetailsActivity.this, animV[1]); - rollSwitcher.setText(student.getRollNo().toUpperCase()); - - usernameSwitcher.setInAnimation(DetailsActivity.this, animV[0]); - usernameSwitcher.setOutAnimation(DetailsActivity.this, animV[1]); - usernameSwitcher.setText(student.getUserName() + "@iitk.ac.in"); - - bloodGroupSwitcher.setInAnimation(DetailsActivity.this, animV[0]); - bloodGroupSwitcher.setOutAnimation(DetailsActivity.this, animV[1]); - bloodGroupSwitcher.setText(student.getBloodGroup()); - - placeSwitcher.setInAnimation(DetailsActivity.this, animV[0]); - placeSwitcher.setOutAnimation(DetailsActivity.this, animV[1]); - placeSwitcher.setText(student.getAddress().toUpperCase()); - - currentPosition = pos; + setContentView(R.layout.activity_detail); + getSupportActionBar().setDisplayHomeAsUpEnabled(true); + thisStudent = getIntent().getParcelableExtra("student"); + iv = (ImageView)findViewById(R.id.details_iv); + new SearchResultAdapter.ViewHolder.CheckUserImage(this, getPackageName(), thisStudent, iv).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR,thisStudent.getUserName()); + tvName = (TextView)findViewById(R.id.details_tv_name); + tvEmail = (TextView)findViewById(R.id.details_tv_email); + tvRollNo = (TextView)findViewById(R.id.details_tv_rollno); + tvAddr = (TextView)findViewById(R.id.details_tv_address); + tvProgramme = (TextView)findViewById(R.id.details_tv_programme); + tvHometown = (TextView)findViewById(R.id.details_tv_hometown); + tvBloodGroup = (TextView)findViewById(R.id.details_tv_bloodgroup); + tvName.setText(thisStudent.getName().trim()); + tvEmail.setText(thisStudent.getUserName().trim() + "@iitk.ac.in"); + tvRollNo.setText(thisStudent.getRollNo().trim()); + tvAddr.setText(thisStudent.getRoomNo().trim() + ", " + (MappingUtils.getInstance().getHallMap().containsKey(thisStudent.getHall()) ? MappingUtils.getInstance().getHallMap().get(thisStudent.getHall()) : thisStudent.getHall().trim())); + tvProgramme.setText(thisStudent.getProgramme().trim() + ", " + thisStudent.getDept().trim()); + String hometown = thisStudent.getAddress().trim(); + if(hometown.charAt(0)>=97 && hometown.charAt(0)<=122) hometown = ((char)(hometown.charAt(0)-32)) + hometown.substring(1); + tvHometown.setText(hometown); + tvBloodGroup.setText(thisStudent.getBloodGroup().trim()); } @Override public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case android.R.id.home: - finish(); - break; + if(item.getItemId() == android.R.id.home) onBackPressed(); + else if(item.getItemId() == R.id.menu_detail_email) { + Intent intent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts( + "mailto",thisStudent.getUserName() + "@iitk.ac.in", null)); + startActivity(intent); } return true; } - private class OnCardClickListener implements View.OnClickListener { - @Override - public void onClick(View v) { - // some action - } + @Override + public boolean onCreateOptionsMenu(Menu menu) { + getMenuInflater().inflate(R.menu.menu_detail_activity, menu); + return super.onCreateOptionsMenu(menu); } - private class TextViewFactory implements ViewSwitcher.ViewFactory { - - @StyleRes - final int styleId; - final boolean center; - - TextViewFactory(@StyleRes int styleId, boolean center) { - this.styleId = styleId; - this.center = center; - } - - @SuppressWarnings("deprecation") - @Override - public View makeView() { - final TextView textView = new TextView(DetailsActivity.this); - - if (center) { - textView.setGravity(Gravity.CENTER); - } - - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) { - textView.setTextAppearance(DetailsActivity.this, styleId); - } else { - textView.setTextAppearance(styleId); - } - - return textView; - } - + public static Intent getNewIntent(Activity c) { + return new Intent(c, DetailsActivity.class); } } diff --git a/app/src/main/java/com/studentsearch/xoodle/studentsearch/MainActivity.java b/app/src/main/java/com/studentsearch/xoodle/studentsearch/MainActivity.java index 9c86327..460aa38 100644 --- a/app/src/main/java/com/studentsearch/xoodle/studentsearch/MainActivity.java +++ b/app/src/main/java/com/studentsearch/xoodle/studentsearch/MainActivity.java @@ -12,6 +12,8 @@ import android.support.v7.app.ActionBar; import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; +import android.text.Editable; +import android.text.TextWatcher; import android.view.KeyEvent; import android.view.Menu; import android.view.MenuInflater; @@ -64,6 +66,19 @@ protected void onCreate(Bundle savedInstanceState) { } mEditText = (EditText) findViewById(R.id.edit_text); + mEditText.addTextChangedListener(new TextWatcher() { + @Override + public void beforeTextChanged(CharSequence s, int start, int count, int after) {} + + @Override + public void onTextChanged(CharSequence s, int start, int before, int count) {} + + @Override + public void afterTextChanged(Editable s) { + if(mEditText.getText()==null || mEditText.getText().equals("")) mEditText.getCompoundDrawables()[2].setAlpha(0); + else if(mEditText.getText() != null && !mEditText.getText().equals("")) mEditText.getCompoundDrawables()[2].setAlpha(255); + } + }); mEditText.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { @@ -71,7 +86,7 @@ public boolean onTouch(View v, MotionEvent event) { final int DRAWABLE_LEFT = 0; if(event.getAction() == MotionEvent.ACTION_UP) { - if(event.getRawX() >= (mEditText.getRight() - mEditText.getCompoundDrawables()[DRAWABLE_RIGHT].getBounds().width()-mEditText.getCompoundDrawables()[DRAWABLE_RIGHT].getBounds().width())) { + if(event.getRawX() >= (mEditText.getRight() - mEditText.getCompoundDrawables()[DRAWABLE_RIGHT].getBounds().width()-mEditText.getCompoundDrawables()[DRAWABLE_RIGHT].getBounds().width()) && mEditText.getText() != null && !mEditText.getText().equals("")) { mEditText.setText(""); return true; } @@ -152,7 +167,7 @@ public void setFilterSpinnerEntries() { ArrayList listOfEntries; SpinnerAdapter spinnerAdapter; String tempEntry; - MappingUtils mpu = new MappingUtils(); + MappingUtils mpu = MappingUtils.getInstance(); Cursor cursor = db.rawQuery("SELECT DISTINCT " + DbHelper.COLUMN_HALL + " FROM " + DbHelper.TABLE_NAME, null); cursor.moveToFirst(); @@ -175,7 +190,7 @@ public void setFilterSpinnerEntries() { listOfEntries.add(s); } - spinnerAdapter = new SpinnerAdapter(this,android.R.layout.simple_spinner_item, listOfEntries, ConstantUtils.BLOOD_GROUP); + spinnerAdapter = new SpinnerAdapter(this, R.layout.support_simple_spinner_dropdown_item, listOfEntries, ConstantUtils.BLOOD_GROUP); spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); ((Spinner) findViewById(R.id.spinner_blood_group)).setAdapter(spinnerAdapter); @@ -190,7 +205,7 @@ public void setFilterSpinnerEntries() { cursor.moveToNext(); } Collections.sort(listOfEntries); - spinnerAdapter = new SpinnerAdapter(this, android.R.layout.simple_spinner_item, listOfEntries, ConstantUtils.DEPT); + spinnerAdapter = new SpinnerAdapter(this, R.layout.support_simple_spinner_dropdown_item, listOfEntries, ConstantUtils.DEPT); spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); ((Spinner) findViewById(R.id.spinner_dept)).setAdapter(spinnerAdapter); cursor.close(); @@ -206,7 +221,7 @@ public void setFilterSpinnerEntries() { cursor.moveToNext(); } Collections.sort(listOfEntries); - spinnerAdapter = new SpinnerAdapter(this, android.R.layout.simple_spinner_item, listOfEntries, ConstantUtils.PROGRAMME); + spinnerAdapter = new SpinnerAdapter(this, R.layout.support_simple_spinner_dropdown_item, listOfEntries, ConstantUtils.PROGRAMME); spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); ((Spinner) findViewById(R.id.spinner_programme)).setAdapter(spinnerAdapter); cursor.close(); @@ -216,7 +231,7 @@ public void setFilterSpinnerEntries() { for(String s : ConstantUtils.GENDER_LIST) { listOfEntries.add(s); } - spinnerAdapter = new SpinnerAdapter(this, android.R.layout.simple_spinner_item, listOfEntries, ConstantUtils.GENDER); + spinnerAdapter = new SpinnerAdapter(this, R.layout.support_simple_spinner_dropdown_item, listOfEntries, ConstantUtils.GENDER); spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); ((Spinner) findViewById(R.id.spinner_gender)).setAdapter(spinnerAdapter); @@ -234,11 +249,10 @@ public void setFilterSpinnerEntries() { cursor.moveToNext(); } listOfEntries.add("Others"); - spinnerAdapter = new SpinnerAdapter(this, android.R.layout.simple_spinner_item, listOfEntries, ConstantUtils.YEAR); + spinnerAdapter = new SpinnerAdapter(this, R.layout.support_simple_spinner_dropdown_item, listOfEntries, ConstantUtils.YEAR); spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); ((Spinner) findViewById(R.id.spinner_year)).setAdapter(spinnerAdapter); cursor.close(); - } private void imageDownloadAlertbox() { DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() { diff --git a/app/src/main/java/com/studentsearch/xoodle/studentsearch/SearchResultActivity.java b/app/src/main/java/com/studentsearch/xoodle/studentsearch/SearchResultActivity.java index 1ad91f7..a79de69 100644 --- a/app/src/main/java/com/studentsearch/xoodle/studentsearch/SearchResultActivity.java +++ b/app/src/main/java/com/studentsearch/xoodle/studentsearch/SearchResultActivity.java @@ -21,7 +21,6 @@ import com.studentsearch.xoodle.studentsearch.adapter.SearchResultAdapter; import com.studentsearch.xoodle.studentsearch.database.DbHelper; import java.util.ArrayList; -import jp.wasabeef.recyclerview.adapters.ScaleInAnimationAdapter; public class SearchResultActivity extends AppCompatActivity { @@ -191,13 +190,10 @@ protected void onPostExecute(Void aVoid) { super.onPostExecute(aVoid); int count = studentDataArrayList.size(); if(count > 0) { - getSupportActionBar().setSubtitle("Displaying " + count + " Results"); + getSupportActionBar().setSubtitle("Displaying " + count + (count == 1 ? " result" : " results")); - mSearchResultAdapter = new SearchResultAdapter(getApplicationContext(), studentDataArrayList); - ScaleInAnimationAdapter scaleAdapter = new ScaleInAnimationAdapter(mSearchResultAdapter); - scaleAdapter.setFirstOnly(false); - scaleAdapter.setDuration(300); - mResultRecyclerView.setAdapter(scaleAdapter); + mSearchResultAdapter = new SearchResultAdapter(SearchResultActivity.this, studentDataArrayList); + mResultRecyclerView.setAdapter(mSearchResultAdapter); mResultRecyclerView.setVisibility(View.VISIBLE); } else { findViewById(R.id.tv_not_found).setVisibility(View.VISIBLE); diff --git a/app/src/main/java/com/studentsearch/xoodle/studentsearch/SplashActivity.java b/app/src/main/java/com/studentsearch/xoodle/studentsearch/SplashActivity.java index 3c9825e..0ece470 100644 --- a/app/src/main/java/com/studentsearch/xoodle/studentsearch/SplashActivity.java +++ b/app/src/main/java/com/studentsearch/xoodle/studentsearch/SplashActivity.java @@ -18,13 +18,8 @@ public class SplashActivity extends AppCompatActivity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.splashscreen); - Animation anim1 = AnimationUtils.loadAnimation(this,R.anim.anim_down); - ImageView img =(ImageView)findViewById(R.id.imageView); - img.setAnimation(anim1); - Handler handler = new Handler(); - - handler.postDelayed(new Runnable() { + new Handler().postDelayed(new Runnable() { @Override public void run() { @@ -32,6 +27,6 @@ public void run() { finish(); } - },1000); + },300); } } \ No newline at end of file diff --git a/app/src/main/java/com/studentsearch/xoodle/studentsearch/adapter/CardsUpdater.java b/app/src/main/java/com/studentsearch/xoodle/studentsearch/adapter/CardsUpdater.java deleted file mode 100644 index 6d461a9..0000000 --- a/app/src/main/java/com/studentsearch/xoodle/studentsearch/adapter/CardsUpdater.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.studentsearch.xoodle.studentsearch.adapter; - -import android.os.Build; -import android.support.annotation.NonNull; -import android.support.v4.view.ViewCompat; -import android.support.v7.widget.CardView; -import android.view.View; - -import com.studentsearch.xoodle.studentsearch.cardslider.CardSliderLayoutManager; -import com.studentsearch.xoodle.studentsearch.cardslider.DefaultViewUpdater; - -public class CardsUpdater extends DefaultViewUpdater { - - public CardsUpdater(CardSliderLayoutManager lm) { - super(lm); - } - - @Override - public void onLayoutManagerInitialized() { - super.onLayoutManagerInitialized(); - } - - @Override - protected void onUpdateViewAlpha(@NonNull View view, float alpha) { - final CardView card = ((CardView)view); - final View alphaView = card.getChildAt(1); - final View imageView = card.getChildAt(0); - - final boolean isLeftCard = alpha < 1; - if (isLeftCard) { - ViewCompat.setAlpha(alphaView, 0.9f - alpha); - ViewCompat.setAlpha(imageView, 0.3f + alpha); - } else { - if (ViewCompat.getAlpha(alphaView) != 0) { - ViewCompat.setAlpha(alphaView, 0f); - } - - if (ViewCompat.getAlpha(imageView) != 1) { - ViewCompat.setAlpha(imageView, 1f); - } - } - } - - @Override - protected void onUpdateViewZ(@NonNull View view, float z) { - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { - ((CardView)view).setCardElevation(Math.max(0, z)); - } else { - super.onUpdateViewZ(view, z); - } - } -} diff --git a/app/src/main/java/com/studentsearch/xoodle/studentsearch/adapter/SearchResultAdapter.java b/app/src/main/java/com/studentsearch/xoodle/studentsearch/adapter/SearchResultAdapter.java index 3a182b8..2522610 100644 --- a/app/src/main/java/com/studentsearch/xoodle/studentsearch/adapter/SearchResultAdapter.java +++ b/app/src/main/java/com/studentsearch/xoodle/studentsearch/adapter/SearchResultAdapter.java @@ -1,10 +1,15 @@ package com.studentsearch.xoodle.studentsearch.adapter; +import android.app.Activity; import android.content.Context; import android.content.Intent; import android.content.res.Resources; +import android.graphics.Bitmap; +import android.graphics.drawable.BitmapDrawable; +import android.media.Image; import android.os.AsyncTask; import android.os.Environment; +import android.support.v4.app.ActivityOptionsCompat; import android.support.v7.widget.RecyclerView; import android.util.Log; import android.view.LayoutInflater; @@ -18,7 +23,11 @@ import com.studentsearch.xoodle.studentsearch.StudentData; import com.studentsearch.xoodle.studentsearch.utils.ConstantUtils; import com.studentsearch.xoodle.studentsearch.utils.MappingUtils; + +import java.io.ByteArrayOutputStream; import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; import java.io.IOException; import java.net.HttpURLConnection; import java.net.URL; @@ -29,13 +38,13 @@ public class SearchResultAdapter extends RecyclerView.Adapter { - private ArrayList mStudentData; - private Context context; + private static ArrayList mStudentData; + private Activity context; private String packageName; private Comparator comparator = new Comparator() { @Override public int compare(StudentData s1, StudentData s2) { - MappingUtils mappingUtils = new MappingUtils(); + MappingUtils mappingUtils = MappingUtils.getInstance(); int result; Map yearMap = mappingUtils.getYearMap(); if (yearMap.get(s1.getYear()) == null && yearMap.get(s2.getYear()) == null) { @@ -61,11 +70,11 @@ public int compare(StudentData s1, StudentData s2) { } }; - public SearchResultAdapter(Context context, ArrayList studentData) { + public SearchResultAdapter(Activity context, ArrayList studentData) { this.context = context; this.packageName = context.getPackageName(); Collections.sort(studentData, comparator); - this.mStudentData = studentData; + mStudentData = studentData; } @Override @@ -76,15 +85,7 @@ public SearchResultAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int v @Override public void onBindViewHolder(ViewHolder holder, final int position) { - holder.bind(context, packageName, mStudentData.get(position)); - holder.getView().setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - Intent intent = DetailsActivity.getNewIntent(context); - intent.putExtra(ConstantUtils.CARD_SLIDER_POSITION, position); - v.getContext().startActivity(intent); - } - }); + holder.bind(context, packageName, position); } @Override @@ -98,19 +99,17 @@ public void onAttachedToRecyclerView(RecyclerView recyclerView) { } public static class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { - private TextView mNameView, mRollView, mDeptView, mHallView, mUserBloodView; + private TextView tvName, tvAddress, tvProgramme; private View view; - public ImageView mImageView; + public ImageView iv; public ViewHolder(View v) { super(v); view = v; - mNameView = (TextView) v.findViewById(R.id.tv_name); - mRollView = (TextView) v.findViewById(R.id.tv_roll); - mDeptView = (TextView) v.findViewById(R.id.tv_dept); - mHallView = (TextView) v.findViewById(R.id.tv_hall); - mUserBloodView = (TextView) v.findViewById(R.id.tv_user_blood); - mImageView = (ImageView) v.findViewById(R.id.user_image); + tvName = (TextView) v.findViewById(R.id.card_entries_tv_name); + tvAddress = (TextView) v.findViewById(R.id.card_entries_tv_address); + tvProgramme = (TextView) v.findViewById(R.id.card_entries_tv_programme); + iv = (ImageView) v.findViewById(R.id.card_entries_iv); } @Override @@ -118,25 +117,35 @@ public void onClick(View v) { // some action } - public void bind(Context context, String packageName, final StudentData studentData) { - mNameView.setText(studentData.getName()); - mRollView.setText("Roll Number: "+studentData.getRollNo()); - mDeptView.setText("Dept: "+studentData.getDept()+" - "+studentData.getProgramme()); - mHallView.setText("IITK Address:"+studentData.getRoomNo()+ ", "+studentData.getHall()); - mUserBloodView.setText("Blood Group: "+studentData.getBloodGroup()); - - new CheckUserImage(context, packageName, studentData).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR,studentData.getUserName()); - } + public void bind(Activity context, String packageName, final int position) { + final StudentData studentData = mStudentData.get(position); + tvName.setText(studentData.getName()); + tvAddress.setText(studentData.getRoomNo().trim() + ", " + (MappingUtils.getInstance().getHallMap().get(studentData.getHall()) != null ? MappingUtils.getInstance().getHallMap().get(studentData.getHall()) : studentData.getHall())); + tvProgramme.setText(studentData.getProgramme() + ", " + (MappingUtils.getInstance().getDeptAbbrevMap().containsKey(studentData.getDept())?MappingUtils.getInstance().getDeptAbbrevMap().get(studentData.getDept()):studentData.getDept())); + new CheckUserImage(context, packageName, studentData, iv).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR,studentData.getUserName()); + final Activity c = context; + view.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(c, iv, "to_more_detail"); + Intent intent = DetailsActivity.getNewIntent(c); + intent.putExtra(ConstantUtils.CARD_SLIDER_POSITION, position); + intent.putExtra("student", studentData); + c.startActivity(intent, options.toBundle()); + } + }); } - class CheckUserImage extends AsyncTask { + public static class CheckUserImage extends AsyncTask { Context context; String packageName; StudentData studentData; + ImageView iv; - public CheckUserImage(Context context, String packageName, final StudentData studentData){ + public CheckUserImage(Context context, String packageName, final StudentData studentData, ImageView iv){ this.context = context; this.packageName = packageName; this.studentData = studentData; + this.iv = iv; } protected Boolean doInBackground(String... params) { @@ -160,15 +169,16 @@ protected Boolean doInBackground(String... params) { } protected void onPostExecute(Boolean imageURLAvailable){ - int errID; Resources res = context.getResources(); - if (studentData.getGender().equals("M")) { - errID = res.getIdentifier("boy", "drawable", packageName); - } else { - errID = res.getIdentifier("girl", "drawable", packageName); - } - + int errID = res.getIdentifier("ic_person_black_48dp", "drawable", packageName); File directory = new File(context.getExternalFilesDir(Environment.DIRECTORY_PICTURES), "studentPics"); + File nomedia = new File(directory, ".nomedia"); + if(!nomedia.exists()) { + try { + nomedia.createNewFile(); + } + catch(Exception e) {} + } File image = new File(directory, studentData.getRollNo() + "_0"); if (image.exists()) { @@ -176,19 +186,47 @@ protected void onPostExecute(Boolean imageURLAvailable){ .load(image) .placeholder(errID) .error(errID) - .into(mImageView); + .into(iv); } else if (imageURLAvailable) { Picasso.with(context) .load("http://home.iitk.ac.in/~" + studentData.getUserName() + "/dp") .resize(150,200) .centerCrop() - .into(mImageView); + .into(iv); + if(iv.getDrawable() != null) { + Bitmap bitmap = ((BitmapDrawable)iv.getDrawable()).getBitmap(); + ByteArrayOutputStream array = new ByteArrayOutputStream(); + bitmap.compress(Bitmap.CompressFormat.JPEG, 100, array); + try { + if(image.createNewFile()) { + FileOutputStream stream = new FileOutputStream(image); + stream.write(array.toByteArray()); + stream.close(); + } + } + catch(FileNotFoundException fnfe){} + catch(IOException ioe) {} + } } else { Picasso.with(context) .load(ConstantUtils.ImageUrl + studentData.getRollNo() + "_0.jpg") .placeholder(errID) .error(errID) - .into(mImageView); + .into(iv); + if(iv.getDrawable() != null) { + Bitmap bitmap = ((BitmapDrawable)iv.getDrawable()).getBitmap(); + ByteArrayOutputStream array = new ByteArrayOutputStream(); + bitmap.compress(Bitmap.CompressFormat.JPEG, 100, array); + try { + if(image.createNewFile()) { + FileOutputStream stream = new FileOutputStream(image); + stream.write(array.toByteArray()); + stream.close(); + } + } + catch(FileNotFoundException fnfe){} + catch(IOException ioe) {} + } } } } diff --git a/app/src/main/java/com/studentsearch/xoodle/studentsearch/adapter/SliderAdapter.java b/app/src/main/java/com/studentsearch/xoodle/studentsearch/adapter/SliderAdapter.java deleted file mode 100644 index b76024f..0000000 --- a/app/src/main/java/com/studentsearch/xoodle/studentsearch/adapter/SliderAdapter.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.studentsearch.xoodle.studentsearch.adapter; - -/** - * Created by kaushal on 7/7/17. - */ - -import android.content.Context; -import android.support.v7.widget.RecyclerView; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import com.studentsearch.xoodle.studentsearch.R; -import com.studentsearch.xoodle.studentsearch.StudentData; -import java.util.ArrayList; - -public class SliderAdapter extends RecyclerView.Adapter { - private final int count; - private final View.OnClickListener listener; - private Context context; - private ArrayList studentList; - - public SliderAdapter(Context context, ArrayList studentList, View.OnClickListener listener) { - this.count = studentList.size(); - this.context = context; - this.listener = listener; - this.studentList = studentList; - } - - @Override - public SliderCard onCreateViewHolder(ViewGroup parent, int viewType) { - final View view = LayoutInflater - .from(parent.getContext()) - .inflate(R.layout.layout_slider_card, parent, false); - if (listener != null) { - view.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - listener.onClick(view); - } - }); - } - return new SliderCard(view, context); - } - - @Override - public void onBindViewHolder(SliderCard holder, int position) { - holder.setContent(position, studentList.get(position)); - } - - @Override - public void onViewRecycled(SliderCard holder) { - holder.clearContent(); - } - - @Override - public int getItemCount() { - return count; - } -} \ No newline at end of file diff --git a/app/src/main/java/com/studentsearch/xoodle/studentsearch/adapter/SliderCard.java b/app/src/main/java/com/studentsearch/xoodle/studentsearch/adapter/SliderCard.java deleted file mode 100644 index 68f4121..0000000 --- a/app/src/main/java/com/studentsearch/xoodle/studentsearch/adapter/SliderCard.java +++ /dev/null @@ -1,90 +0,0 @@ -package com.studentsearch.xoodle.studentsearch.adapter; - -import android.content.Context; -import android.content.res.Resources; -import android.os.Environment; -import android.support.v7.widget.RecyclerView; -import android.util.Log; -import android.view.View; -import android.view.ViewTreeObserver; -import android.widget.ImageView; -import com.squareup.picasso.Picasso; -import com.studentsearch.xoodle.studentsearch.R; -import com.studentsearch.xoodle.studentsearch.StudentData; -import com.studentsearch.xoodle.studentsearch.utils.ConstantUtils; -import com.studentsearch.xoodle.studentsearch.utils.DecodeBitmapTask; -import java.io.File; - -/** - * Created by kaushal on 7/7/17. - */ - -public class SliderCard extends RecyclerView.ViewHolder { - - private static int viewWidth = 0; - private static int viewHeight = 0; - private ImageView imageView; - private Context context; - private DecodeBitmapTask task; - - public SliderCard(View itemView, Context context) { - super(itemView); - imageView = (ImageView) itemView.findViewById(R.id.image); - this.context = context; - } - - void setContent(final int position, final StudentData studentData) { - if (viewWidth == 0) { - itemView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { - @Override - public void onGlobalLayout() { - itemView.getViewTreeObserver().removeOnGlobalLayoutListener(this); - viewWidth = itemView.getWidth(); - viewHeight = itemView.getHeight(); - loadImage(studentData); - } - }); - } else { - loadImage(studentData); - } - } - - private void loadImage(StudentData studentData) { - int errID; - Resources res = context.getResources(); - if (studentData.getGender().equals("M")) { - errID = res.getIdentifier("boy", "drawable", context.getPackageName()); - } else { - errID = res.getIdentifier("girl", "drawable", context.getPackageName()); - } - - File directory = new File(context.getExternalFilesDir(Environment.DIRECTORY_PICTURES), "studentPics"); - File image = new File(directory, studentData.getRollNo() + "_0"); - Picasso.with(context) - .load("http://home.iitk.ac.in/~" + studentData.getUserName() + "/dp") - .resize(150,200) - .centerCrop() - .into(this.imageView); - if(this.imageView.getDrawable() == null) { - if (image.exists()) { - Picasso.with(context) - .load(image) - .placeholder(errID) - .error(errID) - .into(this.imageView); - } else { - Picasso.with(context) - .load(ConstantUtils.ImageUrl + studentData.getRollNo() + "_0.jpg") - .placeholder(errID) - .error(errID) - .into(this.imageView); - } - } - } - - void clearContent() { - if (task != null) { - task.cancel(true); - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/studentsearch/xoodle/studentsearch/adapter/SpinnerAdapter.java b/app/src/main/java/com/studentsearch/xoodle/studentsearch/adapter/SpinnerAdapter.java index 4799c7f..d2618a4 100644 --- a/app/src/main/java/com/studentsearch/xoodle/studentsearch/adapter/SpinnerAdapter.java +++ b/app/src/main/java/com/studentsearch/xoodle/studentsearch/adapter/SpinnerAdapter.java @@ -21,10 +21,12 @@ public class SpinnerAdapter extends ArrayAdapter { private String tag; - + private Map map; + public SpinnerAdapter(Context context, int resource, List items, String tag) { super(context, resource, items); this.tag = tag; + map = getMapping(); Collections.sort(items, getComparator()); } @@ -32,7 +34,6 @@ public SpinnerAdapter(Context context, int resource, List items, String @Override public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) { TextView textView = (TextView) super.getView(position, convertView, parent); - Map map = getMapping(); if(map != null) { String value = map.get(getItem(position)); if(value == null) { @@ -46,7 +47,6 @@ public View getView(int position, @Nullable View convertView, @NonNull ViewGroup @Override public View getDropDownView(int position, @Nullable View convertView, @NonNull ViewGroup parent) { TextView textView = (TextView) super.getDropDownView(position, convertView, parent); - Map map = getMapping(); if(map != null) { String value = map.get(getItem(position)); if(value == null) { @@ -58,7 +58,7 @@ public View getDropDownView(int position, @Nullable View convertView, @NonNull V } private Map getMapping() { - MappingUtils mappingUtils = new MappingUtils(); + MappingUtils mappingUtils = MappingUtils.getInstance(); switch(tag) { case ConstantUtils.HALL: return mappingUtils.getHallMap(); diff --git a/app/src/main/java/com/studentsearch/xoodle/studentsearch/cardslider/CardSliderLayoutManager.java b/app/src/main/java/com/studentsearch/xoodle/studentsearch/cardslider/CardSliderLayoutManager.java deleted file mode 100644 index 3472f21..0000000 --- a/app/src/main/java/com/studentsearch/xoodle/studentsearch/cardslider/CardSliderLayoutManager.java +++ /dev/null @@ -1,622 +0,0 @@ -package com.studentsearch.xoodle.studentsearch.cardslider; - -import android.content.Context; -import android.content.res.TypedArray; -import android.graphics.PointF; -import android.os.Parcel; -import android.os.Parcelable; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.v7.widget.LinearSmoothScroller; -import android.support.v7.widget.RecyclerView; -import android.util.AttributeSet; -import android.util.DisplayMetrics; -import android.util.SparseArray; -import android.util.SparseIntArray; -import android.view.View; - -import java.lang.reflect.Constructor; -import java.lang.reflect.InvocationTargetException; -import java.util.LinkedList; -import com.studentsearch.xoodle.studentsearch.R; - -public class CardSliderLayoutManager extends RecyclerView.LayoutManager - implements RecyclerView.SmoothScroller.ScrollVectorProvider { - - private static final int DEFAULT_ACTIVE_CARD_LEFT_OFFSET = 50; - private static final int DEFAULT_CARD_WIDTH = 148; - private static final int DEFAULT_CARDS_GAP = 12; - private static final int LEFT_CARD_COUNT = 2; - - private final SparseArray viewCache = new SparseArray<>(); - private final SparseIntArray cardsXCoords = new SparseIntArray(); - - private int cardWidth; - private int activeCardLeft; - private int activeCardRight; - private int activeCardCenter; - - private float cardsGap; - - private int scrollRequestedPosition = 0; - - private ViewUpdater viewUpdater; - - /** - * Creates CardSliderLayoutManager with default values - * - * @param context Current context, will be used to access resources. - */ - public CardSliderLayoutManager(@NonNull Context context) { - this(context, null, 0, 0); - } - - /** - * Constructor used when layout manager is set in XML by RecyclerView attribute - * "layoutManager". - * - * @attr ref R.styleable#CardSlider_activeCardLeftOffset - * @attr ref R.styleable#CardSlider_cardWidth - * @attr ref R.styleable#CardSlider_cardsGap - */ - public CardSliderLayoutManager(@NonNull Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { - final float density = context.getResources().getDisplayMetrics().density; - - final int defaultCardWidth = (int) (DEFAULT_CARD_WIDTH * density); - final int defaultActiveCardLeft = (int) (DEFAULT_ACTIVE_CARD_LEFT_OFFSET * density); - final float defaultCardsGap = DEFAULT_CARDS_GAP * density; - - if (attrs == null) { - initialize(defaultActiveCardLeft, defaultCardWidth, defaultCardsGap, null); - } else { - int attrCardWidth; - int attrActiveCardLeft; - float attrCardsGap; - String viewUpdateClassName; - - final TypedArray a = context.getTheme().obtainStyledAttributes(attrs, R.styleable.CardSlider, 0, 0); - try { - attrCardWidth = a.getDimensionPixelSize(R.styleable.CardSlider_cardWidth, defaultCardWidth); - attrActiveCardLeft = a.getDimensionPixelSize(R.styleable.CardSlider_activeCardLeftOffset, defaultActiveCardLeft); - attrCardsGap = a.getDimension(R.styleable.CardSlider_cardsGap, defaultCardsGap); - viewUpdateClassName = a.getString(R.styleable.CardSlider_viewUpdater); - } finally { - a.recycle(); - } - - final ViewUpdater viewUpdater = loadViewUpdater(context, viewUpdateClassName, attrs); - initialize(attrActiveCardLeft, attrCardWidth, attrCardsGap, viewUpdater); - } - } - - /** - * Creates CardSliderLayoutManager with specified values in pixels. - * - * @param activeCardLeft Active card offset from start of RecyclerView. Default value is 50dp. - * @param cardWidth Card width. Default value is 148dp. - * @param cardsGap Distance between cards. Default value is 12dp. - */ - public CardSliderLayoutManager(int activeCardLeft, int cardWidth, float cardsGap) { - initialize(activeCardLeft, cardWidth, cardsGap, null); - } - - private void initialize(int left, int width, float gap, @Nullable ViewUpdater updater) { - this.cardWidth = width; - this.activeCardLeft = left; - this.activeCardRight = activeCardLeft + cardWidth; - this.activeCardCenter = activeCardLeft + ((this.activeCardRight - activeCardLeft) / 2); - this.cardsGap = gap; - - this.viewUpdater = updater; - if (this.viewUpdater == null) { - this.viewUpdater = new DefaultViewUpdater(this); - } - viewUpdater.onLayoutManagerInitialized(); - } - - @Override - public RecyclerView.LayoutParams generateDefaultLayoutParams() { - return new RecyclerView.LayoutParams( - RecyclerView.LayoutParams.WRAP_CONTENT, - RecyclerView.LayoutParams.WRAP_CONTENT); - } - - @Override - public void onLayoutChildren(RecyclerView.Recycler recycler, RecyclerView.State state) { - if (getItemCount() == 0) { - removeAndRecycleAllViews(recycler); - return; - } - - if (getChildCount() == 0 && state.isPreLayout()) { - return; - } - - int anchorPos = getActiveCardPosition(); - - if (state.isPreLayout()) { - final LinkedList removedPositions = new LinkedList<>(); - for (int i = 0, cnt = getChildCount(); i < cnt; i++) { - final View child = getChildAt(i); - final boolean isRemoved = ((RecyclerView.LayoutParams) child.getLayoutParams()).isItemRemoved(); - if (isRemoved) { - removedPositions.add(getPosition(child)); - } - } - - if (removedPositions.contains(anchorPos)) { - final int last = removedPositions.getLast(); - final int first = removedPositions.getFirst(); - - final int right = Math.min(last, getItemCount() - 1); - - int left = right; - if (last != first) { - left = Math.max(first, 0); - } - - anchorPos = Math.max(left, right); - } - } - - detachAndScrapAttachedViews(recycler); - fill(anchorPos, recycler, state); - if (cardsXCoords.size() != 0) { - layoutByCoords(); - } - } - - @Override - public boolean supportsPredictiveItemAnimations() { - return true; - } - - @Override - public void onAdapterChanged(RecyclerView.Adapter oldAdapter, RecyclerView.Adapter newAdapter) { - removeAllViews(); - } - - @Override - public boolean canScrollHorizontally() { - return getChildCount() != 0; - } - - @Override - public void scrollToPosition(int position) { - if (position < 0 || position >= getItemCount()) { - return; - } - - scrollRequestedPosition = position; - requestLayout(); - } - - @Override - public int scrollHorizontallyBy(int dx, RecyclerView.Recycler recycler, RecyclerView.State state) { - scrollRequestedPosition = RecyclerView.NO_POSITION; - - int delta; - if (dx < 0) { - delta = scrollRight(Math.max(dx, -cardWidth)); - } else { - delta = scrollLeft(dx); - } - - fill(getActiveCardPosition(), recycler, state); - - cardsXCoords.clear(); - for (int i = 0, cnt = getChildCount(); i < cnt; i++) { - final View view = getChildAt(i); - cardsXCoords.put(getPosition(view), getDecoratedLeft(view)); - } - - return delta; - } - - @Override - public PointF computeScrollVectorForPosition(int targetPosition) { - return new PointF(targetPosition - getActiveCardPosition(), 0); - } - - @Override - public void smoothScrollToPosition(final RecyclerView recyclerView, RecyclerView.State state, final int position) { - if (position < 0 || position >= getItemCount()) { - return; - } - - final LinearSmoothScroller scroller = getSmoothScroller(recyclerView); - scroller.setTargetPosition(position); - startSmoothScroll(scroller); - } - - @Override - public void onItemsRemoved(RecyclerView recyclerView, int positionStart, int count) { - final int anchorPos = getActiveCardPosition(); - if (positionStart + count <= anchorPos) { - scrollRequestedPosition = anchorPos - 1; - } - } - - @Override - public Parcelable onSaveInstanceState() { - SavedState state = new SavedState(); - state.anchorPos = getActiveCardPosition(); - return state; - } - - @Override - public void onRestoreInstanceState(Parcelable parcelable) { - if (parcelable instanceof SavedState) { - SavedState state = (SavedState) parcelable; - scrollRequestedPosition = state.anchorPos; - requestLayout(); - } - } - - /** - * @return active card position or RecyclerView.NO_POSITION - */ - public int getActiveCardPosition() { - if (scrollRequestedPosition != RecyclerView.NO_POSITION) { - return scrollRequestedPosition; - } else { - return viewUpdater.getActiveCardPosition(); - } - } - - @Nullable - public View getTopView() { - return viewUpdater.getTopView(); - } - - public int getActiveCardLeft() { - return activeCardLeft; - } - - public int getActiveCardRight() { - return activeCardRight; - } - - public int getActiveCardCenter() { - return activeCardCenter; - } - - public int getCardWidth() { - return cardWidth; - } - - public float getCardsGap() { - return cardsGap; - } - - public LinearSmoothScroller getSmoothScroller(final RecyclerView recyclerView) { - return new LinearSmoothScroller(recyclerView.getContext()) { - @Override - public int calculateDxToMakeVisible(View view, int snapPreference) { - final int viewStart = getDecoratedLeft(view); - if (viewStart > activeCardLeft) { - return activeCardLeft - viewStart; - } else { - int delta = 0; - int topViewPos = 0; - - final View topView = getTopView(); - if (topView != null) { - topViewPos = getPosition(topView); - if (topViewPos != getTargetPosition()) { - final int topViewLeft = getDecoratedLeft(topView); - if (topViewLeft >= activeCardLeft && topViewLeft < activeCardRight) { - delta = activeCardRight - topViewLeft; - } - } - } - - return delta + (cardWidth) * Math.max(0, topViewPos - getTargetPosition() - 1); - } - } - - @Override - protected float calculateSpeedPerPixel(DisplayMetrics displayMetrics) { - return 0.5f; - } - - }; - } - - private ViewUpdater loadViewUpdater(Context context, String className, AttributeSet attrs) { - if (className == null || className.trim().length() == 0) { - return null; - } - - final String fullClassName; - if (className.charAt(0) == '.') { - fullClassName = context.getPackageName() + className; - } else if (className.contains(".")) { - fullClassName = className; - } else { - fullClassName = CardSliderLayoutManager.class.getPackage().getName() + '.' + className; - } - - ViewUpdater updater = null; - try { - final ClassLoader classLoader = context.getClassLoader(); - - final Class viewUpdaterClass = - classLoader.loadClass(fullClassName).asSubclass(ViewUpdater.class); - final Constructor constructor = - viewUpdaterClass.getConstructor(CardSliderLayoutManager.class); - - constructor.setAccessible(true); - updater = constructor.newInstance(this); - } catch (NoSuchMethodException e) { - throw new IllegalStateException(attrs.getPositionDescription() + - ": Error creating LayoutManager " + className, e); - } catch (ClassNotFoundException e) { - throw new IllegalStateException(attrs.getPositionDescription() - + ": Unable to find ViewUpdater" + className, e); - } catch (InvocationTargetException | InstantiationException e) { - throw new IllegalStateException(attrs.getPositionDescription() - + ": Could not instantiate the ViewUpdater: " + className, e); - } catch (IllegalAccessException e) { - throw new IllegalStateException(attrs.getPositionDescription() - + ": Cannot access non-public constructor " + className, e); - } catch (ClassCastException e) { - throw new IllegalStateException(attrs.getPositionDescription() - + ": Class is not a ViewUpdater " + className, e); - } - - return updater; - } - - private int scrollRight(int dx) { - final int childCount = getChildCount(); - - if (childCount == 0) { - return 0; - } - - final View rightestView = getChildAt(childCount - 1); - final int deltaBorder = activeCardLeft + getPosition(rightestView) * cardWidth; - final int delta = getAllowedRightDelta(rightestView, dx, deltaBorder); - - final LinkedList rightViews = new LinkedList<>(); - final LinkedList leftViews = new LinkedList<>(); - - for (int i = childCount - 1; i >= 0; i--) { - final View view = getChildAt(i); - final int viewLeft = getDecoratedLeft(view); - - if (viewLeft >= activeCardRight) { - rightViews.add(view); - } else { - leftViews.add(view); - } - } - - for (View view : rightViews) { - final int border = activeCardLeft + getPosition(view) * cardWidth; - final int allowedDelta = getAllowedRightDelta(view, dx, border); - view.offsetLeftAndRight(-allowedDelta); - } - - final int step = activeCardLeft / LEFT_CARD_COUNT; - final int jDelta = (int) Math.floor(1f * delta * step / cardWidth); - - View prevView = null; - int j = 0; - - for (int i = 0, cnt = leftViews.size(); i < cnt; i++) { - final View view = leftViews.get(i); - if (prevView == null || getDecoratedLeft(prevView) >= activeCardRight) { - final int border = activeCardLeft + getPosition(view) * cardWidth; - final int allowedDelta = getAllowedRightDelta(view, dx, border); - view.offsetLeftAndRight(-allowedDelta); - } else { - final int border = activeCardLeft - step * j; - view.offsetLeftAndRight(-getAllowedRightDelta(view, jDelta, border)); - j++; - } - - prevView = view; - } - - return delta; - } - - private int scrollLeft(int dx) { - final int childCount = getChildCount(); - if (childCount == 0) { - return 0; - } - - final View lastView = getChildAt(childCount - 1); - final boolean isLastItem = getPosition(lastView) == getItemCount() - 1; - - final int delta; - if (isLastItem) { - delta = Math.min(dx, getDecoratedRight(lastView) - activeCardRight); - } else { - delta = dx; - } - - final int step = activeCardLeft / LEFT_CARD_COUNT; - final int jDelta = (int) Math.ceil(1f * delta * step / cardWidth); - - for (int i = childCount - 1; i >= 0; i--) { - final View view = getChildAt(i); - final int viewLeft = getDecoratedLeft(view); - - if (viewLeft > activeCardLeft) { - view.offsetLeftAndRight(getAllowedLeftDelta(view, delta, activeCardLeft)); - } else { - int border = activeCardLeft - step; - for (int j = i; j >= 0; j--) { - final View jView = getChildAt(j); - jView.offsetLeftAndRight(getAllowedLeftDelta(jView, jDelta, border)); - border -= step; - } - - break; - } - } - - return delta; - } - - private int getAllowedLeftDelta(@NonNull View view, int dx, int border) { - final int viewLeft = getDecoratedLeft(view); - if (viewLeft - dx > border) { - return -dx; - } else { - return border - viewLeft; - } - } - - private int getAllowedRightDelta(@NonNull View view, int dx, int border) { - final int viewLeft = getDecoratedLeft(view); - if (viewLeft + Math.abs(dx) < border) { - return dx; - } else { - return viewLeft - border; - } - } - - private void layoutByCoords() { - final int count = Math.min(getChildCount(), cardsXCoords.size()); - for (int i = 0; i < count; i++) { - final View view = getChildAt(i); - final int viewLeft = cardsXCoords.get(getPosition(view)); - layoutDecorated(view, viewLeft, 0, viewLeft + cardWidth, getDecoratedBottom(view)); - } - updateViewScale(); - cardsXCoords.clear(); - } - - private void fill(int anchorPos, RecyclerView.Recycler recycler, RecyclerView.State state) { - viewCache.clear(); - - for (int i = 0, cnt = getChildCount(); i < cnt; i++) { - View view = getChildAt(i); - int pos = getPosition(view); - viewCache.put(pos, view); - } - - for (int i = 0, cnt = viewCache.size(); i < cnt; i++) { - detachView(viewCache.valueAt(i)); - } - - if (!state.isPreLayout()) { - fillLeft(anchorPos, recycler); - fillRight(anchorPos, recycler); - } - - for (int i = 0, cnt = viewCache.size(); i < cnt; i++) { - recycler.recycleView(viewCache.valueAt(i)); - } - - updateViewScale(); - } - - private void fillLeft(int anchorPos, RecyclerView.Recycler recycler) { - if (anchorPos == RecyclerView.NO_POSITION) { - return; - } - - final int layoutStep = activeCardLeft / LEFT_CARD_COUNT; - int pos = Math.max(0, anchorPos - LEFT_CARD_COUNT - 1); - int viewLeft = Math.max(-1, LEFT_CARD_COUNT - (anchorPos - pos)) * layoutStep; - - while (pos < anchorPos) { - View view = viewCache.get(pos); - if (view != null) { - attachView(view); - viewCache.remove(pos); - } else { - view = recycler.getViewForPosition(pos); - addView(view); - measureChildWithMargins(view, 0, 0); - final int viewHeight = getDecoratedMeasuredHeight(view); - layoutDecorated(view, viewLeft, 0, viewLeft + cardWidth, viewHeight); - } - - viewLeft += layoutStep; - pos++; - } - - } - - private void fillRight(int anchorPos, RecyclerView.Recycler recycler) { - if (anchorPos == RecyclerView.NO_POSITION) { - return; - } - - final int width = getWidth(); - final int itemCount = getItemCount(); - - int pos = anchorPos; - int viewLeft = activeCardLeft; - boolean fillRight = true; - - while (fillRight && pos < itemCount) { - View view = viewCache.get(pos); - if (view != null) { - attachView(view); - viewCache.remove(pos); - } else { - view = recycler.getViewForPosition(pos); - addView(view); - measureChildWithMargins(view, 0, 0); - final int viewHeight = getDecoratedMeasuredHeight(view); - layoutDecorated(view, viewLeft, 0, viewLeft + cardWidth, viewHeight); - } - - viewLeft = getDecoratedRight(view); - fillRight = viewLeft < width + cardWidth; - pos++; - } - } - - private void updateViewScale() { - viewUpdater.updateView(); - } - - private static class SavedState implements Parcelable { - - int anchorPos; - - SavedState() { - - } - - SavedState(Parcel in) { - anchorPos = in.readInt(); - } - - public SavedState(SavedState other) { - anchorPos = other.anchorPos; - } - - @Override - public int describeContents() { - return 0; - } - - @Override - public void writeToParcel(Parcel parcel, int i) { - parcel.writeInt(anchorPos); - } - - public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { - @Override - public SavedState createFromParcel(Parcel parcel) { - return new SavedState(parcel); - } - - @Override - public SavedState[] newArray(int size) { - return new SavedState[size]; - } - }; - } -} - diff --git a/app/src/main/java/com/studentsearch/xoodle/studentsearch/cardslider/CardSnapHelper.java b/app/src/main/java/com/studentsearch/xoodle/studentsearch/cardslider/CardSnapHelper.java deleted file mode 100644 index ae7d7ba..0000000 --- a/app/src/main/java/com/studentsearch/xoodle/studentsearch/cardslider/CardSnapHelper.java +++ /dev/null @@ -1,143 +0,0 @@ -package com.studentsearch.xoodle.studentsearch.cardslider; - -/** - * Created by kaushal on 7/7/17. - */ - -import android.graphics.PointF; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.v7.widget.LinearSmoothScroller; -import android.support.v7.widget.LinearSnapHelper; -import android.support.v7.widget.RecyclerView; -import android.view.View; -import android.view.animation.AccelerateInterpolator; - -import java.security.InvalidParameterException; - -/** - * Extended {@link LinearSnapHelper} that works only with {@link CardSliderLayoutManager}. - */ -public class CardSnapHelper extends LinearSnapHelper { - - private RecyclerView recyclerView; - - /** - * Attaches the {@link CardSnapHelper} to the provided RecyclerView, by calling - * {@link RecyclerView#setOnFlingListener(RecyclerView.OnFlingListener)}. - * You can call this method with {@code null} to detach it from the current RecyclerView. - * - * @param recyclerView The RecyclerView instance to which you want to add this helper or - * {@code null} if you want to remove SnapHelper from the current - * RecyclerView. - * - * @throws IllegalArgumentException if there is already a {@link RecyclerView.OnFlingListener} - * attached to the provided {@link RecyclerView}. - * - * @throws InvalidParameterException if provided RecyclerView has LayoutManager which is not - * instance of CardSliderLayoutManager - * - */ - @Override - public void attachToRecyclerView(@Nullable RecyclerView recyclerView) throws IllegalStateException { - super.attachToRecyclerView(recyclerView); - - if (recyclerView != null && !(recyclerView.getLayoutManager() instanceof CardSliderLayoutManager)) { - throw new InvalidParameterException("LayoutManager must be instance of CardSliderLayoutManager"); - } - - this.recyclerView = recyclerView; - } - - @Override - public int findTargetSnapPosition(RecyclerView.LayoutManager layoutManager, int velocityX, int velocityY) { - final CardSliderLayoutManager lm = (CardSliderLayoutManager) layoutManager; - - final int itemCount = lm.getItemCount(); - if (itemCount == 0) { - return RecyclerView.NO_POSITION; - } - - final RecyclerView.SmoothScroller.ScrollVectorProvider vectorProvider = - (RecyclerView.SmoothScroller.ScrollVectorProvider) layoutManager; - - final PointF vectorForEnd = vectorProvider.computeScrollVectorForPosition(itemCount - 1); - if (vectorForEnd == null) { - return RecyclerView.NO_POSITION; - } - - final int distance = calculateScrollDistance(velocityX, velocityY)[0]; - int deltaJump; - - if (distance > 0) { - deltaJump = (int) Math.floor(distance / lm.getCardWidth()); - } else { - deltaJump = (int) Math.ceil(distance / lm.getCardWidth()); - } - - final int deltaSign = Integer.signum(deltaJump); - deltaJump = deltaSign * Math.min(3, Math.abs(deltaJump)); - - if (vectorForEnd.x < 0) { - deltaJump = -deltaJump; - } - - if (deltaJump == 0) { - return RecyclerView.NO_POSITION; - } - - final int currentPosition = lm.getActiveCardPosition(); - if (currentPosition == RecyclerView.NO_POSITION) { - return RecyclerView.NO_POSITION; - } - - int targetPos = currentPosition + deltaJump; - if (targetPos < 0 || targetPos >= itemCount) { - targetPos = RecyclerView.NO_POSITION; - } - - return targetPos; - } - - @Override - public View findSnapView(RecyclerView.LayoutManager layoutManager) { - return ((CardSliderLayoutManager)layoutManager).getTopView(); - } - - @Override - public int[] calculateDistanceToFinalSnap(@NonNull RecyclerView.LayoutManager layoutManager, - @NonNull View targetView) - { - final CardSliderLayoutManager lm = (CardSliderLayoutManager)layoutManager; - final int viewLeft = lm.getDecoratedLeft(targetView); - final int activeCardLeft = lm.getActiveCardLeft(); - final int activeCardCenter = lm.getActiveCardLeft() + lm.getCardWidth() / 2; - final int activeCardRight = lm.getActiveCardLeft() + lm.getCardWidth(); - - int[] out = new int[] {0, 0}; - if (viewLeft < activeCardCenter) { - final int targetPos = lm.getPosition(targetView); - final int activeCardPos = lm.getActiveCardPosition(); - if (targetPos != activeCardPos) { - out[0] = -(activeCardPos - targetPos) * lm.getCardWidth(); - } else { - out[0] = viewLeft - activeCardLeft; - } - } else { - out[0] = viewLeft - activeCardRight + 1; - } - - if (out[0] != 0) { - recyclerView.smoothScrollBy(out[0], 0, new AccelerateInterpolator()); - } - - return new int[] {0, 0}; - } - - @Nullable - @Override - protected LinearSmoothScroller createSnapScroller(RecyclerView.LayoutManager layoutManager) { - return ((CardSliderLayoutManager)layoutManager).getSmoothScroller(recyclerView); - } - -} diff --git a/app/src/main/java/com/studentsearch/xoodle/studentsearch/cardslider/DefaultViewUpdater.java b/app/src/main/java/com/studentsearch/xoodle/studentsearch/cardslider/DefaultViewUpdater.java deleted file mode 100644 index 66cb5e4..0000000 --- a/app/src/main/java/com/studentsearch/xoodle/studentsearch/cardslider/DefaultViewUpdater.java +++ /dev/null @@ -1,207 +0,0 @@ -package com.studentsearch.xoodle.studentsearch.cardslider; - -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.v4.view.ViewCompat; -import android.support.v7.widget.RecyclerView; -import android.view.View; - -/** - * Default implementation of {@link ViewUpdater} - */ -public class DefaultViewUpdater extends ViewUpdater { - - private static final float SCALE_LEFT = 0.65f; - private static final float SCALE_CENTER = 0.95f; - private static final float SCALE_RIGHT = 0.8f; - private static final float SCALE_CENTER_TO_LEFT = SCALE_CENTER - SCALE_LEFT; - private static final float SCALE_CENTER_TO_RIGHT = SCALE_CENTER - SCALE_RIGHT; - - private static final int Z_CENTER_1 = 12; - private static final int Z_CENTER_2 = 16; - private static final int Z_RIGHT = 8; - - private int cardWidth; - private int activeCardLeft; - private int activeCardRight; - private int activeCardCenter; - private float cardsGap; - - private int transitionEnd; - private int transitionDistance; - private float transitionRight2Center; - - public DefaultViewUpdater(CardSliderLayoutManager lm) { - super(lm); - } - - @Override - public void onLayoutManagerInitialized() { - this.cardWidth = lm.getCardWidth(); - this.activeCardLeft = lm.getActiveCardLeft(); - this.activeCardRight = lm.getActiveCardRight(); - this.activeCardCenter = lm.getActiveCardCenter(); - this.cardsGap = lm.getCardsGap(); - - this.transitionEnd = activeCardCenter; - this.transitionDistance = activeCardRight - transitionEnd; - - final float centerBorder = (cardWidth - cardWidth * SCALE_CENTER) / 2f; - final float rightBorder = (cardWidth - cardWidth * SCALE_RIGHT) / 2f; - final float right2centerDistance = (activeCardRight + centerBorder) - (activeCardRight - rightBorder); - this.transitionRight2Center = right2centerDistance - cardsGap; - } - - @Override - public int getActiveCardPosition() { - int result = RecyclerView.NO_POSITION; - - View biggestView = null; - float lastScaleX = 0f; - - for (int i = 0, cnt = lm.getChildCount(); i < cnt; i++) { - final View child = lm.getChildAt(i); - final int viewLeft = lm.getDecoratedLeft(child); - if (viewLeft >= activeCardRight) { - continue; - } - - final float scaleX = ViewCompat.getScaleX(child); - if (lastScaleX < scaleX && viewLeft < activeCardCenter) { - lastScaleX = scaleX; - biggestView = child; - } - } - - if (biggestView != null) { - result = lm.getPosition(biggestView); - } - - return result; - } - - @Nullable - @Override - public View getTopView() { - if (lm.getChildCount() == 0) { - return null; - } - - View result = null; - float lastValue = cardWidth; - - for (int i = 0, cnt = lm.getChildCount(); i < cnt; i++) { - final View child = lm.getChildAt(i); - if (lm.getDecoratedLeft(child) >= activeCardRight) { - continue; - } - - final int viewLeft = lm.getDecoratedLeft(child); - final int diff = activeCardRight - viewLeft; - if (diff < lastValue) { - lastValue = diff; - result = child; - } - } - - return result; - } - - @Override - public void updateView() { - View prevView = null; - - for (int i = 0, cnt = lm.getChildCount(); i < cnt; i++) { - final View view = lm.getChildAt(i); - final int viewLeft = lm.getDecoratedLeft(view); - - final float scale; - final float alpha; - final float z; - final float x; - - if (viewLeft < activeCardLeft) { - final float ratio = (float) viewLeft / activeCardLeft; - scale = SCALE_LEFT + SCALE_CENTER_TO_LEFT * ratio; - alpha = 0.1f + ratio; - z = Z_CENTER_1 * ratio; - x = 0; - } else if (viewLeft < activeCardCenter) { - scale = SCALE_CENTER; - alpha = 1; - z = Z_CENTER_1; - x = 0; - } else if (viewLeft < activeCardRight) { - final float ratio = (float) (viewLeft - activeCardCenter) / (activeCardRight - activeCardCenter); - scale = SCALE_CENTER - SCALE_CENTER_TO_RIGHT * ratio; - alpha = 1; - z = Z_CENTER_2; - x = -Math.min(transitionRight2Center, transitionRight2Center * (viewLeft - transitionEnd) / transitionDistance); - } else { - scale = SCALE_RIGHT; - alpha = 1; - z = Z_RIGHT; - - if (prevView != null) { - final float prevViewScale; - final float prevTransition; - final int prevRight; - - final boolean isFirstRight = lm.getDecoratedRight(prevView) <= activeCardRight; - if (isFirstRight) { - prevViewScale = SCALE_CENTER; - prevRight = activeCardRight; - prevTransition = 0; - } else { - prevViewScale = ViewCompat.getScaleX(prevView); - prevRight = lm.getDecoratedRight(prevView); - prevTransition = ViewCompat.getTranslationX(prevView); - } - - final float prevBorder = (cardWidth - cardWidth * prevViewScale) / 2; - final float currentBorder = (cardWidth - cardWidth * SCALE_RIGHT) / 2; - final float distance = (viewLeft + currentBorder) - (prevRight - prevBorder + prevTransition); - - final float transition = distance - cardsGap; - x = -transition; - } else { - x = 0; - } - } - - onUpdateViewScale(view, scale); - onUpdateViewTransitionX(view, x); - onUpdateViewZ(view, z); - onUpdateViewAlpha(view, alpha); - - prevView = view; - } - } - - protected void onUpdateViewAlpha(@NonNull View view, float alpha) { - if (ViewCompat.getAlpha(view) != alpha) { - ViewCompat.setAlpha(view, alpha); - } - } - - protected void onUpdateViewScale(@NonNull View view, float scale) { - if (ViewCompat.getScaleX(view) != scale) { - ViewCompat.setScaleX(view, scale); - ViewCompat.setScaleY(view, scale); - } - } - - protected void onUpdateViewZ(@NonNull View view, float z) { - if (ViewCompat.getZ(view) != z) { - ViewCompat.setZ(view, z); - } - } - - protected void onUpdateViewTransitionX(@NonNull View view, float x) { - if (ViewCompat.getTranslationX(view) != x) { - ViewCompat.setTranslationX(view, x); - } - } - -} - diff --git a/app/src/main/java/com/studentsearch/xoodle/studentsearch/cardslider/ViewUpdater.java b/app/src/main/java/com/studentsearch/xoodle/studentsearch/cardslider/ViewUpdater.java deleted file mode 100644 index 3c2e692..0000000 --- a/app/src/main/java/com/studentsearch/xoodle/studentsearch/cardslider/ViewUpdater.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.studentsearch.xoodle.studentsearch.cardslider; - -import android.support.annotation.Nullable; -import android.view.View; - -/** - * Card transformer interface for {@link CardSliderLayoutManager}. - */ -public abstract class ViewUpdater { - - protected final CardSliderLayoutManager lm; - - public ViewUpdater(CardSliderLayoutManager lm) { - this.lm = lm; - } - - public void onLayoutManagerInitialized() {} - - abstract public int getActiveCardPosition(); - - abstract @Nullable - public View getTopView(); - - abstract public void updateView(); - -} \ No newline at end of file diff --git a/app/src/main/java/com/studentsearch/xoodle/studentsearch/database/DbHelper.java b/app/src/main/java/com/studentsearch/xoodle/studentsearch/database/DbHelper.java index 0d72097..aeda142 100644 --- a/app/src/main/java/com/studentsearch/xoodle/studentsearch/database/DbHelper.java +++ b/app/src/main/java/com/studentsearch/xoodle/studentsearch/database/DbHelper.java @@ -74,19 +74,7 @@ public void insertStudents(StudentData[] students) { db.beginTransaction(); db.delete(TABLE_NAME, null, null); for (StudentData student : students) { - //reinitialize student to initalize "year" - student = new StudentData( - student.getAddress(), - student.getBloodGroup(), - student.getDept(), - student.getGender(), - student.getHall(), - student.getRollNo(), - student.getName(), - student.getProgramme(), - student.getRoomNo(), - student.getUserName() - ); + student.setYear(); ContentValues contentValues = new ContentValues(); contentValues.put(COLUMN_ADDRESS, student.getAddress()); contentValues.put(COLUMN_BLOOD_GROUP, student.getBloodGroup()); diff --git a/app/src/main/java/com/studentsearch/xoodle/studentsearch/utils/BackgroundBitmapCache.java b/app/src/main/java/com/studentsearch/xoodle/studentsearch/utils/BackgroundBitmapCache.java deleted file mode 100644 index 4891286..0000000 --- a/app/src/main/java/com/studentsearch/xoodle/studentsearch/utils/BackgroundBitmapCache.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.studentsearch.xoodle.studentsearch.utils; - -/** - * Created by kaushal on 7/7/17. - */ - -import android.graphics.Bitmap; -import android.util.LruCache; - -/** - * LruCache for caching background bitmaps for {@link DecodeBitmapTask}. - */ -class BackgroundBitmapCache { - private LruCache mBackgroundsCache; - - private static BackgroundBitmapCache instance; - - public static BackgroundBitmapCache getInstance() { - if (instance == null) { - instance = new BackgroundBitmapCache(); - instance.init(); - } - return instance; - } - - private void init() { - final int maxMemory = (int) (Runtime.getRuntime().maxMemory() / 1024); - final int cacheSize = maxMemory / 5; - - mBackgroundsCache = new LruCache(cacheSize) { - @Override - protected int sizeOf(Integer key, Bitmap bitmap) { - // The cache size will be measured in kilobytes rather than number of items. - return bitmap.getByteCount() / 1024; - } - }; - } - - public void addBitmapToBgMemoryCache(Integer key, Bitmap bitmap) { - if (getBitmapFromBgMemCache(key) == null) { - mBackgroundsCache.put(key, bitmap); - } - } - - public Bitmap getBitmapFromBgMemCache(Integer key) { - return mBackgroundsCache.get(key); - } - -} diff --git a/app/src/main/java/com/studentsearch/xoodle/studentsearch/utils/ConstantUtils.java b/app/src/main/java/com/studentsearch/xoodle/studentsearch/utils/ConstantUtils.java index f2f9757..6afd60f 100644 --- a/app/src/main/java/com/studentsearch/xoodle/studentsearch/utils/ConstantUtils.java +++ b/app/src/main/java/com/studentsearch/xoodle/studentsearch/utils/ConstantUtils.java @@ -14,4 +14,5 @@ public class ConstantUtils { public static final String STUDENT_LIST = "student_list"; public static final String CARD_SLIDER_POSITION = "card_slider_position"; public static final String ImageUrl = "https://oa.cc.iitk.ac.in/Oa/Jsp/Photo/"; + } diff --git a/app/src/main/java/com/studentsearch/xoodle/studentsearch/utils/DecodeBitmapTask.java b/app/src/main/java/com/studentsearch/xoodle/studentsearch/utils/DecodeBitmapTask.java deleted file mode 100644 index 358be04..0000000 --- a/app/src/main/java/com/studentsearch/xoodle/studentsearch/utils/DecodeBitmapTask.java +++ /dev/null @@ -1,121 +0,0 @@ -package com.studentsearch.xoodle.studentsearch.utils; - -import android.content.res.Resources; -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.graphics.Canvas; -import android.graphics.Paint; -import android.graphics.PorterDuff; -import android.graphics.PorterDuffXfermode; -import android.graphics.Rect; -import android.graphics.RectF; -import android.os.AsyncTask; -import android.os.Build; -import android.support.annotation.DrawableRes; -import com.studentsearch.xoodle.studentsearch.R; - -/** - * Created by kaushal on 7/7/17. - */ - -public class DecodeBitmapTask extends AsyncTask { - - private final BackgroundBitmapCache cache; - private final Resources resources; - private final int bitmapResId; - private final int reqWidth; - private final int reqHeight; - - public DecodeBitmapTask(Resources resources, @DrawableRes int bitmapResId, int reqWidth, int reqHeight) { - this.cache = BackgroundBitmapCache.getInstance(); - this.resources = resources; - this.bitmapResId = bitmapResId; - this.reqWidth = reqWidth; - this.reqHeight = reqHeight; - } - - @Override - protected Bitmap doInBackground(Void... voids) { - Bitmap cachedBitmap = cache.getBitmapFromBgMemCache(bitmapResId); - if (cachedBitmap != null) { - return cachedBitmap; - } - - final BitmapFactory.Options options = new BitmapFactory.Options(); - options.inJustDecodeBounds = true; - BitmapFactory.decodeResource(resources, bitmapResId, options); - - final int width = options.outWidth; - final int height = options.outHeight; - - int inSampleSize = 1; - if (height > reqHeight || width > reqWidth) { - int halfWidth = width / 2; - int halfHeight = height / 2; - - while ((halfHeight / inSampleSize) >= reqHeight && (halfWidth / inSampleSize) >= reqWidth - && !isCancelled() ) - { - inSampleSize *= 2; - } - } - - if (isCancelled()) { - return null; - } - - options.inSampleSize = inSampleSize; - options.inJustDecodeBounds = false; - options.inPreferredConfig = Bitmap.Config.ARGB_8888; - - final Bitmap decodedBitmap = BitmapFactory.decodeResource(resources, bitmapResId, options); - - final Bitmap result; - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { - result = getRoundedCornerBitmap(decodedBitmap, - resources.getDimension(R.dimen.card_corner_radius), reqWidth, reqHeight); - decodedBitmap.recycle(); - } else { - result = decodedBitmap; - } - - cache.addBitmapToBgMemoryCache(bitmapResId, result); - return result; - } - - public static Bitmap getRoundedCornerBitmap(Bitmap bitmap, float pixels, int width, int height) { - final Bitmap output = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); - final Canvas canvas = new Canvas(output); - - final int sourceWidth = bitmap.getWidth(); - final int sourceHeight = bitmap.getHeight(); - - float xScale = (float) width / bitmap.getWidth(); - float yScale = (float) height / bitmap.getHeight(); - float scale = Math.max(xScale, yScale); - - float scaledWidth = scale * sourceWidth; - float scaledHeight = scale * sourceHeight; - - float left = (width - scaledWidth) / 2; - float top = (height - scaledHeight) / 2; - - final int color = 0xff424242; - final Paint paint = new Paint(); - final Rect rect = new Rect(0, 0, width, height); - final RectF rectF = new RectF(rect); - - final RectF targetRect = new RectF(left, top, left + scaledWidth, top + scaledHeight); - - paint.setAntiAlias(true); - canvas.drawARGB(0, 0, 0, 0); - paint.setColor(color); - canvas.drawRoundRect(rectF, pixels, pixels, paint); - - paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN)); - canvas.drawBitmap(bitmap, null, targetRect, paint); - - return output; - } - -} diff --git a/app/src/main/java/com/studentsearch/xoodle/studentsearch/utils/MappingUtils.java b/app/src/main/java/com/studentsearch/xoodle/studentsearch/utils/MappingUtils.java index e165515..72da190 100644 --- a/app/src/main/java/com/studentsearch/xoodle/studentsearch/utils/MappingUtils.java +++ b/app/src/main/java/com/studentsearch/xoodle/studentsearch/utils/MappingUtils.java @@ -6,14 +6,18 @@ /** Mapping from displayed to actual value associated with the filter spinners */ public class MappingUtils { + + private static MappingUtils THE_INSTANCE = null; + private Map hallMap; private Map deptMap; + private Map deptAbbrevMap; private Map bloodGroupMap; private Map genderMap; private Map programmeMap; private Map yearMap; - public MappingUtils() { + private MappingUtils() { hallMap = new HashMap<>(); hallMap.put("", "Halls"); hallMap.put("HALL1", "Hall 1"); @@ -46,6 +50,28 @@ public MappingUtils() { deptMap.put("Earth Sciences","Earth Sciences"); deptMap.put("Mathematics", "Mathematics"); + deptAbbrevMap = new HashMap<>(); + deptAbbrevMap.put("", "Departments"); + deptAbbrevMap.put("Physics", "PHY"); + deptAbbrevMap.put("Materials Science & Engg.", "MSE"); + deptAbbrevMap.put("Computer Science & Engg.", "CSE"); + deptAbbrevMap.put("Civil Engg.", "CE"); + deptAbbrevMap.put("Electrical Engg.", "EE"); + deptAbbrevMap.put("Aerospace Engg.", "AE"); + deptAbbrevMap.put("Chemical Engg.", "CHE"); + deptAbbrevMap.put("Economics", "ECO"); + deptAbbrevMap.put("Mechanical Engineering", "ME"); + deptAbbrevMap.put("Chemistry", "CHM"); + deptAbbrevMap.put("Biol.Sci. And Bio.Engg.", "BSBE"); + deptAbbrevMap.put("Earth Sciences","ES"); + deptAbbrevMap.put("Mathematics", "MTH"); + deptAbbrevMap.put("Humanities & Soc. Sciences", "HSS"); + deptAbbrevMap.put("Materials Science Programme", "MSP"); + deptAbbrevMap.put("Nuc. Engg.& Tech Prog.", "Nuclear Engg."); + deptAbbrevMap.put("Ind. & Management Engg.", "IME"); + deptAbbrevMap.put("Environmental Engg. & Mgmt", "EEM"); + deptAbbrevMap.put("Statistics", "Stats"); + bloodGroupMap = new HashMap<>(); bloodGroupMap.put("", "Blood Group"); @@ -75,6 +101,9 @@ public Map getDeptMap() { return deptMap; } + public Map getDeptAbbrevMap() { + return deptAbbrevMap; + } public Map getBloodGroupMap() { return bloodGroupMap; } @@ -90,4 +119,9 @@ public Map getProgrammeMap() { public Map getYearMap() { return yearMap; } + + public static MappingUtils getInstance() { + if(THE_INSTANCE == null) THE_INSTANCE = new MappingUtils(); + return THE_INSTANCE; + } } diff --git a/app/src/main/res/anim/fade_in.xml b/app/src/main/res/anim/fade_in.xml deleted file mode 100644 index 513dbd2..0000000 --- a/app/src/main/res/anim/fade_in.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - \ No newline at end of file diff --git a/app/src/main/res/anim/slide_in_bottom.xml b/app/src/main/res/anim/slide_in_bottom.xml deleted file mode 100644 index 21343a8..0000000 --- a/app/src/main/res/anim/slide_in_bottom.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/anim/slide_in_left.xml b/app/src/main/res/anim/slide_in_left.xml deleted file mode 100644 index 1862a76..0000000 --- a/app/src/main/res/anim/slide_in_left.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/anim/slide_in_right.xml b/app/src/main/res/anim/slide_in_right.xml deleted file mode 100644 index 1ebac49..0000000 --- a/app/src/main/res/anim/slide_in_right.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/anim/slide_in_top.xml b/app/src/main/res/anim/slide_in_top.xml deleted file mode 100644 index 6b65032..0000000 --- a/app/src/main/res/anim/slide_in_top.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/anim/slide_out_bottom.xml b/app/src/main/res/anim/slide_out_bottom.xml deleted file mode 100644 index a0a9f49..0000000 --- a/app/src/main/res/anim/slide_out_bottom.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/anim/slide_out_left.xml b/app/src/main/res/anim/slide_out_left.xml deleted file mode 100644 index b832683..0000000 --- a/app/src/main/res/anim/slide_out_left.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/anim/slide_out_right.xml b/app/src/main/res/anim/slide_out_right.xml deleted file mode 100644 index 4de439f..0000000 --- a/app/src/main/res/anim/slide_out_right.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/anim/slide_out_top.xml b/app/src/main/res/anim/slide_out_top.xml deleted file mode 100644 index 59a9489..0000000 --- a/app/src/main/res/anim/slide_out_top.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/arrow_drop.png b/app/src/main/res/drawable/arrow_drop.png deleted file mode 100644 index fbd66f5..0000000 Binary files a/app/src/main/res/drawable/arrow_drop.png and /dev/null differ diff --git a/app/src/main/res/drawable/boy.png b/app/src/main/res/drawable/boy.png deleted file mode 100644 index 10459ce..0000000 Binary files a/app/src/main/res/drawable/boy.png and /dev/null differ diff --git a/app/src/main/res/drawable/button_background.xml b/app/src/main/res/drawable/button_background.xml deleted file mode 100644 index 68cb8e7..0000000 --- a/app/src/main/res/drawable/button_background.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/circular_screen.xml b/app/src/main/res/drawable/circular_screen.xml deleted file mode 100644 index faa7deb..0000000 --- a/app/src/main/res/drawable/circular_screen.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/drop_arrow.png b/app/src/main/res/drawable/drop_arrow.png deleted file mode 100644 index 9a889ea..0000000 Binary files a/app/src/main/res/drawable/drop_arrow.png and /dev/null differ diff --git a/app/src/main/res/drawable/facebook.png b/app/src/main/res/drawable/facebook.png deleted file mode 100644 index 45df620..0000000 Binary files a/app/src/main/res/drawable/facebook.png and /dev/null differ diff --git a/app/src/main/res/drawable/facebook2.png b/app/src/main/res/drawable/facebook2.png deleted file mode 100644 index 1393c16..0000000 Binary files a/app/src/main/res/drawable/facebook2.png and /dev/null differ diff --git a/app/src/main/res/drawable/forward.png b/app/src/main/res/drawable/forward.png deleted file mode 100644 index eaa4f5e..0000000 Binary files a/app/src/main/res/drawable/forward.png and /dev/null differ diff --git a/app/src/main/res/drawable/girl.png b/app/src/main/res/drawable/girl.png deleted file mode 100644 index 9b7f8fb..0000000 Binary files a/app/src/main/res/drawable/girl.png and /dev/null differ diff --git a/app/src/main/res/drawable/go.png b/app/src/main/res/drawable/go.png deleted file mode 100644 index 352097e..0000000 Binary files a/app/src/main/res/drawable/go.png and /dev/null differ diff --git a/app/src/main/res/drawable/ic_action_back.xml b/app/src/main/res/drawable/ic_action_back.xml deleted file mode 100644 index 8c8df64..0000000 --- a/app/src/main/res/drawable/ic_action_back.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_arrow_down.xml b/app/src/main/res/drawable/ic_arrow_down.xml deleted file mode 100644 index 84da54e..0000000 --- a/app/src/main/res/drawable/ic_arrow_down.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_background.xml b/app/src/main/res/drawable/ic_background.xml deleted file mode 100644 index a424bfd..0000000 --- a/app/src/main/res/drawable/ic_background.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_blood_group.xml b/app/src/main/res/drawable/ic_blood_group.xml index fff49d7..9b80a25 100644 --- a/app/src/main/res/drawable/ic_blood_group.xml +++ b/app/src/main/res/drawable/ic_blood_group.xml @@ -1,9 +1,9 @@ + android:width="36dp" + android:height="36dp" + android:viewportHeight="36.0" + android:viewportWidth="36.0"> diff --git a/app/src/main/res/drawable/ic_bookmark.xml b/app/src/main/res/drawable/ic_bookmark.xml deleted file mode 100644 index a4bb9e6..0000000 --- a/app/src/main/res/drawable/ic_bookmark.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_bookmark_border.xml b/app/src/main/res/drawable/ic_bookmark_border.xml deleted file mode 100644 index acc8064..0000000 --- a/app/src/main/res/drawable/ic_bookmark_border.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_cross.xml b/app/src/main/res/drawable/ic_cross.xml index 881304b..54fe0a9 100644 --- a/app/src/main/res/drawable/ic_cross.xml +++ b/app/src/main/res/drawable/ic_cross.xml @@ -5,6 +5,6 @@ android:viewportHeight="24.0" android:viewportWidth="24.0"> diff --git a/app/src/main/res/drawable/ic_dept.xml b/app/src/main/res/drawable/ic_dept.xml index 8dc209a..f16f099 100644 --- a/app/src/main/res/drawable/ic_dept.xml +++ b/app/src/main/res/drawable/ic_dept.xml @@ -1,9 +1,9 @@ + android:width="36dp" + android:height="36dp" + android:viewportHeight="36.0" + android:viewportWidth="36.0"> diff --git a/app/src/main/res/drawable/ic_download.xml b/app/src/main/res/drawable/ic_download.xml deleted file mode 100644 index 1d1d46c..0000000 --- a/app/src/main/res/drawable/ic_download.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_hall.xml b/app/src/main/res/drawable/ic_hall.xml deleted file mode 100644 index 42fd182..0000000 --- a/app/src/main/res/drawable/ic_hall.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_home.xml b/app/src/main/res/drawable/ic_home.xml index 5fcdd5d..dabc664 100644 --- a/app/src/main/res/drawable/ic_home.xml +++ b/app/src/main/res/drawable/ic_home.xml @@ -1,9 +1,9 @@ + android:width="36dp" + android:height="36dp" + android:viewportHeight="36.0" + android:viewportWidth="36.0"> diff --git a/app/src/main/res/drawable/ic_keyboard_arrow_down_black.png b/app/src/main/res/drawable/ic_keyboard_arrow_down_black.png deleted file mode 100644 index 3d7f83f..0000000 Binary files a/app/src/main/res/drawable/ic_keyboard_arrow_down_black.png and /dev/null differ diff --git a/app/src/main/res/drawable/ic_mail.xml b/app/src/main/res/drawable/ic_mail.xml index 393e0cd..40e3745 100644 --- a/app/src/main/res/drawable/ic_mail.xml +++ b/app/src/main/res/drawable/ic_mail.xml @@ -1,9 +1,9 @@ + android:width="36dp" + android:height="36dp" + android:viewportHeight="36.0" + android:viewportWidth="36.0"> diff --git a/app/src/main/res/drawable/ic_menu.xml b/app/src/main/res/drawable/ic_menu.xml deleted file mode 100644 index 6ec2ca4..0000000 --- a/app/src/main/res/drawable/ic_menu.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_more_vert.xml b/app/src/main/res/drawable/ic_more_vert.xml deleted file mode 100644 index 75a54b1..0000000 --- a/app/src/main/res/drawable/ic_more_vert.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_refresh.xml b/app/src/main/res/drawable/ic_refresh.xml deleted file mode 100644 index 45aeda4..0000000 --- a/app/src/main/res/drawable/ic_refresh.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_reset.xml b/app/src/main/res/drawable/ic_reset.xml deleted file mode 100644 index 075ec88..0000000 --- a/app/src/main/res/drawable/ic_reset.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_roll_no.xml b/app/src/main/res/drawable/ic_roll_no.xml deleted file mode 100644 index 3aaed88..0000000 --- a/app/src/main/res/drawable/ic_roll_no.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_room.xml b/app/src/main/res/drawable/ic_room.xml index d5b0d41..d1393c6 100644 --- a/app/src/main/res/drawable/ic_room.xml +++ b/app/src/main/res/drawable/ic_room.xml @@ -1,9 +1,9 @@ + android:width="36dp" + android:height="36dp" + android:viewportHeight="36.0" + android:viewportWidth="36.0"> diff --git a/app/src/main/res/drawable/ic_settings.xml b/app/src/main/res/drawable/ic_settings.xml deleted file mode 100644 index 64f7e4a..0000000 --- a/app/src/main/res/drawable/ic_settings.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/logo4.png b/app/src/main/res/drawable/logo4.png deleted file mode 100644 index fabfd4b..0000000 Binary files a/app/src/main/res/drawable/logo4.png and /dev/null differ diff --git a/app/src/main/res/drawable/mail.png b/app/src/main/res/drawable/mail.png deleted file mode 100644 index 325528b..0000000 Binary files a/app/src/main/res/drawable/mail.png and /dev/null differ diff --git a/app/src/main/res/drawable/mail2.png b/app/src/main/res/drawable/mail2.png deleted file mode 100644 index 4d8319a..0000000 Binary files a/app/src/main/res/drawable/mail2.png and /dev/null differ diff --git a/app/src/main/res/drawable/mail3.png b/app/src/main/res/drawable/mail3.png deleted file mode 100644 index 1a2a303..0000000 Binary files a/app/src/main/res/drawable/mail3.png and /dev/null differ diff --git a/app/src/main/res/drawable/spinner_background.xml b/app/src/main/res/drawable/spinner_background.xml deleted file mode 100644 index ee710d4..0000000 --- a/app/src/main/res/drawable/spinner_background.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/drawable/text_input_box.xml b/app/src/main/res/drawable/text_input_box.xml deleted file mode 100644 index 6f8c871..0000000 --- a/app/src/main/res/drawable/text_input_box.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/ts_year_background.xml b/app/src/main/res/drawable/ts_year_background.xml deleted file mode 100644 index 57ec787..0000000 --- a/app/src/main/res/drawable/ts_year_background.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_about_app.xml b/app/src/main/res/layout/activity_about_app.xml index da5ec5e..9ec6f34 100644 --- a/app/src/main/res/layout/activity_about_app.xml +++ b/app/src/main/res/layout/activity_about_app.xml @@ -1,187 +1,366 @@ - - + android:padding="@dimen/activity_padding_horizontal" + android:scrollbars="none"> - - - - - - - - - + android:orientation="vertical"> - + + - - - - - - + android:orientation="vertical"> + + + + + + + + + + + + + +