Android 底部切换
来源:互联网 发布:软件系统接口设计方案 编辑:程序博客网 时间:2024/06/06 03:04
android:id="@+id/home_radio_button_group"
android:layout_width="match_parent"
android:layout_height="55dp"
android:layout_gravity="bottom"
android:background="@drawable/main_navigation_background"
android:gravity="center_vertical"
android:orientation="horizontal" >
<RadioButton
android:id="@+id/home_tab_main"
style="@style/home_tab_bottom"
android:background="@drawable/home_tab_background_selector"
android:checked="true"
android:drawableTop="@drawable/home_tab_main_selector" />
<RadioButton
android:id="@+id/home_tab_search"
style="@style/home_tab_bottom"
android:background="@drawable/home_tab_background_selector"
android:drawableTop="@drawable/home_tab_search_selector" />
<RadioButton
android:id="@+id/home_tab_category"
style="@style/home_tab_bottom"
android:background="@drawable/home_tab_background_selector"
android:drawableTop="@drawable/home_tab_category_selector" />
<RadioButton
android:id="@+id/home_tab_cart"
style="@style/home_tab_bottom"
android:background="@drawable/home_tab_background_selector"
android:drawableTop="@drawable/home_tab_cart_selector" />
<RadioButton
android:id="@+id/home_tab_personal"
style="@style/home_tab_bottom"
android:background="@drawable/home_tab_background_selector"
android:drawableTop="@drawable/home_tab_personal_selector" />
</RadioGroup>
这还是首次看见 , 当年那个viewpager顶部的切换的时候 和这个的原理差不多,以后可以试试 ,这个主要是底部的那个滑动按钮的切换 比较好实现,当然网上还有其他的开源库,比这个可能实现的好 ,但是知道一种方法 就是 get了,这种底部tab的切换实现的方法 很多 ,自己可以写个布局 ,什么的都是可以实现的 ,但是这种方法感觉比较巧 。当然 其中个地方比较难搞,就是 ,假如是购物车的话 肯定有购物车上有个什么数字的 ,这个可能有点坑了。不过可以重写radiobutton控件 。
当然这里有个管理activity的工具类也可以 了解下 ,package com.itau.jingdong;
import java.util.Stack;
import android.app.Activity;
import android.app.ActivityManager;
import android.content.Context;
/**
* @author Tau.Chen 陈涛
*
* @email tauchen1990@gmail.com,1076559197@qq.com
*
* @date 2013年9月12日
*
* @version V_1.0.0
*
* @description 应用程序Activity的管理类
*
*/
public class AppManager {
private static Stack<Activity> mActivityStack;
private static AppManager mAppManager;
private AppManager() {
}
/**
* 单一实例
*/
public static AppManager getInstance() {
if (mAppManager == null) {
mAppManager = new AppManager();
}
return mAppManager;
}
/**
* 添加Activity到堆栈
*/
public void addActivity(Activity activity) {
if (mActivityStack == null) {
mActivityStack = new Stack<Activity>();
}
mActivityStack.add(activity);
}
/**
* 获取栈顶Activity(堆栈中最后一个压入的)
*/
public Activity getTopActivity() {
Activity activity = mActivityStack.lastElement();
return activity;
}
/**
* 结束栈顶Activity(堆栈中最后一个压入的)
*/
public void killTopActivity() {
Activity activity = mActivityStack.lastElement();
killActivity(activity);
}
/**
* 结束指定的Activity
*/
public void killActivity(Activity activity) {
if (activity != null) {
mActivityStack.remove(activity);
activity.finish();
activity = null;
}
}
/**
* 结束指定类名的Activity
*/
public void killActivity(Class<?> cls) {
for (Activity activity : mActivityStack) {
if (activity.getClass().equals(cls)) {
killActivity(activity);
}
}
}
/**
* 结束所有Activity
*/
public void killAllActivity() {
for (int i = 0, size = mActivityStack.size(); i < size; i++) {
if (null != mActivityStack.get(i)) {
mActivityStack.get(i).finish();
}
}
mActivityStack.clear();
}
/**
* 退出应用程序
*/
public void AppExit(Context context) {
try {
killAllActivity();
ActivityManager activityMgr = (ActivityManager) context
.getSystemService(Context.ACTIVITY_SERVICE);
activityMgr.restartPackage(context.getPackageName());
System.exit(0);
} catch (Exception e) {
}
}
}
当然 里面还有比较好的imageloader的介绍
/**
* 返回默认的参数配置
*
* @param isDefaultShow
* true:显示默认的加载图片 false:不显示默认的加载图片
* @return
*/
public static DisplayImageOptions initDisplayOptions(boolean isShowDefault) {
DisplayImageOptions.Builder displayImageOptionsBuilder = new DisplayImageOptions.Builder();
// 设置图片缩放方式
// EXACTLY: 图像将完全按比例缩小的目标大小
// EXACTLY_STRETCHED: 图片会缩放到目标大小
// IN_SAMPLE_INT: 图像将被二次采样的整数倍
// IN_SAMPLE_POWER_OF_2: 图片将降低2倍,直到下一减少步骤,使图像更小的目标大小
// NONE: 图片不会调整
displayImageOptionsBuilder.imageScaleType(ImageScaleType.EXACTLY);
if (isShowDefault) {
// 默认显示的图片
displayImageOptionsBuilder.showStubImage(R.drawable.no_image);
// 地址为空的默认显示图片
displayImageOptionsBuilder
.showImageForEmptyUri(R.drawable.no_image);
// 加载失败的显示图片
displayImageOptionsBuilder.showImageOnFail(R.drawable.no_image);
}
// 开启内存缓存
displayImageOptionsBuilder.cacheInMemory(true);
// 开启SDCard缓存
displayImageOptionsBuilder.cacheOnDisc(true);
// 设置图片的编码格式为RGB_565,此格式比ARGB_8888快
displayImageOptionsBuilder.bitmapConfig(Bitmap.Config.RGB_565);
return displayImageOptionsBuilder.build();
}
/**
* 异步图片加载ImageLoader的初始化操作,在Application中调用此方法
*
* @param context
* 上下文对象
* @param cacheDisc
* 图片缓存到SDCard的目录,只需要传入SDCard根目录下的子目录即可,默认会建立在SDcard的根目录下
*/
public static void initImageLoader(Context context, String cacheDisc) {
// 配置ImageLoader
// 获取本地缓存的目录,该目录在SDCard的根目录下
File cacheDir = StorageUtils.getOwnCacheDirectory(context, cacheDisc);
// 实例化Builder
ImageLoaderConfiguration.Builder builder = new ImageLoaderConfiguration.Builder(
context);
// 设置线程数量
builder.threadPoolSize(3);
// 设定线程等级比普通低一点
builder.threadPriority(Thread.NORM_PRIORITY);
// 设定内存缓存为弱缓存
builder.memoryCache(new WeakMemoryCache());
// 设定内存图片缓存大小限制,不设置默认为屏幕的宽高
builder.memoryCacheExtraOptions(480, 800);
// 设定只保存同一尺寸的图片在内存
builder.denyCacheImageMultipleSizesInMemory();
// 设定缓存的SDcard目录,UnlimitDiscCache速度最快
builder.discCache(new UnlimitedDiscCache(cacheDir));
// 设定缓存到SDCard目录的文件命名
builder.discCacheFileNameGenerator(new HashCodeFileNameGenerator());
// 设定网络连接超时 timeout: 10s 读取网络连接超时read timeout: 60s
builder.imageDownloader(new BaseImageDownloader(context, 10000, 60000));
// 设置ImageLoader的配置参数
builder.defaultDisplayImageOptions(initDisplayOptions(true));
// 初始化ImageLoader
ImageLoader.getInstance().init(builder.build());
}
里面还看到一个晃动动画
translateAnimation.setInterpolator(new CycleInterpolator(counts));
translateAnimation.setDuration(1000);
return translateAnimation;
counts 是设置晃动的次数,不过作者没有用 其他的东西 后面再看 ,提交源码
- Android 底部切换
- Android底部Fragment切换
- Android底部菜单切换实现
- Android UI-实现底部切换标签(fragment)
- Android UI-实现底部切换标签(fragment)
- android基于Fragment实现底部导航切换
- Android UI-实现底部切换标签(fragment)
- Android-实现底部切换标签(fragment)
- Android UI-实现底部切换标签(fragment)
- Android FragmentTabHost实现底部tab切换
- android 主页底部菜单tab切换标签
- android底部导航切换实现(md)
- Android UI设计 屏幕底部的菜单栏 动画切换Activity
- Android-小巫新闻客户端底部菜单切换实现
- Android-小巫新闻客户端底部菜单切换实现
- android 底部tabs切换,支持多层嵌套RadioButton的RadioGroup
- Android自定义组合控件--底部多按钮切换
- Android微信式底部标签栏和fragment切换实现
- 获取设备的信息,UUId,Language,在线的模式
- ajax上传map类型数据,后台解析
- 显示年月日(第三章第二题)
- C#进行图像处理的几种方法(bitmap,bitmapData,IntPtr)
- leetcode Pascal's Triangle II
- Android 底部切换
- cocos2d-x 金品教程汇总
- 安卓,让edittext随手指移动而改变位置
- Response.Redirect()使用技巧
- 杭电ACM1181——变形课
- linux下解压命令大全
- CentOS 7打开NTF文件
- 【二分】POJ 2109
- 用java语言用sort方法实现groupby分组