Android Code Snippet
Wednesday, 14 September 2016
Animated GIF ImageView in android
activity_main.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"> <LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"> <com.krishnakant.imageanimation.Activity.PlayGifView
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:id="@+id/imageBachao" /> </LinearLayout> </LinearLayout>
MainActivity Class
public class MainActivity extends AppCompatActivity {
@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);
PlayGifView imageBachao = (PlayGifView) findViewById(R.id.imageBachao); imageBachao.setImageResource(R.drawable.bachao);}}
PlayGifView.java Class
import android.content.Context; import android.graphics.Canvas; import android.graphics.Movie; import android.os.Build; import android.util.AttributeSet; import android.view.View; /** * Created by Krishnakant.Kumar on 13-09-2016. */public class PlayGifView extends View { private static final int DEFAULT_MOVIEW_DURATION = 500; private int mMovieResourceId; private Movie mMovie; private long mMovieStart = 0; private int mCurrentAnimationTime = 0; @SuppressLint("NewApi") public PlayGifView(Context context, AttributeSet attrs) { super(context, attrs); /** * Starting from HONEYCOMB have to turn off HardWare acceleration to draw * Movie on Canvas. */ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { setLayerType(View.LAYER_TYPE_SOFTWARE, null); } } public void setImageResource(int mvId){ this.mMovieResourceId = mvId; mMovie = Movie.decodeStream(getResources().openRawResource(mMovieResourceId)); requestLayout(); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { if(mMovie != null){ setMeasuredDimension(mMovie.width(), mMovie.height()); }else{ setMeasuredDimension(getSuggestedMinimumWidth(), getSuggestedMinimumHeight()); } } @Override protected void onDraw(Canvas canvas) { if (mMovie != null){ updateAnimtionTime(); drawGif(canvas); invalidate(); }else{ drawGif(canvas); } } private void updateAnimtionTime() { long now = android.os.SystemClock.uptimeMillis(); if (mMovieStart == 0) { mMovieStart = now; } int dur = mMovie.duration(); if (dur == 0) { dur = DEFAULT_MOVIEW_DURATION; } mCurrentAnimationTime = (int) ((now - mMovieStart) % dur); } private void drawGif(Canvas canvas) { mMovie.setTime(mCurrentAnimationTime); mMovie.draw(canvas, 0, 0); canvas.restore(); } }
Android Horizontal and Vertical RecyclerView Example
Declare Android RecyclerView in your main layout file
<?xml version="1.0" encoding="utf-8"?><LinearLayout android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <android.support.v7.widget.RecyclerView android:id="@+id/vertical_recycler_view" android:background="#fff" android:layout_weight="1" android:layout_width="match_parent" android:layout_height="0dp"/> <View android:background="#787878" android:layout_width="match_parent" android:layout_height="3dp"/> <android.support.v7.widget.RecyclerView android:id="@+id/horizontal_recycler_view" android:background="#fff" android:layout_width="match_parent" android:layout_height="70dp"/></LinearLayout> |
Horizontal RecyclerView’s single item View.
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:textColor="#787878" android:textSize="18sp" android:padding="16dp" android:id="@+id/txtView" android:layout_width="wrap_content" android:layout_height="wrap_content" /></LinearLayout> |
Vertical RecyclerView’s single item View.
<?xml version="1.0" encoding="utf-8"?><LinearLayout android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:textColor="#787878" android:textSize="18sp" android:padding="16dp" android:id="@+id/txtView" android:layout_width="wrap_content" android:layout_height="wrap_content" /></LinearLayout> |
MainActivity Class
package com.nkdroid.recyclerview;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.support.v7.widget.LinearLayoutManager;import android.support.v7.widget.RecyclerView;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.TextView;import android.widget.Toast;import java.util.ArrayList;import java.util.List;public class MainActivity extends AppCompatActivity { private RecyclerView vertical_recycler_view,horizontal_recycler_view; private ArrayList<String> horizontalList,verticalList; private HorizontalAdapter horizontalAdapter; private VerticalAdapter verticalAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); vertical_recycler_view= (RecyclerView) findViewById(R.id.vertical_recycler_view); horizontal_recycler_view= (RecyclerView) findViewById(R.id.horizontal_recycler_view); horizontalList=new ArrayList<>(); horizontalList.add("horizontal 1"); horizontalList.add("horizontal 2"); horizontalList.add("horizontal 3"); horizontalList.add("horizontal 4"); horizontalList.add("horizontal 5"); horizontalList.add("horizontal 6"); horizontalList.add("horizontal 7"); horizontalList.add("horizontal 8"); horizontalList.add("horizontal 9"); horizontalList.add("horizontal 10"); verticalList=new ArrayList<>(); verticalList.add("verticallist 1"); verticalList.add("verticallist 2"); verticalList.add("verticallist 3"); verticalList.add("verticallist 4"); verticalList.add("verticallist 5"); verticalList.add("verticallist 6"); verticalList.add("verticallist 7"); verticalList.add("verticallist 8"); verticalList.add("verticallist 9"); verticalList.add("verticallist 10"); horizontalAdapter=new HorizontalAdapter(horizontalList); verticalAdapter=new VerticalAdapter(verticalList); LinearLayoutManager verticalLayoutmanager = new LinearLayoutManager(MainActivity.this, LinearLayoutManager.VERTICAL, false); vertical_recycler_view.setLayoutManager(verticalLayoutmanager);// RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getApplicationContext());// vertical_recycler_view.setLayoutManager(mLayoutManager); LinearLayoutManager horizontalLayoutManagaer = new LinearLayoutManager(MainActivity.this, LinearLayoutManager.HORIZONTAL, false); horizontal_recycler_view.setLayoutManager(horizontalLayoutManagaer); vertical_recycler_view.setAdapter(verticalAdapter); horizontal_recycler_view.setAdapter(horizontalAdapter); } public class HorizontalAdapter extends RecyclerView.Adapter<HorizontalAdapter.MyViewHolder> { private List<String> horizontalList; public class MyViewHolder extends RecyclerView.ViewHolder { public TextView txtView; public MyViewHolder(View view) { super(view); txtView = (TextView) view.findViewById(R.id.txtView); } } public HorizontalAdapter(List<String> horizontalList) { this.horizontalList = horizontalList; } @Override public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View itemView = LayoutInflater.from(parent.getContext()) .inflate(R.layout.horizontal_item_view, parent, false); return new MyViewHolder(itemView); } @Override public void onBindViewHolder(final MyViewHolder holder, final int position) { holder.txtView.setText(horizontalList.get(position)); holder.txtView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(MainActivity.this,holder.txtView.getText().toString(),Toast.LENGTH_SHORT).show(); } }); } @Override public int getItemCount() { return horizontalList.size(); } } public class VerticalAdapter extends RecyclerView.Adapter<VerticalAdapter.MyViewHolder> { private List<String> verticalList; public class MyViewHolder extends RecyclerView.ViewHolder { public TextView txtView; public MyViewHolder(View view) { super(view); txtView = (TextView) view.findViewById(R.id.txtView); } } public VerticalAdapter(List<String> verticalList) { this.verticalList = verticalList; } @Override public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View itemView = LayoutInflater.from(parent.getContext()) .inflate(R.layout.vertical_item_view, parent, false); return new MyViewHolder(itemView); } @Override public void onBindViewHolder(final MyViewHolder holder, final int position) { holder.txtView.setText(verticalList.get(position)); holder.txtView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(MainActivity.this,holder.txtView.getText().toString(),Toast.LENGTH_SHORT).show(); } }); } @Override public int getItemCount() { return verticalList.size(); } }
Subscribe to:
Posts (Atom)


