仿android系统Launcher界面
来源:互联网 发布:淘宝店铺页头装修教程 编辑:程序博客网 时间:2024/04/29 11:10
写的我要吐血了。。。是不是我太菜了?
放出代码.....
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" > <!-- 定义一个ViewSwitcher组件 --> <ViewSwitcher android:id="@+id/viewSwitcher" android:layout_width="fill_parent" android:layout_height="fill_parent"/> <!-- 定义滚动到上一屏的按钮 --> <Button android:id="@+id/button_prev" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:onClick="prev" android:text="<"/> <!--定义滚动到下一屏的按钮 --> <Button android:id="@+id/button_next" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_alignParentRight="true" android:onClick="next" android:text=">"/></RelativeLayout>
res-->layout-->labelicon.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:gravity="center" > <ImageView android:id="@+id/imageview" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <TextView android:id="@+id/textview" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center"/></LinearLayout>
res-->layout-->slidelistview.xml<?xml version="1.0" encoding="utf-8"?><GridView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:numColumns="4" android:layout_height="match_parent"> </GridView>
res-->anim-->slide_in_right.xml
<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 设置从右边拖进来的动画 android:duration指定动画持续时间 --><translateandroid:fromXDelta="100%p"android:toXDelta="0"android:duration="@android:integer/config_mediumAnimTime" /></set>
res-->anim-->slide_out_left.xml<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 设置从左边拖出去的动画 android:duration指定动画持续时间 --><translateandroid:fromXDelta="0"android:toXDelta="-100%p"android:duration="@android:integer/config_mediumAnimTime" /></set>
MainActivity.java
package com.demo.viewswitcherdemo;import java.util.ArrayList;import android.os.Bundle;import android.app.Activity;import android.graphics.drawable.Drawable;import android.view.LayoutInflater;import android.view.Menu;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.GridView;import android.widget.ImageView;import android.widget.TextView;import android.widget.ViewSwitcher;import android.widget.ViewSwitcher.ViewFactory;public class MainActivity extends Activity {//定义一个常量,用于显示每屏显示的应用程序数public static final int NUMBER_PER_SCREEN = 12;//代表应用程序的内部类public static class DataItem{//应用程序名称public String dataName;//应用程序图标public Drawable drawable;}//保存系统所有应用程序的List集合private ArrayList<DataItem> items = new ArrayList<DataItem>();//记录当前正在显示第几屏的程序private int screenNo = -1;//保存程序所占的总屏数private int screenCount;ViewSwitcher switcher;//创建LayoutInflater对象LayoutInflater inflater;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);inflater = LayoutInflater.from(MainActivity.this);//创建一个包含40个元素的List集合,用于模拟包含40个应用程序for(int i=0; i<40; i++){String label = "" + i;Drawable drawable = getResources().getDrawable(R.drawable.ic_launcher);DataItem item = new DataItem();item.dataName = label;item.drawable = drawable;items.add(item);}//计算应用程序所占的总屏数//如果应用程序的数量能整除Number_per_screen,除法的结果就是总屏数//如果不能,总屏数应该是除法的结果再加1screenCount = items.size() % NUMBER_PER_SCREEN == 0 ? items.size() / NUMBER_PER_SCREEN: items.size() / NUMBER_PER_SCREEN + 1;switcher = (ViewSwitcher)findViewById(R.id.viewSwitcher);switcher.setFactory(new ViewFactory(){//实际上就是返回一个GridView组件@Overridepublic View makeView() {//加载这个组件,实际上就是一个GridView组件return inflater.inflate(R.layout.slidelistview, null);}});//页面加载时先显示第一屏next(null);}public void next(View v){if(screenNo < screenCount - 1){screenNo++;//为ViewSwitcher的组件显示过程设置动画switcher.setInAnimation(this,R.anim.slide_in_right);//为ViewSwitcher的组件隐藏过程设置动画switcher.setOutAnimation(this,R.anim.slide_out_left);//控制下一屏将要显示的GridView对应的Adapter((GridView)switcher.getNextView()).setAdapter(adapter);switcher.showNext();}}public void prev(View v){if(screenNo > 0){screenNo--;//为ViewSwitcher的组件显示过程设置动画switcher.setInAnimation(this,R.anim.slide_out_left);//为ViewSwitcher的组件隐藏过程设置动画switcher.setOutAnimation(this,R.anim.slide_in_right);//控制下一屏将要显示的GridView对应的Adapter((GridView)switcher.getNextView()).setAdapter(adapter);switcher.showPrevious();}}//该BaseAdapter负责为每屏显示的GridView提供列表项private BaseAdapter adapter = new BaseAdapter(){@Overridepublic int getCount() {// 如果已经到了最后一屏幕,且应用程序的数量不能整除Number_per_screenif(screenNo == screenCount -1 && items.size() % NUMBER_PER_SCREEN != 0){//最后一屏显示的程序数为应用程序的数量对number_per_screen求余return items.size() % NUMBER_PER_SCREEN;}//否则每屏显示的程序数量为Number_per_screenreturn NUMBER_PER_SCREEN;}@Overridepublic DataItem getItem(int position) {// 根据screenNo计算第position个列表项的数据return items.get(screenNo * NUMBER_PER_SCREEN + position);}@Overridepublic long getItemId(int position) {// TODO Auto-generated method stubreturn position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {View view = convertView;if(convertView == null){//加载R.layout.labelicon布局文件view = inflater.inflate(R.layout.labelicon, null);}//获取R.layout.labelicon布局文件中的ImageView组件,并为之设置图标ImageView imageView = (ImageView)view.findViewById(R.id.imageview);imageView.setImageDrawable(getItem(position).drawable);//获取TextviewTextView textView = (TextView)view.findViewById(R.id.textview);textView.setText(getItem(position).dataName);return view;}};@Overridepublic 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;}}
- 仿android系统Launcher界面
- [Android]笔记20:ViewAnimator-仿android系统launcher界面
- ViewAnimator之ViewSwitcher的简单功能和用法(仿Android系统的Launcher界面)
- Android仿Launcher效果
- ViewSwitcher仿安卓系统Launcher界面
- 写一个 android launcher界面
- 求指教,Android 如何调用系统主界面Launcher应用程序列表界面
- 仿android系统主界面 下方的小按钮滑动
- android-仿UC界面
- android仿淘宝界面
- android 仿QQ界面
- Android: 仿Launcher Workspace左右滑动控件
- Android系统:Launcher知识点总结
- Android 替换系统桌面Launcher
- android launcher开发(3)初始化界面
- android去掉Launcher界面图标显示
- 定制android主界面。让你自己写的Android的Launcher成为系统中第一个启动的,也是唯一的Launcher.
- 定制android主界面。让你自己写的Android的Launcher成为系统中第一个启动的,也是唯一的Launcher.
- 要开始了。。。
- Smart Hands-Eclipse Debug的一些用法--图文
- java util包学习(5) Vector 源码分析
- 大连理工大学电信学部CSDN高校俱乐部新学期见面会成功举办
- hdu-2156-分数矩阵
- 仿android系统Launcher界面
- Ubuntu下安装Sublime Text 2
- String之超大数加法
- 【一】android studio安装
- code blocks中文字符输出乱码
- Java 面试题(基础篇1)
- 寻找数组中的最大值和最小值
- mysql存储引擎&索引存储结构
- 在JavaScript中的代理模式