乐学成语(2)

来源:互联网 发布:如何才能避免淘宝同款 编辑:程序博客网 时间:2024/04/29 20:21
  1. 显示主界面
    res/layout目录下新建activity_main.xml布局,代码如下:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"      xmlns:tools="http://schemas.android.com/tools"      android:layout_width="match_parent"      android:layout_height="match_parent"      tools:context=".MainActivity"      android:background="@drawable/bg_animal" >      <TabHost          android:id="@android:id/tabhost"          android:layout_width="match_parent"          android:layout_height="match_parent"          android:layout_alignParentLeft="true"          android:layout_alignParentTop="true" >          <LinearLayout              android:layout_width="match_parent"              android:layout_height="match_parent"              android:orientation="vertical" >              <FrameLayout                  android:id="@android:id/tabcontent"                  android:layout_width="match_parent"                  android:layout_height="match_parent"                  android:layout_weight="1" >                  <LinearLayout                      android:id="@+id/tab2"                      android:layout_width="match_parent"                      android:layout_height="match_parent"                      android:orientation="vertical" >                  </LinearLayout>                  <LinearLayout                      android:id="@+id/tab3"                      android:layout_width="match_parent"                      android:layout_height="match_parent"                      android:orientation="vertical" >                  </LinearLayout>              </FrameLayout>              <TabWidget                  android:id="@android:id/tabs"                  android:layout_width="match_parent"                  android:layout_height="wrap_content" >              </TabWidget>          </LinearLayout>      </TabHost>  </RelativeLayout>   

效果图:
这里写图片描述
在activity包下建立MainActivity继承Activity,代码如下:

public class MainActivity extends TabActivity {private TabHost tabHost;@Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        requestWindowFeature(Window.FEATURE_NO_TITLE);//取消标题栏        setContentView(R.layout.activity_main);        tabHost=getTabHost();        addTab("study",R.string.title_study,R.drawable.search,StudyActivity.class);        addTab("search",R.string.title_search,R.drawable.search,StudyActivity.class);        addTab("game",R.string.title_game,R.drawable.game,StudyActivity.class);        addTab("save",R.string.title_save,R.drawable.save,StudyActivity.class);        addTab("help",R.string.title_help,R.drawable.search,StudyActivity.class);    }private void addTab(String tag,int title_introduction, int title_icon,Class ActivityClass){    tabHost.addTab(tabHost.newTabSpec(tag)            .setIndicator(getString(title_introduction),             getResources().getDrawable(title_icon)).setContent(new Intent(this,ActivityClass)));}    @Override    public boolean onCreateOptionsMenu(Menu menu) {        // Inflate the menu; this adds items to the action bar if it is present.        getMenuInflater().inflate(R.menu.main, menu);        return true;    }}

TabHost介绍
TabHost组件可以在界面中存放多个选项卡, 很多软件都使用了改组件进行设计;
1. TabHost常用组件
TabWidget : 该组件就是TabHost标签页中上部 或者 下部的按钮, 可以点击按钮切换选项卡;
TabSpec : 代表了选项卡界面, 添加一个TabSpec即可添加到TabHost中;
– 创建选项卡 : newTabSpec(String tag), 创建一个选项卡;
– 添加选项卡 : addTab(tabSpec);

出现的错误:
我一开始是在AndroidManifest.xml中使用
android:theme=”@android:style/Theme.NoTitleBar”
之后仔细查了查意思是:背景主题的没有标题栏的样式,默认如果没有设置的话,显示黑背景
解决这样的问题:
那就换成android:theme=”@android:style/Theme.Translucent.NoTitleBar
详细介绍请看http://blog.csdn.net/zhupengqq/article/details/51472682
效果图:
这里写图片描述

  1. 显示学习列表
    定义一个实体类,作为ListView适配器的适配类型,entity包下新建类Category,代码如下:
public class Category {  private String name;//类别名称  private int imageid;//类别对应的图片  public Category(String name, int imageid) {    super();    this.name = name;    this.imageid = imageid;     }   public String getName() {    return name;   }    public void setName(String name) {        this.name = name;    }    public int getImageid() {        return imageid;    }    public void setImageid(int imageid) {        this.imageid = imageid;    }     }

在layout下新建activity_study.xml文件 ,代码如下:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:background="@drawable/bg_ling"    tools:context=".StudyActivity" >    <ListView        android:id="@+id/lvCategories"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layoutAnimation="@anim/anim_layout_listview"        android:listSelector="#00000000"        android:layout_alignParentTop="true"        android:layout_alignParentLeft="true" >    </ListView></RelativeLayout>

接着需要为ListView的子项指定一个自定义的布局,category_item.xml,代码如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:padding="10dp"    android:orientation="horizontal" >    <ImageView        android:id="@+id/category_image"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:src="@drawable/category_animal" />    <TextView         android:id="@+id/category_name"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:gravity="center"        android:text="vb"        android:textAppearance="?android:attr/textAppearanceLarge"        /></LinearLayout>

接下来需要在应用的包下创建一个自定义适配器,新建CategoryAdapterLei 类,代码如下:

public class CategoryAdapter extends ArrayAdapter<Category>{    private int resourceid;    public CategoryAdapter(Context context, int resource,            List<Category> objects) {        super(context, resource, objects);        // TODO Auto-generated constructor stub        resourceid=resource;    }    @Override    public View getView(int position, View convertView, ViewGroup parent) {        View view;        ViewHolder viewHolder;        Category category=getItem(position);//获取当前项的Category的当前示例        if(convertView==null){        view=LayoutInflater.from(getContext()).inflate(resourceid, null);        viewHolder=new ViewHolder();        viewHolder.categoryImage=(ImageView) view.findViewById(R.id.category_image);        viewHolder.categoryName=(TextView) view.findViewById(R.id.category_name);        view.setTag(viewHolder);        }        else{            view=convertView;            viewHolder=(ViewHolder)view.getTag();//重新获得viewHolder        }        viewHolder.categoryImage.setImageResource(category.getImageid());        viewHolder.categoryName.setText(category.getName());        return view;    }    class ViewHolder{        ImageView categoryImage;        TextView categoryName;    }}

下面在activity包下新建StudyActivity,代码如下:

public class StudyActivity extends Activity {    private List<Category> categoryList;    private String [] category_names;    private int [] category_images;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_study);        initCategories();//初始化类别        CategoryAdapter adapter=new CategoryAdapter(this,R.layout.category_item,categoryList );        ListView listView=(ListView) findViewById(R.id.lvCategories);        listView.setAdapter(adapter);        listView.setOnItemClickListener(new OnItemClickListener() {            @Override            public void onItemClick(AdapterView<?> adapterView, View view, int position,                    long id) {                switch (position) {                 case 0:                    Intent intent=new Intent(StudyActivity.this,StudyAnimalActivity.class);                    startActivity(intent);                    break;                default:                    break;                }            }        });    }    private void initCategories() {        categoryList=new ArrayList<Category>();        Resources resources=getResources();        category_names=resources.getStringArray(R.array.category);        category_images=new int[]{R.drawable.category_animal,                R.drawable.category_nature,R.drawable.category_human,                R.drawable.category_season,R.drawable.category_number,                R.drawable.category_fable,R.drawable.category_other};        for(int i=0;i<category_names.length;i++){            categoryList.add(new Category(category_names[i],category_images[i]));        }    }    @Override    public boolean onCreateOptionsMenu(Menu menu) {        // Inflate the menu; this adds items to the action bar if it is present.        getMenuInflater().inflate(R.menu.study, menu);        return true;    }}

页面的载入还有些僵硬,下面添加动态效果:
anim_listview.xml:

<?xml version="1.0" encoding="utf-8"?><alpha xmlns:android="http://schemas.android.com/apk/res/android"    android:duration="1000"    android:fromAlpha="0.0"    android:toAlpha="1.0"    ></alpha>

anim_layout_listview.xml:

<?xml version="1.0" encoding="utf-8"?><layoutAnimation xmlns:android="http://schemas.android.com/apk/res/android"    android:animation="@anim/anim_listview"    android:animationOrder="reverse"    android:delay="30%"    ></layoutAnimation>

整体效果图:
这里写图片描述

0 0
原创粉丝点击