package com.yaomei.activity.info;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.content.Intent;
import android.content.pm.ResolveInfo;
import android.database.Cursor;
import android.os.Bundle;
import android.view.GestureDetector;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.view.GestureDetector.OnGestureListener;
import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
import android.widget.ViewFlipper;
import com.yaomei.activity.adapter.AppsAdapter;
import com.yaomei.activity.adapter.SimpleAdapterForPageList;
import com.yaomei.dbHelper.sqliteHelperUtil;
import com.yaomei.model.AppsModel;
import com.yaomei.widget.gridViewExt;
import com.yaomei.widget.pageList;
import com.yaomei.widget.gridViewExt.TableRow;
import com.yaomei.widget.pageList.onItemClickListener;
public class infoActivity extends Activity implements OnGestureListener,
OnTouchListener {
private gridViewExt gridview;
private List<ResolveInfo> mApps;
private List<AppsModel> mAppsModel;
private sqliteHelperUtil dbHelper;
private AppsAdapter adapter;
private SimpleAdapterForPageList simpleAdapter;
private pageList page;
private ViewFlipper viewFlipper;
private int mCurrentLayoutState = 0;
private static final int FLING_MIN_DISTANCE = 100;
private static final int FLING_MIN_VELOCITY = 200;
private GestureDetector mGestureDetector;
private int pageIndxe = 0;
int tableRowId = -1;
int tableColumnId = -1;
int RowCount = 0;
int ColumnCountByRow = 0;
int appCount = -1;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.main);
dbHelper = new sqliteHelperUtil(this);
loadApp();
findView();
// 注册一个用于手势识别的类
mGestureDetector = new GestureDetector(this);
// 给mFlipper设置一个listener
viewFlipper.setOnTouchListener(this);
viewFlipper.setOnClickListener(new viewFlipperClickEvent());
mCurrentLayoutState = 0;
// 允许长按住ViewFlipper,这样才能识别拖动等手势
viewFlipper.setLongClickable(true);
init();
appCount = adapter.getCount();
}
void findView() {
page = (pageList) findViewById(R.id.myPage);
viewFlipper = (ViewFlipper) findViewById(R.id.myFlipper);
}
void init() {
simpleAdapter = new SimpleAdapterForPageList(this, dbHelper.getPage(),
R.layout.page_text, new String[] { "num" },
new int[] { R.id.itemText });
int count = simpleAdapter.getCount();
page.setSimpleAdapter(simpleAdapter);
adapter = new AppsAdapter(this, mAppsModel);
page.setOnItemClick(new pageItemClickEvent());
mCurrentLayoutState = 0;
for (int i = 0; i < count; i++) {
gridview = new gridViewExt(getApplicationContext());
viewFlipper.addView(gridview);
}
gridViewExt grid = (gridViewExt) viewFlipper
.getChildAt(mCurrentLayoutState);
grid.setColumnCount(5);
grid.setAdapter(adapter);
}
/**
* 指定跳转到某个页面
*
* @param switchTo
*/
public void switchLayoutStateTo(int switchTo) {
while (mCurrentLayoutState != switchTo) {
if (mCurrentLayoutState > switchTo) {
mCurrentLayoutState--;
viewFlipper.showPrevious();
} else {
mCurrentLayoutState++;
viewFlipper.showNext();
}
}
pageIndxe = mCurrentLayoutState;
}
/**
* 加载应用程序
*/
void loadApp() {
Intent intent = new Intent(Intent.ACTION_MAIN, null);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
mApps = getPackageManager().queryIntentActivities(intent, 0);
checkAppIsRight(mApps);
mAppsModel = new ArrayList<AppsModel>();
for (ResolveInfo info : mApps) {
if (!info.activityInfo.packageName.equals(getPackageName())) {
if (!dbHelper.isExistsByPackageName(info.activityInfo.name)) {
AppsModel model = new AppsModel();
model.setActivity_Name(info.activityInfo.name);
model.setPackage_Name(info.activityInfo.packageName);
dbHelper.insertAppInfo(model);
}
}
}
loadPage(0, mApps);
}
/**
* 加载分页数据
*
* @param pageNum
* @param info
*/
private void loadPage(final int pageNum, final List<ResolveInfo> info) {
Cursor temp = dbHelper.queryPageById(pageNum);
String packageName = "";
int count = temp.getCount();
for (int i = 0; i < count; i++) {
temp.moveToPosition(i);
packageName = temp.getString(1);
for (ResolveInfo resolver : info) {
if (resolver.activityInfo.name.equals(packageName)) {
AppsModel appsModel = new AppsModel();
appsModel.setActivity_Icon(resolver
.loadIcon(getPackageManager()));
appsModel.setActivity_Name(resolver.activityInfo.name);
appsModel.setPackage_Name(temp.getString(2));
appsModel.setActivity_text(resolver.activityInfo
.loadLabel(getPackageManager()));
mAppsModel.add(appsModel);
}
}
}
temp.close();
}
/**
* 验证系统应用程序是否数量小于数据库保存的数量,如果小于则删除不符合的数据
*
* @param info
*/
private void checkAppIsRight(List<ResolveInfo> info) {
int i = 0;
if (dbHelper.getAllName() != null) {
String[] packageNames = dbHelper.getAllName();
if (info.size() < dbHelper.getAppsCount()) {
for (String packageName : packageNames) {
for (ResolveInfo resolver : info) {
if (packageName
.equals(resolver.activityInfo.packageName)) {
i++;
}
}
if (i == 0) {
dbHelper.deleteAppByPackageName(packageName);
}
}
}
}
}
@Override
public boolean onDown(MotionEvent e) {
// TODO Auto-generated method stub
return false;
}
public class pageItemClickEvent implements onItemClickListener {
@Override
public void onItemClick(int position, View firstView) {
pageIndxe = position;
loadGrid(pageIndxe);
switchLayoutStateTo(pageIndxe);//
appCount = adapter.getCount();
tableRowId = -1;
tableColumnId = -1;
}
}
private void loadGrid(int pagePosition) {
mAppsModel.clear();
loadPage(pagePosition, mApps);
gridViewExt itemGrid = (gridViewExt) viewFlipper
.getChildAt(pagePosition);
itemGrid.setColumnCount(5);
itemGrid.setAdapter(new AppsAdapter(infoActivity.this, mAppsModel));
}
/**
* 向左划动
*/
private void loadPageByLeft() {
if (pageIndxe < simpleAdapter.getCount() - 1) {
pageIndxe++;
loadGrid(pageIndxe);
page.setCheckPage(pageIndxe);//
viewFlipper.showNext();//
mCurrentLayoutState = pageIndxe;
}
}
/**
* 向右划动
*/
private void loadPageByRight() {
if (pageIndxe > 0) {
pageIndxe--;
loadGrid(pageIndxe);
page.setCheckPage(pageIndxe);
viewFlipper.showPrevious();
mCurrentLayoutState = pageIndxe;
}
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
if (e1.getX() - e2.getX() > FLING_MIN_DISTANCE
&& Math.abs(velocityX) > FLING_MIN_VELOCITY) {
loadPageByLeft();
} else if (e2.getX() - e1.getX() > FLING_MIN_DISTANCE
&& Math.abs(velocityX) > FLING_MIN_VELOCITY) {
loadPageByRight();
}
tableRowId = -1;
tableColumnId = -1;
appCount = adapter.getCount();
return false;
}
@Override
public void onLongPress(MotionEvent e) {
// TODO Auto-generated method stub
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
float distanceY) {
// TODO Auto-generated method stub
return false;
}
@Override
public void onShowPress(MotionEvent e) {
// TODO Auto-generated method stub
}
@Override
public boolean onSingleTapUp(MotionEvent e) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
return mGestureDetector.onTouchEvent(eve
没有合适的资源?快使用搜索试试~ 我知道了~
android分页/手势换屏/实用源码
共62个文件
class:30个
java:12个
xml:7个
4星 · 超过85%的资源 需积分: 10 111 下载量 98 浏览量
2011-03-05
11:48:05
上传
评论 1
收藏 124KB RAR 举报
温馨提示
android分页效果、手势换屏效果、及其源码分享 最流行,最时尚,最酷的android效果
资源推荐
资源详情
资源评论
收起资源包目录
getAppInfo.rar (62个子文件)
getAppInfo
AndroidManifest.xml 776B
res
layout
grid_row_layout.xml 768B
page_text.xml 538B
main.xml 2KB
drawable-ldpi
icon.png 2KB
drawable
lessbtn.xml 308B
drawable-mdpi
icon.png 3KB
drawable-hdpi
grid_selector_background_pressed.9.png 2KB
top_num_focus.9.png 592B
icon.png 4KB
top_num_normal.9.png 815B
values
strings.xml 187B
attrs.xml 205B
proguard.cfg 1KB
src
com
yaomei
widget
gridViewExt.java 7KB
ViewFlipper.java 2KB
pageList.java 3KB
model
AppsModel.java 1KB
util
AnimUtil.java 2KB
activity
info
infoActivity.java 12KB
adapter
SimpleAdapterForPageList.java 2KB
AppsAdapter.java 3KB
dbHelper
dbHelperColumn.java 1KB
DataBaseHelper.java 994B
sqliteHelperUtil.java 7KB
bin
com
yaomei
widget
gridViewExt$TableRow.class 1KB
pageList$onItemClickListener.class 268B
gridViewExt.class 8KB
gridViewExt$onLongPressExt.class 266B
ViewFlipper.class 2KB
gridViewExt$1.class 1KB
pageList$1.class 1KB
gridViewExt$onItemClickListener.class 303B
pageList.class 4KB
gridViewExt$2.class 961B
gridViewExt$TableCell.class 581B
model
AppsModel.class 2KB
util
AnimUtil.class 1KB
activity
info
R$styleable.class 563B
infoActivity$pageItemClickEvent.class 1KB
infoActivity$viewFlipperClickEvent.class 1KB
R.class 635B
R$layout.class 484B
R$attr.class 413B
R$id.class 630B
R$string.class 445B
R$drawable.class 580B
infoActivity.class 12KB
adapter
AppsAdapter$btnClickEvent.class 2KB
AppsAdapter.class 4KB
SimpleAdapterForPageList.class 3KB
AppsAdapter$viewHolder.class 2KB
dbHelper
DataBaseHelper.class 1KB
dbHelperColumn.class 1KB
sqliteHelperUtil.class 8KB
getAppInfo.apk 34KB
classes.dex 33KB
resources.ap_ 16KB
.classpath 280B
assets
default.properties 362B
.project 846B
gen
com
yaomei
activity
info
R.java 3KB
共 62 条
- 1
wyyother
- 粉丝: 6
- 资源: 10
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页