Android Open Source - markj Sticker View






From Project

Back to project page markj.

License

The source code is released under:

GNU Lesser General Public License

If you think the Android project markj listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.markjmind.mobile.api.android.ui.view;
/*from   w w  w. ja va  2s  .com*/
import java.util.ArrayList;

import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.view.animation.AlphaAnimation;
import android.view.animation.Animation;
import android.view.animation.ScaleAnimation;
import android.view.animation.Transformation;
import android.view.animation.TranslateAnimation;
import android.widget.LinearLayout;

public class StickerView extends LinearLayout implements OnClickListener{
  
  private StickerListener stickerListener;
  public float density; 
  private int minSize;
  private boolean isSelected;
  private SIZE_MODE min_size_mode;
  public static enum SIZE_MODE{
    WRAP_CONTENT,DP
  }
  
  public StickerView(Context context, AttributeSet attrs) {
    super(context, attrs);
    init();
  }
  
  public void init(){
    density = getContext().getResources().getDisplayMetrics().density;
    minSize=0;
    min_size_mode = SIZE_MODE.WRAP_CONTENT;
    isSelected =false;
    super.setOnClickListener(this);
  }
  
  @Override
  public void onClick(View v) {
    select();
  }
  
  @Override
  public void setOnClickListener(OnClickListener l) {}
  
  public void setStickerListener(StickerListener stickerListener) {
    this.stickerListener = stickerListener;
  }
  
  public void select(){
    if(isSelected){
      return;
    }
    isSelected = true;
    ViewGroup parents = (ViewGroup)getParent();
    if(stickerListener==null){
      stickerListener = new StickerListener() {
        @Override
        public void onSelected(StickerView v, int index) {}
        @Override
        public void onDeSelected(StickerView v, int index) {}
      };
    }
    ArrayList<StickerView> stickerList = new ArrayList<StickerView>();
    
    StickerView preSelectView=null;
    StickerView postSelectView=null;
     for(int i=0;i<parents.getChildCount();i++){
      if(parents.getChildAt(i) instanceof StickerView){
        StickerView child = (StickerView)parents.getChildAt(i);
        stickerList.add(child);
      }
    }
     for(int i=0;i<stickerList.size();i++){
       StickerView child = stickerList.get(i);
       LayoutParams lp = (LayoutParams)child.getLayoutParams();
      if(this.equals(child)){
        lp.width=0;
        lp.weight=1;
        stickerListener.onSelected(child,i);
        postSelectView = child;
      }else{
        if(child.isSelected()){
          preSelectView = child;
        }
        if(min_size_mode==SIZE_MODE.DP){
          lp.width = minSize;
        }else{
          lp.width = LayoutParams.WRAP_CONTENT;
        }
        lp.weight=0;
        stickerListener.onDeSelected(child, i);
        child.setDeSelected();
      }
      
     }
     if(preSelectView!=null && postSelectView!=null){
      ResizeAnimation a = new ResizeAnimation(postSelectView);
      a.setFillBefore(false);
      postSelectView.setAnimation(a);
      ResizeAnimation a2 = new ResizeAnimation(preSelectView);
      a2.setFillBefore(false);
      preSelectView.setAnimation(a2);
      
     }
  }
  
  public void setMinSize(int dp){
    this.minSize = (int)(dp);
    setMinSizeMode(SIZE_MODE.DP);
  }
  
  public void setMinSizeMode(SIZE_MODE mode){
    min_size_mode = mode;
  }
  
  public void setDeSelected(){
    isSelected = false;
  }
  
  public boolean isSelected(){
    ScaleAnimation s;
    TranslateAnimation t;
    AlphaAnimation a;
    return this.isSelected;
  }
  
  
  class ResizeAnimation extends Animation {
      private View aniView;
      private float preHeight;
      private float postHeight;

      private float preWidth;
      private float postWidth;
      
      public ResizeAnimation(View v) {
        aniView = v;
        postWidth = aniView.getWidth();
        postHeight = aniView.getHeight();
          setDuration(500);
      }

      @Override
      protected void applyTransformation(float interpolatedTime, Transformation t) {
          float height = (preHeight - postHeight) * interpolatedTime + postHeight;
          float width = (preWidth - postWidth) * interpolatedTime + postWidth;
          android.view.ViewGroup.LayoutParams p = aniView.getLayoutParams();
          p.height = (int) height;
          p.width = (int) width;
          aniView.requestLayout();
      }
      
      public void setFillBefore(boolean fillBefore) {
//          aniView.getLayoutParams().width = (int)beforeWidth;
//          aniView.getLayoutParams().height = (int)beforeHeight;
//          aniView.requestLayout();
        super.setFillBefore(false);
      }
      
      
      
      @Override
      public void initialize(int width, int height, int parentWidth, int parentHeight) {
          super.initialize(width, height, parentWidth, parentHeight);
          preWidth = width;
          preHeight = height;
      }
      
  }
  
}




Java Source Code List

com.markjmind.mobile.api.android.controller.JwAsyncTask.java
com.markjmind.mobile.api.android.controller.JwMapperException.java
com.markjmind.mobile.api.android.controller.JwMemberMapper.java
com.markjmind.mobile.api.android.controller.JwStringID.java
com.markjmind.mobile.api.android.controller.JwViewController.java
com.markjmind.mobile.api.android.controller.JwViewerCache.java
com.markjmind.mobile.api.android.controller.JwViewer.java
com.markjmind.mobile.api.android.controller.Jwc.java
com.markjmind.mobile.api.android.controller.OnClickListenerReceiver.java
com.markjmind.mobile.api.android.controller.ViewerXmlMapper.java
com.markjmind.mobile.api.android.exception.JwErrorCode.java
com.markjmind.mobile.api.android.exception.JwException.java
com.markjmind.mobile.api.android.json.JSONMsgString.java
com.markjmind.mobile.api.android.json.JwJOSNTreeArray.java
com.markjmind.mobile.api.android.json.JwJSONReader.java
com.markjmind.mobile.api.android.ui.JwAnimation.java
com.markjmind.mobile.api.android.ui.JwGroup.java
com.markjmind.mobile.api.android.ui.JwMenu.java
com.markjmind.mobile.api.android.ui.JwOnGroupSelect.java
com.markjmind.mobile.api.android.ui.JwTabGroup.java
com.markjmind.mobile.api.android.ui.JwTouchGroupListener.java
com.markjmind.mobile.api.android.ui.JwTouchGroup.java
com.markjmind.mobile.api.android.ui.JwTouchMotionGroupLisener.java
com.markjmind.mobile.api.android.ui.JwTouchMotionGroup.java
com.markjmind.mobile.api.android.ui.drawgraph.GraphBoard.java
com.markjmind.mobile.api.android.ui.drawgraph.GraphSkin.java
com.markjmind.mobile.api.android.ui.drawgraph.HBackLineSkin.java
com.markjmind.mobile.api.android.ui.drawgraph.LineGraphSkin.java
com.markjmind.mobile.api.android.ui.drawgraph.PieGraph.java
com.markjmind.mobile.api.android.ui.drawgraph.RectGraphSkin.java
com.markjmind.mobile.api.android.ui.drawgraph.SimpleStyle.java
com.markjmind.mobile.api.android.ui.drawgraph.TextArraySkin.java
com.markjmind.mobile.api.android.ui.drawgraph.VBackLineSkin.java
com.markjmind.mobile.api.android.ui.graph.Arc.java
com.markjmind.mobile.api.android.ui.graph.BarElement.java
com.markjmind.mobile.api.android.ui.graph.BarLayout.java
com.markjmind.mobile.api.android.ui.graph.Bar.java
com.markjmind.mobile.api.android.ui.graph.IPieSkin.java
com.markjmind.mobile.api.android.ui.graph.LineLayout.java
com.markjmind.mobile.api.android.ui.graph.MeasureLayout.java
com.markjmind.mobile.api.android.ui.graph.PieArcRoundSkin.java
com.markjmind.mobile.api.android.ui.graph.PieLayout.java
com.markjmind.mobile.api.android.ui.graph.PiePercentSkin.java
com.markjmind.mobile.api.android.ui.view.JwBaseDropDown.java
com.markjmind.mobile.api.android.ui.view.JwDropDown.java
com.markjmind.mobile.api.android.ui.view.JwSlidingLayout.java
com.markjmind.mobile.api.android.ui.view.JwWheelView.java
com.markjmind.mobile.api.android.ui.view.StickerListener.java
com.markjmind.mobile.api.android.ui.view.StickerView.java
com.markjmind.mobile.api.android.ui.view.textview.JwTextViewAutoScale.java
com.markjmind.mobile.api.android.ui.view.textview.JwTextViewFonts.java
com.markjmind.mobile.api.android.ui.view.textview.JwTextViewWrapScale.java
com.markjmind.mobile.api.android.ui.wrapper.JwAlertDialog.java
com.markjmind.mobile.api.android.ui.wrapper.JwToast.java
com.markjmind.mobile.api.android.util.JwFile.java
com.markjmind.mobile.api.android.util.JwPreferenceList.java
com.markjmind.mobile.api.android.util.JwPreference.java
com.markjmind.mobile.api.android.util.JwSound.java
com.markjmind.mobile.api.android.util.JwTextUtils.java
com.markjmind.mobile.api.android.util.PhoneInfo.java
com.markjmind.mobile.api.android.util.WebConnection.java
com.markjmind.mobile.api.android.xml.JwDomHandler.java
com.markjmind.mobile.api.android.xml.JwDomLoader.java
com.markjmind.mobile.api.android.xml.JwEditElementHandler.java
com.markjmind.mobile.api.android.xml.JwXmlLoader.java
com.markjmind.mobile.api.android.xml.JwXmlResoure.java
com.markjmind.mobile.api.hub.ArrayJDhub.java
com.markjmind.mobile.api.hub.DBhub.java
com.markjmind.mobile.api.hub.JDhub.java
com.markjmind.mobile.api.hub.Loader.java
com.markjmind.mobile.api.hub.StoreList.java
com.markjmind.mobile.api.hub.Store.java