欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android開發(fā)之開發(fā)者頭條(一)啟動頁實現(xiàn)

 更新時間:2016年04月17日 10:28:17   作者:AnsenCode  
這篇文章主要介紹了Android開發(fā)之開發(fā)者頭條(一)啟動頁實現(xiàn)的相關(guān)資料,需要的朋友可以參考下

廢話就不多說了,開始今天的正題,帶你實現(xiàn)開發(fā)者頭條APP的啟動頁。

一.老規(guī)矩,先上效果圖



從效果圖中我們可以看出,整個滑動的界面就是一個ViewPager實現(xiàn),然后監(jiān)聽ViewPager的滑動事件,改變底部四個小圖標的切換,以及跳轉(zhuǎn)到首頁的按鈕的隱藏顯示。

二.代碼實現(xiàn)

1).整個布局文件。上面是ViewPager,下面是四個小圖標存放的容器。

<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"
android:background="#FCF2E4">
<android.support.v4.view.ViewPager
android:id="@+id/viewpager_launcher"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/viewGroup"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginBottom="30dp"
android:gravity="center_horizontal"
android:orientation="horizontal"/>
</RelativeLayout>
</RelativeLayout>

2).LauncherActivity 首先判斷是否第一次啟動,如果不是第一次直接進入首頁,是第一次啟動就初始化ViewPager,設(shè)置適配器,設(shè)置ViewPager滑動監(jiān)聽,然后添加底部的。。。View。 在Viewpager監(jiān)聽函數(shù)里面改變底部圖標的選中狀態(tài),如果是最后一頁顯示“開啟我的頭條”按鈕。

/**
* 第一次啟動頁面
* 
* @author Ansen
* @create time 2016-04-15
*/
@SuppressLint("ResourceAsColor")
public class LauncherActivity extends FragmentActivity implements ILauncherView {
private ViewPager viewpagerLauncher;
private LauncherPagerAdapter adapter;
private ImageView[] tips;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_luancher);
if(!isFirst()){
gotoMain();
}
viewpagerLauncher = (ViewPager) findViewById(R.id.viewpager_launcher);
adapter = new LauncherPagerAdapter(this, this);
viewpagerLauncher.setOffscreenPageLimit(2);
viewpagerLauncher.setCurrentItem(0);
viewpagerLauncher.setOnPageChangeListener(changeListener);
viewpagerLauncher.setAdapter(adapter);
viewpagerLauncher.setOnPageChangeListener(changeListener);
ViewGroup group = (ViewGroup) findViewById(R.id.viewGroup);// 初始化底部顯示控件
tips = new ImageView[4];
for (int i = 0; i < tips.length; i++) {
ImageView imageView = new ImageView(this);
if (i == 0) {
imageView.setBackgroundResource(R.drawable.page_indicator_focused);
} else {
imageView.setBackgroundResource(R.drawable.page_indicator_unfocused);
}
tips[i] = imageView;
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(new ViewGroup.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));
layoutParams.leftMargin = 10;// 設(shè)置點點點view的左邊距
layoutParams.rightMargin = 10;// 設(shè)置點點點view的右邊距
group.addView(imageView, layoutParams);
}
}
private OnPageChangeListener changeListener = new OnPageChangeListener() {
@Override
public void onPageScrollStateChanged(int arg0) {}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {}
@Override
public void onPageSelected(int index) {
setImageBackground(index);// 改變點點點的切換效果
TextView tvStartHeadlines = (TextView) adapter.getViews().get(index).findViewById(R.id.tv_start_headlines);
if (index == tips.length - 1) {// 最后一個
tvStartHeadlines.setVisibility(View.VISIBLE);
} else {
tvStartHeadlines.setVisibility(View.INVISIBLE);
}
}
};
/**
* 改變點點點的切換效果
* @param selectItems
*/
private void setImageBackground(int selectItems) {
for (int i = 0; i < tips.length; i++) {
if (i == selectItems) {
tips[i].setBackgroundResource(R.drawable.page_indicator_focused);
} else {
tips[i].setBackgroundResource(R.drawable.page_indicator_unfocused);
}
}
}
@Override
public void gotoMain() {
Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);
finish();
}
private boolean isFirst() {
SharedPreferences setting = getSharedPreferences("headlines", 0);
Boolean user_first = setting.getBoolean("FIRST", true);
if (user_first) {// 第一次
setting.edit().putBoolean("FIRST", false).commit();
return true;
} else {
return false;
}
}
}

3).LauncherPagerAdapter 繼承PagerAdapter,在構(gòu)造函數(shù)中初始化要顯示的所有頁面,其他的跟普通的適配器沒啥區(qū)別,就多了兩個重寫的方法,destroyItem跟instantiateItem。destroyItem是刪除一個頁面,instantiateItem是加載一個頁面。。

/**
* ViewPager適配器
* @author ansen
* @create time 2016-04-15
*/
public class LauncherPagerAdapter extends PagerAdapter implements OnClickListener{
private ILauncherView launcherView;
private List<View> views;
//每頁顯示的圖片
private int[] images=new int[]{R.drawable.tutorial_1,R.drawable.tutorial_2,R.drawable.tutorial_3,R.drawable.tutorial_4};
public LauncherPagerAdapter(Context context,ILauncherView launcherView){
views=new ArrayList<View>();
this.launcherView=launcherView;
//初始化每頁顯示的View
for(int i=0;i<images.length;i++){
View item=LayoutInflater.from(context).inflate(R.layout.activity_luancher_pager_item, null);
ImageView imageview=(ImageView) item.findViewById(R.id.imageview);
imageview.setImageResource(images[i]);
item.findViewById(R.id.tv_start_headlines).setOnClickListener(this);
views.add(item);
}
}
public List<View> getViews() {
return views;
}
@Override
public int getCount() {
return views == null ? 0 : views.size();
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0==arg1;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object){
((ViewPager) container).removeView(views.get(position));
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
((ViewPager) container).addView(views.get(position), 0);
return views.get(position);
}
@Override
public void onClick(View v) {
launcherView.gotoMain();
}
}

4).還有每一頁顯示的item布局,以及“開啟我的頭條”按鈕的背景shape我就不一一貼出來了。

關(guān)于 Android開發(fā)之開發(fā)者頭條(一)啟動頁實 就給大家介紹這么多。下篇文章給大家介紹Android開發(fā)之開發(fā)者頭條(二)實現(xiàn)左滑菜單,感興趣的朋友繼續(xù)關(guān)注腳本之家網(wǎng)站!

相關(guān)文章

  • Android?Studio簡單實現(xiàn)自定義日歷

    Android?Studio簡單實現(xiàn)自定義日歷

    這篇文章主要為大家詳細介紹了Android?Studio簡單實現(xiàn)自定義日歷,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • Android 實例開發(fā)一個學(xué)生管理系統(tǒng)流程詳解

    Android 實例開發(fā)一個學(xué)生管理系統(tǒng)流程詳解

    讀萬卷書不如行萬里路,只學(xué)書上的理論是遠遠不夠的,只有在實戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用Java實現(xiàn)一個學(xué)生管理系統(tǒng),大家可以在過程中查缺補漏,提升水平
    2021-11-11
  • Android編程實現(xiàn)的EditText彈出打開和關(guān)閉工具類

    Android編程實現(xiàn)的EditText彈出打開和關(guān)閉工具類

    這篇文章主要介紹了Android編程實現(xiàn)的EditText彈出打開和關(guān)閉工具類,涉及Android輸入框EditText彈出打開和關(guān)閉功能簡單實現(xiàn)技巧,需要的朋友可以參考下
    2018-02-02
  • Android ConstraintLayout約束布局使用詳解

    Android ConstraintLayout約束布局使用詳解

    ConstraintLayout 即約束布局,也是 Android Studio 的默認布局,它可以減少布局的層級,改善布局性能。不夸張地說,它基本上可以實現(xiàn)任何你想要的布局效果,下面,咱們一起來瞧瞧吧
    2022-11-11
  • 解決Android 虛擬按鍵遮住了頁面內(nèi)容的問題

    解決Android 虛擬按鍵遮住了頁面內(nèi)容的問題

    今天小編就為大家分享一篇解決Android 虛擬按鍵遮住了頁面內(nèi)容的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • Android編程圖片操作類定義與用法示例【拍照,相冊選圖及裁剪】

    Android編程圖片操作類定義與用法示例【拍照,相冊選圖及裁剪】

    這篇文章主要介紹了Android編程圖片操作類定義與用法,涉及Android拍照,相冊選圖及裁剪等圖片操作功能及權(quán)限控制相關(guān)操作技巧,需要的朋友可以參考下
    2018-02-02
  • android實現(xiàn)背景音樂播放功能

    android實現(xiàn)背景音樂播放功能

    這篇文章主要為大家詳細介紹了android實現(xiàn)背景音樂播放功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • android studio3.0以上如何通過navicat訪問SQLite數(shù)據(jù)庫文件

    android studio3.0以上如何通過navicat訪問SQLite數(shù)據(jù)庫文件

    這篇文章主要介紹了android studio3.0以上如何通過navicat訪問SQLite數(shù)據(jù)庫文件,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧
    2020-06-06
  • 全面解析Android之ANR日志

    全面解析Android之ANR日志

    不論從事安卓應(yīng)用開發(fā),還是安卓系統(tǒng)研發(fā),應(yīng)該都遇到應(yīng)用無響應(yīng)(簡稱ANR)問題,當應(yīng)用程序一段時間無法及時響應(yīng),則會彈出ANR對話框,讓用戶選擇繼續(xù)等待,還是強制關(guān)閉。本文將帶你全面解析Android之ANR日志
    2021-06-06
  • Android游戲開發(fā) 自定義手勢--輸入法手勢技術(shù)

    Android游戲開發(fā) 自定義手勢--輸入法手勢技術(shù)

    本文主要介紹 Android游戲開發(fā)中自定義手勢--輸入法手勢技術(shù),這里提供了實現(xiàn)效果圖以及示例代碼,有開發(fā)手機游戲的朋友可以參考下
    2016-08-08

最新評論