乐学成语(2)
来源:互联网 发布:如何才能避免淘宝同款 编辑:程序博客网 时间:2024/04/29 20:21
- 显示主界面
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
效果图:
- 显示学习列表
定义一个实体类,作为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>
整体效果图:
- 乐学成语(2)
- 乐学成语2
- 乐学成语2
- 乐学成语(HappyIdiom)
- 乐学成语(1)
- 乐学成语(3)
- 乐学成语(HappyIdiom)
- 乐学成语
- 乐学成语
- 乐学成语
- 乐学成语
- 乐学成语
- 乐学成语案例
- Android---乐学成语
- 乐学成语
- 乐学成语
- 17乐学成语
- 18乐学成语
- 【IOS】Instruments 使用教程
- LeetCode:Kth Largest Element in an Array
- Excel 中将每行批量复制扩展为多行
- Treap模板(豪华版)
- 蛇形矩阵与DFS定向搜索相结合
- 乐学成语(2)
- Cannot connect to the Docker daemon. Is the docker daemon running on this host?
- 栈的顺序存储java写法
- centos7的vsftpd的安装和配置
- Java for Web学习笔记(二一):EL(1)什么是EL
- ASP.NET 搭建贴吧机器人(零)
- 中介者模式
- 栈的链接存储java写法
- Android-数据存储2(SQLite)及Android底层框架简介