Headertab

Drop Down MenusCSS Drop Down MenuPure CSS Dropdown Menu

Saturday 28 October 2017

Recyclerview spaning in android



Recyclerview provide many functionality  like add diffrent type view and spaning and decoration so in this blog we are learn about recyclerview spaning.


MainActivity.java


package com.samset.recyclerviewspaning;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recycler_view);
        recyclerView.addItemDecoration(new MarginDecoration(this));
        recyclerView.setHasFixedSize(true);

        // now define span count
        GridLayoutManager manager = new GridLayoutManager(this, 4);
        manager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
            @Override
            public int getSpanSize(int position) {

                // you can change span count
                return (4 - position % 4);
            }
        });
        recyclerView.setLayoutManager(manager);

        recyclerView.setAdapter(new ItemAdapter(30));
    }
}


activitymain.xml


<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.samset.recyclerviewspaning.MainActivity">

    <android.support.v7.widget.RecyclerView
        android:id="@+id/recycler_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
</android.support.constraint.ConstraintLayout>


Thank you 

FullSorceCodeRecyclerviewSpanning


live Sample










Recyclerview decoration in android

Hello friends

If you want add decoration in your recyclerview so follow below steps

Decoration

public class MarginDecoration extends RecyclerView.ItemDecoration {
  private int margin;

  public MarginDecoration(Context context) {
    margin = context.getResources().getDimensionPixelSize(R.dimen.item_margin);
  }

  @Override
  public void getItemOffsets(
      Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
     outRect.set(margin, margin, margin, margin);
  }

}

Above decoration add margin 





Mainactivity.java


package com.samset.recyclerviewmargindecoration;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.AppCompatCheckBox;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.View;
import android.widget.RadioButton;
import android.widget.RadioGroup;

import com.samset.recyclerviewmargindecoration.decoration.ColorFullDecoration;
import com.samset.recyclerviewmargindecoration.decoration.MarginDecoration;
import com.samset.recyclerviewmargindecoration.decoration.VerticalDecoration;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {
    private RecyclerView recyclerView;
    private RadioGroup radioGroup;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();

        radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup radioGroup, int i) {
                View radioButton = radioGroup.findViewById(i);
                int index = radioGroup.indexOfChild(radioButton);
                RadioButton r = (RadioButton) radioGroup.getChildAt(index);
                if (r.getText().toString().equalsIgnoreCase("Simple")) {
                    recyclerView.addItemDecoration(new MarginDecoration(MainActivity.this));
                } else if (r.getText().toString().equalsIgnoreCase("Vertical")) {
                    recyclerView.addItemDecoration(new VerticalDecoration(MainActivity.this));
                } else if (r.getText().toString().equalsIgnoreCase("With Border")) {
                    recyclerView.addItemDecoration(new ColorFullDecoration());
                }

            }
        });

        setRecyclerView();

    }

    private void setRecyclerView() {

        recyclerView.setHasFixedSize(true);
        recyclerView.setLayoutManager(new LinearLayoutManager(this));
        recyclerView.setAdapter(new DecorateAdapter(getList()));
    }

    private List<String> getList() {
        List<String> lists = new ArrayList<String>();
        for (int i = 0; i < 50; ++i) {
            lists.add("Item " + String.valueOf(i));
        }
        return lists;
    }

    private void initView() {
        radioGroup = findViewById(R.id.rg);
        recyclerView = (RecyclerView) findViewById(R.id.recyclerview);
    }
}


activitymain.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.samset.recyclerviewmargindecoration.MainActivity">

    <LinearLayout
        android:id="@+id/parent"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:padding="5dp"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent">

        <RadioGroup
            android:id="@+id/rg"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">

            <RadioButton
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Simple" />

            <RadioButton
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Vertical" />

            <RadioButton
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="With Border" />
        </RadioGroup>


    </LinearLayout>

    <android.support.v7.widget.RecyclerView
        android:id="@+id/recyclerview"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:layout_constraintTop_toBottomOf="@+id/parent" />

</android.support.constraint.ConstraintLayout>






Thank you 
Enjoy 

See full sorce code


See live sample
  





















Friday 27 October 2017

Retrofit Sample in android

Hello friends today we are learn about how to use Retrofit lib

Create a new project and follow below steps.

build.gradle

/* Retrofit*/
final RETROFIT_VERSION = '2.3.0'
compile "com.squareup.retrofit2:retrofit:$RETROFIT_VERSION"
compile "com.squareup.retrofit2:converter-gson:$RETROFIT_VERSION"
compile "com.squareup.retrofit2:retrofit-mock:$RETROFIT_VERSION"
compile 'com.squareup.okhttp3:logging-interceptor:3.4.1'

compile 'com.android.support:recyclerview-v7:25.3.1'
compile 'com.android.support:cardview-v7:25.3.1'




MainActivity.java

package com.samset.retrofitexample;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.AppCompatButton;
import android.support.v7.widget.AppCompatEditText;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.View;
import android.widget.ProgressBar;

import com.samset.retrofitexample.adapter.RepositoryAdapter;
import com.samset.retrofitexample.model.Repository;
import com.samset.retrofitexample.network.ApiService;

import java.util.List;

import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;

public class MainActivity extends AppCompatActivity {
    private AppCompatButton btnSearch;
    private AppCompatEditText etSearch;
    private RecyclerView recyclerView;
    private ProgressBar progressBar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
        callApi();

        // by default call
        getDatafromServer("samsetdev");
    }

    private void callApi() {
        btnSearch.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (etSearch.getText().toString() != null && !etSearch.getText().toString().isEmpty()) {
                    getDatafromServer(etSearch.getText().toString());
                }
            }
        });
    }

    private void initView() {
        progressBar = (ProgressBar) findViewById(R.id.progressbar);
        recyclerView = (RecyclerView) findViewById(R.id.recyclerview);
        btnSearch = (AppCompatButton) findViewById(R.id.btnsearch);
        etSearch = (AppCompatEditText) findViewById(R.id.etrepository);
    }

    private void getDatafromServer(String username) {

        ApiService usersService = AppApplication.getInstance().getApiService();

        usersService.getRepositories(username).enqueue(new Callback<List<Repository>>() {
            @Override
            public void onResponse(Call<List<Repository>> call, Response<List<Repository>> response) {
                progressBar.setVisibility(View.GONE);
                Log.e("TAG", " Response " + response.body().size());
                setupRecyclerView(response.body());
            }

            @Override
            public void onFailure(Call<List<Repository>> call, Throwable t) {
                progressBar.setVisibility(View.GONE);
            }
        });
    }

    private void setupRecyclerView(List<Repository> repositories) {
        RepositoryAdapter adapter = new RepositoryAdapter(repositories);
        recyclerView.setAdapter(adapter);
        recyclerView.setLayoutManager(new LinearLayoutManager(this));
    }
}


activity_main.xml


<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.samset.retrofitexample.MainActivity">

    <ProgressBar
        android:id="@+id/progressbar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />


    <android.support.v7.widget.AppCompatEditText
        android:id="@+id/etrepository"
        android:layout_width="280dp"
        android:text="samsetdev"
        android:layout_height="wrap_content"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <android.support.v7.widget.AppCompatButton
        android:id="@+id/btnsearch"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginRight="10dp"
        android:text="Search"
        android:textColor="@color/colorAccent"
        app:layout_constraintLeft_toRightOf="@+id/etrepository" />

    <android.support.v7.widget.RecyclerView
        android:id="@+id/recyclerview"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:layout_constraintTop_toBottomOf="@+id/etrepository" />

</android.support.constraint.ConstraintLayout>


Thank you 

FullSourceCode DownloadRetrofitSample




















Thursday 26 October 2017

Custom Progressbar in android

Hello friends

Today we are learn about how to create custom progressbar


create new drawable file

customprogressbar.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:id="@android:id/background">
        <shape>
            <corners android:radius="5dip" />
            <gradient
                android:startColor="#ff9d9e9d"
                android:centerColor="#ff5a5d5a"
                android:centerY="0.75"
                android:endColor="#ff747674"
                android:angle="270"
                />
        </shape>
    </item>

    <item android:id="@android:id/secondaryProgress">
        <clip>
            <shape>
                <corners android:radius="5dip" />
                <gradient
                    android:startColor="#80ffd300"
                    android:centerColor="#80ffb600"
                    android:centerY="0.75"
                    android:endColor="#a0ffcb00"
                    android:angle="270"
                    />
            </shape>
        </clip>
    </item>
    <item
        android:id="@android:id/progress"
        >
        <clip>
            <shape>
                <corners
                    android:radius="5dip" />
                <gradient
                    android:startColor="@color/colorPrimary"
                    android:endColor="@color/colorPrimaryDark"
                    android:angle="270" />
            </shape>
        </clip>
    </item>


</layer-list>








Thank you