Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android,viewpage實現應用程序員寶典;擴展包不管什麼android版本都可以用;第一次安裝使用從封面到提示幫助界面

android,viewpage實現應用程序員寶典;擴展包不管什麼android版本都可以用;第一次安裝使用從封面到提示幫助界面

編輯:關於Android編程

android.support.v4.view.ViewPager擴展包的類,還有地圖api什麼的引入的包這些只要你項目引入該包,該類不用考慮用戶的手機版本

首先進入封面,剛進去的提示幫助界面,第一次安裝使用時出現,以後不出現

xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent" >



android:layout_width="match_parent"
android:layout_alignParentBottom="true"
android:layout_marginBottom="50dp"
android:layout_height="10dp"
android:gravity="center"
android:orientation="horizontal" >
android:id="@+id/position_point_01"
android:layout_width="10dp"
android:layout_height="10dp"
android:background="#00ff00" />
android:layout_width="10dp"
android:layout_height="10dp" />


android:id="@+id/position_point_02"
android:layout_width="10dp"
android:layout_height="10dp"
android:background="#666666" />
android:layout_width="10dp"
android:layout_height="10dp" />
android:id="@+id/position_point_03"
android:layout_width="10dp"
android:layout_height="10dp"
android:background="#666666" />
android:layout_width="10dp"
android:layout_height="10dp" />
android:id="@+id/position_point_04"
android:layout_width="10dp"
android:layout_height="10dp"
android:background="#666666" />


幫助界面的圖片viewpager容器

package com.kane.interviewcollection;
import java.util.ArrayList;
import java.util.List;
import com.kane.interviewcollection.adapter.MyPageAdapter;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TextView;
public class HelpActivity extends Activity {
private ViewPager pager;
private MyPageAdapter pageAdapter;
private List allViews = new ArrayList();
private TextView[] allPoints = new TextView[4];
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_help);
pager = (ViewPager) findViewById(R.id.pager);
//設置viewpager保存的view,若不設置,會一直添加經歷過的view,會有bug
pager.setOffscreenPageLimit(3);
allPoints[0] = (TextView) findViewById(R.id.position_point_01);
allPoints[1] = (TextView) findViewById(R.id.position_point_02);
allPoints[2] = (TextView) findViewById(R.id.position_point_03);
allPoints[3] = (TextView) findViewById(R.id.position_point_04);
// 初始化數據
allViews.add(LayoutInflater.from(this).inflate(R.layout.page_01, null));
allViews.add(LayoutInflater.from(this).inflate(R.layout.page_02, null));
allViews.add(LayoutInflater.from(this).inflate(R.layout.page_03, null));
// 單獨為第四個界面加入監聽,進入主界面
View page4 = LayoutInflater.from(this).inflate(R.layout.page_04, null);
page4.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent in = new Intent(HelpActivity.this, MainActivity.class);
startActivity(in);
finish();
}
});
allViews.add(page4);
pageAdapter = new MyPageAdapter(allViews);
pager.setAdapter(pageAdapter);
// 為pager加入監聽
pager.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int arg0) {
// 改變顏色
for (int i = 0; i < allPoints.length; i++) {
allPoints[i].setBackgroundColor(Color.parseColor("#666666"));
}
allPoints[arg0].setBackgroundColor(Color.GREEN);
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
@Override
public void onPageScrollStateChanged(int arg0) {
}
});
}
}

主界面

package com.kane.interviewcollection;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;


import com.kane.interviewcollection.adapter.MyPageAdapter;
import com.kane.interviewcollection.adapter.QuestionAdapter;
import com.kane.interviewcollection.util.DialogManager;
import com.kane.interviewcollection.util.ExitApplication;
import com.kane.interviewcollection.util.Globals;
import com.kane.interviewcollection.util.QuesstionDAOUtils;


import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.graphics.Color;


import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.KeyEvent;
import android.view.LayoutInflater;


import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AbsListView;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.PopupWindow;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.AbsListView.OnScrollListener;
import android.widget.AdapterView.OnItemClickListener;
/**
* 既能實現滑動切換,也能實現點擊切換
* @author lenovo
*
*/
public class Main2Activity extends Activity {
private ViewPager pager;
TextView titleText;
private Button settingBtn;
// 下面的三個按鈕
private Button[] bottomBtns = new Button[3];

// 未選中的按鈕圖片
private int[] allBottomImgs = { R.drawable.bottom_icon01_a,
R.drawable.bottom_icon02_a, R.drawable.bottom_icon03_a };
// 選中的按鈕圖片
private int[] allBottomImgsSelected = { R.drawable.bottom_icon01_b,
R.drawable.bottom_icon02_b, R.drawable.bottom_icon03_b };


// 聲明循環為了在內部類使用
private int i;


// 點擊設置按鈕的浮動窗口
private PopupWindow win;
private MyPageAdapter pageAdapter;
private List allViews = new ArrayList();


// 所有頭部要顯示的標題內容
private String[] allTitleText = { "程序員面試寶典", "全部問題", "搜索問題" };




@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ExitApplication.getInstance().addActivity(this);//每個activity創建的時候添加到activity列表
setContentView(R.layout.activity_main2);
//進行頭部和尾部的初始化
init("程序員面試寶典", 0);

//保存一個標志,表示程序打開過,下次進來不用幫助界面,這裡的SharedPreferences類似web的application,取得是在cover中同一個
SharedPreferences s=getSharedPreferences("question_flag",
MODE_PRIVATE);
if (!s.getBoolean("showed", false)) {
Editor e=s.edit();
e.putBoolean("showed", true);
e.commit();
}
pager=(ViewPager)findViewById(R.id.pager);
//設置viewpager保存的view,若不設置,會一直添加經歷過的view,會有bug
pager.setOffscreenPageLimit(3);
//添加界面
allViews.add(LayoutInflater.from(this).inflate(R.layout.page_main, null));

View questionView=LayoutInflater.from(this).inflate(R.layout.page_question,null);
//初始問題列表
initQuestionList(questionView);
allViews.add(questionView);
View searchView=LayoutInflater.from(this).inflate(R.layout.page_search, null);
initSearch(searchView);
allViews.add(searchView);

pageAdapter=new MyPageAdapter(allViews);
pager.setAdapter(pageAdapter);

//為pager設置一個監聽,當頁面滑動切換時,可以調整頭部和尾部信息
pager.setOnPageChangeListener(new OnPageChangeListener() {

@Override
public void onPageSelected(int arg0) {
// 調整頭部的文字
titleText.setText(allTitleText[arg0]);
if (arg0==1&&!keyword.equals("")) {
titleText.setText("搜索: " + keyword);
}
//調整底部按鈕顯示
for (int i = 0; i < bottomBtns.length; i++) {
if (i==arg0) {
bottomBtns[i].setBackgroundResource(allBottomImgsSelected[i]);
}
else {
bottomBtns[i].setBackgroundResource(allBottomImgs[i]);
}
}
}

@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// TODO Auto-generated method stub

}

@Override
public void onPageScrollStateChanged(int arg0) {
// TODO Auto-generated method stub

}
});

}

private ListView listView;
private QuestionAdapter adapter;
private List> allValues=new ArrayList>();
//聲明幾個分頁的變量
private int pageNo=1;
private int pageSize=20;
private int count=0;
private int allPages=0;
private String keyword="";
//為了調用滑動事件中的內部類的另一個方法的參數
private int first;
private int visCount;
private int total;

private TextView footerText;
public void initQuestionList(View questionListView) {
listView=(ListView)questionListView.findViewById(R.id.list);
//接收關鍵字
keyword=getIntent().getStringExtra("keyword");
if (keyword==null) {
init("全部問題",1);
keyword="";
}
else{
//如果有關鍵詞傳入
init("搜索:"+keyword,1);
}
allValues=QuesstionDAOUtils.listDataPage(pageNo,pageSize,keyword);
//查詢記錄數
count=QuesstionDAOUtils.getAllCount(keyword);
//計算總頁數
allPages=(count-1)/pageSize+1;

//加入一個提示的底部信息,每次下拉到分頁的最後一個item
footerText=new TextView(this);
footerText.setText("z正在查詢,請稍後.............");
footerText.setTextColor(Color.BLACK);
footerText.setTextSize(14);
listView.addFooterView(footerText);

//把數據加入到adapter裡
adapter=new QuestionAdapter(this, allValues);
listView.setAdapter(adapter);
//加入監聽,點擊後才可以看到答案
listView.setOnItemClickListener(new OnItemClickListener(){


@Override
public void onItemClick(AdapterView arg0, View arg1, int arg2,
long arg3) {
//取得數據
Map map=allValues.get(arg2);
LinearLayout line =(LinearLayout)arg1;//arg1是當前行界面
if(line.getChildCount()==1){//裡面只有問題那一個textview
//加入答案的textview
TextView text = new TextView(Main2Activity.this);
text.setText(map.get("answer").toString());
text.setTextSize(14);
text.setTextColor(Color.RED);


line.addView(text);
map.put("showFlag", true);
}
else{
//刪除答案提示
line.removeViewAt(1);
map.put("showFlag", false);
}


}

});

/**
* 滑動列表事件
*/
listView.setOnScrollListener(new OnScrollListener(){


@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
first = firstVisibleItem;
visCount = visibleItemCount;
total = totalItemCount;

}


@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
if(scrollState==OnScrollListener.SCROLL_STATE_IDLE&&
first+visCount==total&&total!=0){
if(pageNo //可以查詢下一條數據
pageNo++;
//將新查詢的數據合並到原有的數據集合
allValues.addAll(QuesstionDAOUtils.listDataPage(pageNo,
pageSize,keyword));
//通知界面修改
adapter.notifyDataSetChanged();
}
else{
// 已經查詢了全部的數據,將footer刪除
if (listView.getFooterViewsCount() > 0) {
listView.removeFooterView(footerText);
}
}
}

}});
}

private Button searchBtn;
private EditText searchText;
public void initSearch(View searchView) {
init("搜索問題",2);
searchBtn=(Button) searchView.findViewById(R.id.searchBtn);
searchText=(EditText)searchView.findViewById(R.id.searchText);
searchBtn.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
keyword=searchText.getText().toString();
//將列表數據重新查詢
pageNo=1;
allValues.clear();
allValues.addAll(QuesstionDAOUtils.listDataPage(pageNo, pageSize, keyword));
//重新顯示列表
adapter.notifyDataSetChanged();
//滑動回列表界面
pager.setCurrentItem(1,true);//1表示問題界面,true表示有變化過程

}
});
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
new DialogManager().showExitHit(this);
return false;//執行上面,而不是默認的關閉activity
}
return super.onKeyDown(keyCode, event);//其他鍵原有功能保存
}

public void init(String title, int selectedBtn) {
// 分別取得公共界面的組件
settingBtn = (Button) findViewById(R.id.settingBtn);
titleText = (TextView) findViewById(R.id.title);
bottomBtns[0] = (Button) findViewById(R.id.bottom01);
bottomBtns[1] = (Button) findViewById(R.id.bottom02);
bottomBtns[2] = (Button) findViewById(R.id.bottom03);
// 每個界面的標題不一樣
titleText.setText(title);
// 循環為底部的按鈕加入監聽,這裡的i內部類要用,在外面聲明了
for (i = 0; i < bottomBtns.length; i++) {
// 定義個臨時變量,防止i一直自增,因為循環完一邊後i已經是2了,第二次循環一開始內部類中就是3了
final int temp = i;
if (i == selectedBtn) {
// 選中的
bottomBtns[i].setBackgroundResource(allBottomImgsSelected[i]);
} else {
// 沒有選中的
bottomBtns[i].setBackgroundResource(allBottomImgs[i]);
// 加入監聽
bottomBtns[i].setOnClickListener(new OnClickListener() {


@Override
public void onClick(View v) {
if (temp==1) {
keyword="";
}
// 底部按鈕點擊後,應該自動切換到對應的界面
pager.setCurrentItem(temp, true);
}
});
}
}
/**
* 設置按鈕的監聽事件
*/
settingBtn.setOnClickListener(new OnClickListener() {


@Override
public void onClick(View v) {
// 沒有浮動框要添加
if (win == null) {
// 先設置寬高,再設置界面
win = new PopupWindow(Globals.SCREEN_WIDTH / 4,
Globals.SCERRN_HEIGHT / 6);
View view = LayoutInflater.from(Main2Activity.this).inflate(
R.layout.float_window, null);
win.setContentView(view);


// 加入這些內部按鈕的監聽
TextView versionText = (TextView) view
.findViewById(R.id.show_version);
TextView authText = (TextView) view
.findViewById(R.id.about_author);
TextView exitText = (TextView) view.findViewById(R.id.exit);
versionText.setOnClickListener(new OnClickListener() {


@Override
public void onClick(View v) {
Toast.makeText(Main2Activity.this, "當前版本是: 1.0",
Toast.LENGTH_LONG).show();
win.dismiss();// 關閉窗口


}
});
authText.setOnClickListener(new OnClickListener() {


@Override
public void onClick(View v) {
Builder builder = new Builder(Main2Activity.this);
builder.setTitle("提示");
builder.setMessage("本作品由needkane發布,歡迎使用");
builder.setNegativeButton("關閉",
new DialogInterface.OnClickListener() {


@Override
public void onClick(
DialogInterface dialog,
int which) {
// TODO Auto-generated method stub


}
});


builder.create().show();
win.dismiss();// 浮動窗口消失
}
});
exitText.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// 退出程序
}
});
}
if (win.isShowing()) {
// 隱藏
win.dismiss();
} else {
// 顯示
win.showAsDropDown(settingBtn);
}
}
});
}


}

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved