Android實(shí)現(xiàn)仿時(shí)間軸
作者:佚名 
  在開發(fā)中,我們經(jīng)常會(huì)遇到要求實(shí)現(xiàn)一些界面特效的,其中,時(shí)光軸的效果是最近新興起來的,這種效果實(shí)現(xiàn)起來并不難,下面直接上效果和代碼。
 下面來看看時(shí)間軸的實(shí)現(xiàn),效果如下圖 
     
     其實(shí)只不過是布局+動(dòng)態(tài)生產(chǎn)TextView罷了,一開始選的是 FrameLayout,后來發(fā)現(xiàn)在處理單擊事件的時(shí)候一個(gè)問題  ,例如:
- FrameLayout frameLayout= (FrameLayout) findViewById(R.id.frameLayout);
 - for(...){
 - frameLayout.add(tv1);
 - frameLayout.add(tv2);
 - //在這里直接處理單擊事件肯定是不行的,tv1和tv2是重合在一起的
 - }
 - FrameLayout frameLayout= (FrameLayout) findViewById(R.id.frameLayout);
 - for(...){
 - tv1.setLayoutparams(....);
 - frameLayout.add(tv1);
 - frameLayout.add(tv2);
 - //在這里直接處理單擊事件就可以了,不知道為什么?
 - }
 
所以,直接改 成Linearlayout了,改成Linearlayout后,那些TextView的位置也好設(shè)置多了,下面是代碼:
- package com.lliq.ui;
 - import android.app.Activity;
 - import android.os.Bundle;
 - import android.util.Log;
 - import android.view.View;
 - import android.view.View.OnClickListener;
 - import android.view.Window;
 - import android.widget.FrameLayout;
 - import android.widget.LinearLayout;
 - import android.widget.TextView;
 - import com.lliq.R;
 - public class HistoryActivity extends Activity
 - {
 - private final int space_year = 5;
 - private final int space_month = 5;
 - private String[] year = { "2010", "2011", "2012", "2013" };
 - private String[][] month = { { "01", "03", "04", "11" }, { "07" }, { "01", "03", "04", "11" },
 - { "07" } };
 - boolean menu_falg = false;// 單擊改變菜單圖標(biāo)
 - private TextView[] tv_year;
 - private TextView[] tv_month;
 - private TextView content;
 - @Override
 - protected void onCreate(Bundle savedInstanceState)
 - {
 - super.onCreate(savedInstanceState);
 - requestWindowFeature(Window.FEATURE_NO_TITLE);
 - setContentView(R.layout.iq_history);
 - initLayout();
 - }
 - private void initLayout()
 - {
 - LinearLayout btnback = (LinearLayout) findViewById(R.id.history_layouthome);
 - final TextView btnhome = (TextView) findViewById(R.id.history_btnhome);
 - btnback.setOnClickListener(new OnClickListener()
 - {
 - @Override
 - public void onClick(View arg0)
 - {
 - menu_falg = !menu_falg;
 - btnhome.setBackgroundResource(menu_falg ? R.drawable.menuspread : R.drawable.menu_n);
 - MainActivity.handler.sendEmptyMessage(0);
 - }
 - });
 - content = (TextView) findViewById(R.id.content);
 - LinearLayout timelayout = (LinearLayout) findViewById(R.id.timelayout);
 - tv_year = new TextView[year.length];
 - for (int i = 0; i < year.length; i++)
 - {
 - tv_year[i] = new TextView(this);
 - tv_year[i].setPadding(
 - 10,
 - i == 0 ? space_year : space_year
 - * (13 - Integer.parseInt(month[i - 1][month[i - 1].length - 1])), 0, 0);
 - tv_year[i].getPaint().setFakeBoldText(true);
 - tv_year[i].setTextSize(14);
 - tv_year[i].setTag(year[i]);
 - tv_year[i].setText(year[i] + " --");
 - tv_year[i].setOnClickListener(new TimeLineClickListener(tv_year[i]));
 - timelayout.addView(tv_year[i]);
 - tv_month = new TextView[year.length];
 - for (int j = 0; j < month[i].length; j++)
 - {
 - tv_month[i] = new TextView(this);
 - if (j == 0)
 - {
 - tv_month[i].setPadding(20, space_month * Integer.parseInt(month[i][j]), 0, 0);
 - } else
 - {
 - tv_month[i].setPadding(20, space_month
 - * (Integer.parseInt(month[i][j]) - Integer.parseInt(month[i][j - 1])),
 - 0, 0);
 - }
 - tv_month[i].setTextSize(12);
 - tv_month[i].setText(month[i][j] + "月 --");
 - tv_month[i].setTag(year[i] + "-" + month[i][j]);
 - tv_month[i].setOnClickListener(new TimeLineClickListener(tv_month[i]));
 - timelayout.addView(tv_month[i]);
 - }
 - }
 - }
 - class TimeLineClickListener implements OnClickListener
 - {
 - TimeLineClickListener(View v)
 - {
 - }
 - @Override
 - public void onClick(View v)
 - {
 - content.setText(v.getTag().toString());
 - }
 - }
 - }
 
責(zé)任編輯:張葉青 
                    來源:
                    開源社區(qū)
 














 
 
 











 
 
 
 