我的第一个android应用——装逼神器《微博尾》传送门:http://blog.csdn.net/love_5209/article/details/38708991
《玩转尾巴》应用宝下载地址:http://android.myapp.com/myapp/detail.htm?apkName=com.xiaoku.playtail
(PS:现在的个人开发者真的不是很好混了,审核上app市场越来越严格了,欢迎一些app个人开发者来交流)
应用简介:
玩转尾巴,集好玩有趣的微博尾巴于一体,是继《微博尾》之后的第二版,精心挑选好玩有趣的尾巴,让你的尾巴动起来。主要尾巴模块分为【热门手机】【帅哥美女】【文艺励志】【控族达人】【个性热门】【粉丝】【专属定制】【宅男腐女】【游戏电影】九大模块,总尾巴数达200多条,让你尽情享受尾巴的乐趣!
当前版本:V1.0
《玩转尾巴》原理跟《微博尾》一样,这次主要添加滑动框架及其积分获取及其购买、签到获取积分等功能。
先看首页效果图(这张为测试截图,最下边是用来放AD的):
嘻嘻,界面是不是很卡哇伊呢~~还添加了左滑还有右滑显示菜单,如下图:
《玩转尾巴》保留了热门手机的尾巴,如iPhone6、魅族4等等,其他版块的尾巴皆为精心挑选,定制出的版块。
对于个人开发者,大多都使用了嵌入广告平台的广告,我也一样,选择的广告平台是有米,之所以选择它是因为有米的平台算是比较大,众所周知的,后台界面也比较好,如果有需要注册的可以通过此链接注册:https://www.youmi.net/account/register?r=NjQ4NjU= (有个人开发者可一起交流推广方面的)
其主要的广告形式有积分墙、插屏、广告条等等。
本次app就都使用上了以上3种广告形式。具体可到有米的后台下载SDK看或与我交流。
接下来进入正题,本次开发支持的最低版本为2.2,之前使用fragment需要3.0以上版本,这次使用2.2可满足更多用户,通过v4支持库的类android.support.v4.app.Fragment便可兼容低版本。
主要讲一下中间做遇到的哪些问题和一些知识点吧~~
首先没阅读过这篇的可先查阅一下:我的第一个android应用——装逼神器《微博尾》传送门:http://blog.csdn.net/love_5209/article/details/38708991
1、首先是找主界面使用的框架,本次使用的是侧滑menu菜单,源码是在安卓巴士论坛上找的,自己做了一些修改便成可为你所用了,框架源码下载地址(仅供参考):http://yunpan.cn/Q7hQMBEjqWUbb 提取码 1430
2、嵌入框架后,简单阅读一下源码便可知道里面提供了ResideMenu这个主体类,下面的代码就可轻松添加一个菜单选项了,接着可自己设置监听的动作:
private ResideMenuItem itemHome;
private ResideMenu resideMenu;
public void onCreate(Bundle savedInstanceState) {
setUpMenu();
}
private void setUpMenu() {
//resideMenu初始化
resideMenu = new ResideMenu(this);
resideMenu.setBackground(R.drawable.menu_background);
resideMenu.attachToActivity(this);
resideMenu.setMenuListener(menuListener);
itemHome = new ResideMenuItem(this, R.drawable.icon_sy, "首
页");//设置菜单标题、图标
itemHome.setOnClickListener(this);//设置监听
resideMenu.addMenuItem(itemHome, ResideMenu.DIRECTION_LEFT);//添加到
左边的菜单
//左上角按钮
findViewById(R.id.title_bar_left_menu).setOnClickListener(new
View.OnClickListener() {
@Override
public void onClick(View view) {
resideMenu.openMenu(ResideMenu.DIRECTION_LEFT);
}
});
//右上角按钮
findViewById(R.id.title_bar_right_menu).setOnClickListener(new
View.OnClickListener() {
@Override
public void onClick(View view) {
resideMenu.openMenu(ResideMenu.DIRECTION_RIGHT);
}
});
}
3、之前微博尾的app_src配置文件是放在assets里面的,这次添加了积分,意味着需要修改积分的值,然而问题来了,assets中的文件并不能修改,那么,可通过数据库SQLite来写(比较规范一些),或者使用sharedpreferences存储(数据量大的话不建议使用),后来采用了sharedpreferences,刚开始先在src目录下放置配置文件,然后直接读取到sharedpreferences,后续的修改积分直接操作sharedpreferences即可。(比较笨的方法)
4、listview的数据动态更新问题:使用购买完尾巴,需要修改尾巴为“免积分”状态,动态的更新listview,之后使用viewholder的做法来缓存listview的item,然而这样做的后果是,上下一拉listview,会出现listview对应的尾巴积分状态乱了,有些原本不需要积分的变成需要积分,不需要积分的变成积分。
解决办法:listview不使用viewholder进行缓存。(这样做对于某些低配置手机机型来说可能会有点不流畅)
5、关于积分签到的功能,如下代码:
public boolean isQianDao(){
Editor editor =sharedPreferences.edit();
String today = DateUtil.getDate(0);
Log.i("date",today);
String date = sharedPreferences.getString("date", DateUtil.getDate(0));
Log.i("date",date);
if(today.equals(date)){
editor.putString("date", DateUtil.getDate(1)).commit();
int amount = 2;
Log.i("date",DateUtil.getDate(1));
boolean isSuccess = PointsManager.getInstance(this).awardPoints(amount);
if(isSuccess){
Toast.makeText(getApplicationContext(), "签到成功,获得2积分", Toast.LENGTH_LONG).show();
}
return true;
}
return false;
}
DateUtil的getDate方法如下:(num参数为0代表今天,1代表明天,以此类推)
public static String getDate(int num){
Date date=new Date();//取时间
Calendar calendar = new GregorianCalendar();
calendar.setTime(date);
calendar.add(calendar.DATE,num);//把日期往后增加一天.整数往后推,负数往前移动
date=calendar.getTime();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
String dateString = formatter.format(date);
return dateString;
}
原理也就是匹配今天日期是否跟sharedPreferences里面一样,一样则可签到,增加2个积分,同时可适当展示有米的广告,签完到则修改sharedPreferences的值为明天的值。
当然,上面很多使用到了sharedPreference,这样做的安全性肯定没得说了,懂点android就轻松免积分了。
有想了解源码的也可通过反编译进行阅读,只不过我已经进行了代码混淆与加固,阅读起来有点问题吧~
6、由于滑动那个框架也是用的fragment,故横竖屏Activity重新加载问题也需要设置一下,在AndroidManifest.xml设置Activity的 android:screenOrientation="nosensor"
7、此外,再分享一个躲过检测广告的方法,就是利用日期来显示广告,一般审核时间都在3天左右,故可看下面代码:
public static boolean isTimeToShowAd(){
boolean flag;
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
String date=df.format(new Date());
if(date.equals("2014-09-05")||date.equals("2014-09-06")||date.equals("2014-09-07")||date.equals("2014-09-08")||date.equals("2014-09-09")||date.equals("2014-09-10")||date.equals("2014-09-11")){
flag=false;
}else{
flag=true;
}
return flag;
}
想添加哪一天就添加哪一天,像小米商城一般有大屏广告就会审核不过,这个可以帮助你审核通过,仅供参考~
8、调用系统自带的分享功能,代码如下:
//分享
public static void shareText(Context context, String title, String text) {
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_SUBJECT, title);
intent.putExtra(Intent.EXTRA_TEXT, text);
context.startActivity(Intent.createChooser(intent, title));
}
调用:
shareText(this,"分享","我正在使用《玩转尾巴》一键换尾巴发微博,想怎么玩就怎么玩!http://a.app.qq.com/o/simple.jsp?pkgname=com.xiaoku.playtail");
9、滑动框架中可以看到设置不可用的方法setSwipeDirectionDisable,但是找不到恢复可用的方法,于是,我在滑动框架中添加一个方法供恢复可用(在ResideMenu.java文件中):
//我自己添加上的方法
public void setSwipeDirectionEnable(int direction){
if(isInDisableDirection(direction)){
disabledSwipeDirection.remove(disabledSwipeDirection.indexOf(direction));
}
}
//框架中有的方法
public void setSwipeDirectionDisable(int direction) {
disabledSwipeDirection.add(direction);
}
本次app开发的过程中,主要学习到了别人框架的简单使用,积分广告的嵌入,广告条也简单,UI的配置及其图标的选择搭配,慢慢熟悉代码。
《玩转尾巴》应用宝下载地址:http://android.myapp.com/myapp/detail.htm?apkName=com.xiaoku.playtail
有疑问请回帖交流,感谢您的阅读~!