Android实现仿时间轴

下面来看看时间轴的实现,效果如下图
   
    其实只不过是布局+动态生产TextView罢了,一开始选的是 FrameLayout,后来发现在处理单击事件的时候一个问题 ,例如:

创新互联于2013年创立,是专业互联网技术服务公司,拥有项目成都网站建设、成都网站制作网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元都江堰做网站,已为上家服务,为都江堰各地企业和个人服务,联系电话:18980820575

 
 
 
 
  1. FrameLayout frameLayout= (FrameLayout) findViewById(R.id.frameLayout);   
  2.  
  3.  for(...){   
  4.  
  5.      frameLayout.add(tv1);   
  6.  
  7.     frameLayout.add(tv2);   
  8.  
  9.     //在这里直接处理单击事件肯定是不行的,tv1和tv2是重合在一起的   
  10.  
  11.  }   
  12.  
  13.      
  14.  
  15.      
  16.  
  17.  FrameLayout frameLayout= (FrameLayout) findViewById(R.id.frameLayout);   
  18.  
  19.  for(...){   
  20.  
  21.      tv1.setLayoutparams(....);   
  22.  
  23.     frameLayout.add(tv1);   
  24.  
  25.     frameLayout.add(tv2);   
  26.  
  27.    //在这里直接处理单击事件就可以了,不知道为什么?   
  28.  
  29.  }  

所以,直接改 成Linearlayout了,改成Linearlayout后,那些TextView的位置也好设置多了,下面是代码:


 
 
 
 
  1. package com.lliq.ui;    
  2. import Android.app.Activity;    
  3.   
  4.  import android.os.Bundle;    
  5.   
  6.  import android.util.Log;    
  7.   
  8.  import android.view.View;    
  9.   
  10.  import android.view.View.OnClickListener;    
  11.   
  12. import android.view.Window;    
  13.   
  14.  import android.widget.FrameLayout;    
  15.   
  16.  import android.widget.LinearLayout;    
  17.   
  18.  import android.widget.TextView;    
  19.   
  20.     
  21.   
  22.  import com.lliq.R;    
  23.   
  24.     
  25.   
  26.  public class HistoryActivity extends Activity    
  27.   
  28. {    
  29.   
  30.     private final int space_year = 5;    
  31.   
  32.      private final int space_month = 5;    
  33.   
  34.     private String[] year = { "2010", "2011", "2012", "2013" };    
  35.   
  36.     private String[][] month = { { "01", "03", "04", "11" }, { "07" }, { "01", "03", "04", "11" },    
  37.   
  38.             { "07" } };    
  39.   
  40.      
  41.   
  42.      boolean menu_falg = false;// 单击改变菜单图标    
  43.   
  44.       
  45.   
  46.     private TextView[] tv_year;    
  47.   
  48.     private TextView[] tv_month;    
  49.   
  50.      private TextView content;    
  51.   
  52.       
  53.   
  54.      @Override   
  55.   
  56.      protected void onCreate(Bundle savedInstanceState)    
  57.   
  58.      {    
  59.   
  60.         super.onCreate(savedInstanceState);    
  61.   
  62.         requestWindowFeature(Window.FEATURE_NO_TITLE);    
  63.   
  64.          setContentView(R.layout.iq_history);    
  65.   
  66.         initLayout();    
  67.   
  68.     }    
  69.   
  70.      
  71.   
  72.    private void initLayout()    
  73.   
  74.     {    
  75.   
  76.          LinearLayout btnback = (LinearLayout) findViewById(R.id.history_layouthome);    
  77.   
  78.          final TextView btnhome = (TextView) findViewById(R.id.history_btnhome);    
  79.   
  80.         btnback.setOnClickListener(new OnClickListener()    
  81.   
  82.        {    
  83.   
  84.            @Override   
  85.   
  86.             public void onClick(View arg0)    
  87.   
  88.             {    
  89.   
  90.                 menu_falg = !menu_falg;    
  91.   
  92.                btnhome.setBackgroundResource(menu_falg ? R.drawable.menuspread : R.drawable.menu_n);    
  93.   
  94.                MainActivity.handler.sendEmptyMessage(0);    
  95.   
  96.             }    
  97.   
  98.         });    
  99.   
  100.      
  101.   
  102.         content = (TextView) findViewById(R.id.content);    
  103.   
  104.         LinearLayout timelayout = (LinearLayout) findViewById(R.id.timelayout);    
  105.   
  106.         tv_year = new TextView[year.length];    
  107.   
  108.         for (int i = 0; i < year.length; i++)    
  109.   
  110.         {    
  111.   
  112.             tv_year[i] = new TextView(this);    
  113.   
  114.             tv_year[i].setPadding(    
  115.   
  116.                   10,    
  117.   
  118.                     i == 0 ? space_year : space_year    
  119.   
  120.                             * (13 - Integer.parseInt(month[i - 1][month[i - 1].length - 1])), 0, 0);    
  121.   
  122.              tv_year[i].getPaint().setFakeBoldText(true);    
  123.   
  124.            tv_year[i].setTextSize(14);    
  125.   
  126.             tv_year[i].setTag(year[i]);    
  127.   
  128.              tv_year[i].setText(year[i] + "  --");    
  129.   
  130.             tv_year[i].setOnClickListener(new TimeLineClickListener(tv_year[i]));    
  131.   
  132.              timelayout.addView(tv_year[i]);    
  133.   
  134.             tv_month = new TextView[year.length];    
  135.   
  136.             for (int j = 0; j < month[i].length; j++)    
  137.   
  138.             {    
  139.   
  140.                 tv_month[i] = new TextView(this);    
  141.   
  142.                 if (j == 0)    
  143.   
  144.                 {    
  145.   
  146.                     tv_month[i].setPadding(20, space_month * Integer.parseInt(month[i][j]), 0, 0);    
  147.   
  148.                  } else   
  149.   
  150.                 {    
  151.   
  152.                     tv_month[i].setPadding(20, space_month    
  153.   
  154.                              * (Integer.parseInt(month[i][j]) - Integer.parseInt(month[i][j - 1])),    
  155.   
  156.                             0, 0);    
  157.   
  158.                 }    
  159.   
  160.                  tv_month[i].setTextSize(12);    
  161.   
  162.                  tv_month[i].setText(month[i][j] + "月   --");    
  163.   
  164.                 tv_month[i].setTag(year[i] + "-" + month[i][j]);    
  165.   
  166.                  tv_month[i].setOnClickListener(new TimeLineClickListener(tv_month[i]));    
  167.   
  168.                timelayout.addView(tv_month[i]);    
  169.   
  170.             }    
  171.   
  172.         }    
  173.   
  174.      
  175.   
  176.     }    
  177.   
  178.      
  179.   
  180.     class TimeLineClickListener implements OnClickListener    
  181.   
  182.      {    
  183.   
  184.      
  185.   
  186.         TimeLineClickListener(View v)    
  187.   
  188.          {    
  189.   
  190.        }    
  191.   
  192.      
  193.   
  194.         @Override   
  195.   
  196.          public void onClick(View v)    
  197.   
  198.          {    
  199.   
  200.              content.setText(v.getTag().toString());    
  201.   
  202.         }    
  203.   
  204.     }    
  205.   
  206.      
  207.   
  208.  }   

网页标题:Android实现仿时间轴
文章分享:http://www.shufengxianlan.com/qtweb/news20/7320.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联