Android高仿360安全卫士--布局篇

举报
ShaderJoy 发表于 2021/12/29 23:24:30 2021/12/29
【摘要】 转自:http://blog.csdn.net/wangjinyu501/article/details/8083373  最近模仿360手机卫士,做了一个Demo。看了一下360的布局文件,发现它是自定义的View,而不是官方提供的基本组件的组合。效果如下图所示: 这个Demo是可以左右滑...

转自:http://blog.csdn.net/wangjinyu501/article/details/8083373

 最近模仿360手机卫士,做了一个Demo。看了一下360的布局文件,发现它是自定义的View,而不是官方提供的基本组件的组合。效果如下图所示:




这个Demo是可以左右滑动的,并且可以在布局文件中添加组件点击事件。主要是利用ViewPager类来实现的。


  
  1. public class Main360Activity extends Activity
  2. {
  3. private ViewPager awesomePager;
  4. private LinearLayout lin1, lin2;
  5. private Context cxt;
  6. private AwesomePagerAdapter awesomeAdapter;
  7. private LayoutInflater mInflater;
  8. private List<View> mListViews;
  9. boolean result = true;
  10. public void onCreate(Bundle savedInstanceState)
  11. {
  12. super.onCreate(savedInstanceState);
  13. setContentView(R.layout.main360);
  14. cxt = this;
  15. lin1 = (LinearLayout) findViewById(R.id.lin1);
  16. lin2 = (LinearLayout) findViewById(R.id.lin2);
  17. awesomeAdapter = new AwesomePagerAdapter();
  18. awesomePager = (ViewPager) findViewById(R.id.awesomepager);
  19. awesomePager.setAdapter(awesomeAdapter);
  20. mListViews = new ArrayList<View>();
  21. mInflater = getLayoutInflater();
  22. mListViews.add(mInflater.inflate(R.layout.tab360, null));
  23. mListViews.add(mInflater.inflate(R.layout.tab360, null));
  24. }
  25. private class AwesomePagerAdapter extends PagerAdapter
  26. {
  27. public int getCount()
  28. {
  29. return mListViews.size();
  30. }
  31. public Object instantiateItem(View collection, int position)
  32. {
  33. ((ViewPager) collection).addView(mListViews.get(position), 0);
  34. if (position == 0)
  35. {
  36. ImageView download_btn = (ImageView) collection
  37. .findViewById(R.id.download_btn);
  38. download_btn.setOnClickListener(new View.OnClickListener()
  39. {
  40. public void onClick(View v)
  41. {
  42. // if (result == true)
  43. // {
  44. //
  45. // lin1.scrollBy(0, 0);
  46. //
  47. // lin1.scrollTo(80, 0);
  48. //
  49. // lin1.setPadding(0, 30, 0, 30);
  50. //
  51. // lin2.setVisibility(View.VISIBLE);
  52. //
  53. // result = false;
  54. //
  55. // } else
  56. // {
  57. //
  58. // lin1.setPadding(10, 30, 0, 30);
  59. //
  60. // lin1.scrollBy(80, 0);
  61. //
  62. // lin1.scrollTo(0, 0);
  63. //
  64. // lin2.setVisibility(View.GONE);
  65. //
  66. // result = true;
  67. // }
  68. }
  69. });
  70. // }
  71. // });
  72. } else
  73. {
  74. ImageView download_btn = (ImageView) collection
  75. .findViewById(R.id.download_btn);
  76. download_btn.setOnClickListener(new View.OnClickListener()
  77. {
  78. public void onClick(View v)
  79. {
  80. new AlertDialog.Builder(Main360Activity.this)
  81. .setTitle("说明")
  82. .setMessage("单个页卡内按钮事件测试")
  83. .setNegativeButton("确定",
  84. new DialogInterface.OnClickListener()
  85. {
  86. public void onClick(
  87. DialogInterface dialog,
  88. int which)
  89. {
  90. }
  91. }).show();
  92. }
  93. });
  94. }
  95. return mListViews.get(position);
  96. }
  97. public void destroyItem(View collection, int position, Object view)
  98. {
  99. ((ViewPager) collection).removeView(mListViews.get(position));
  100. }
  101. public boolean isViewFromObject(View view, Object object)
  102. {
  103. return view == (object);
  104. }
  105. public void finishUpdate(View arg0)
  106. {
  107. }
  108. public void restoreState(Parcelable arg0, ClassLoader arg1)
  109. {
  110. }
  111. public Parcelable saveState()
  112. {
  113. return null;
  114. }
  115. public void startUpdate(View arg0)
  116. {
  117. }
  118. }
  119. // @Override
  120. // public boolean onCreateOptionsMenu(Menu menu)
  121. // {
  122. // getMenuInflater().inflate(R.menu.activity_main, menu);
  123. // return true;
  124. // }
  125. }
  main360.xml的内容如下:


  
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. xmlns:tools="http://schemas.android.com/tools"
  4. android:layout_width="match_parent"
  5. android:layout_height="match_parent" >
  6. <android.support.v4.view.ViewPager
  7. android:id="@+id/awesomepager"
  8. android:layout_width="match_parent"
  9. android:layout_height="match_parent" >
  10. </android.support.v4.view.ViewPager>
  11. </RelativeLayout>


  
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="fill_parent"
  4. android:layout_height="fill_parent" >
  5. <LinearLayout
  6. android:id="@+id/lin1"
  7. android:layout_width="fill_parent"
  8. android:layout_height="fill_parent"
  9. android:background="@drawable/background"
  10. android:baselineAligned="false"
  11. android:orientation="horizontal"
  12. android:paddingBottom="30dp"
  13. android:paddingLeft="10dp"
  14. android:paddingTop="30dp" >
  15. <LinearLayout
  16. android:layout_width="wrap_content"
  17. android:layout_height="fill_parent"
  18. android:layout_weight="1"
  19. android:orientation="vertical" >
  20. <LinearLayout
  21. android:layout_width="fill_parent"
  22. android:layout_height="wrap_content"
  23. android:orientation="horizontal" >
  24. <LinearLayout
  25. android:layout_width="108dp"
  26. android:layout_height="108dp"
  27. android:background="#FF7F24" >
  28. </LinearLayout>
  29. <LinearLayout
  30. android:layout_width="108dp"
  31. android:layout_height="108dp"
  32. android:layout_marginLeft="5dp"
  33. android:background="#FF7F24" >
  34. </LinearLayout>
  35. </LinearLayout>
  36. <LinearLayout
  37. android:layout_width="fill_parent"
  38. android:layout_height="wrap_content"
  39. android:layout_marginTop="5dp"
  40. android:orientation="horizontal" >
  41. <LinearLayout
  42. android:layout_width="108dp"
  43. android:layout_height="108dp"
  44. android:background="#3399ff" >
  45. </LinearLayout>
  46. <LinearLayout
  47. android:layout_width="108dp"
  48. android:layout_height="108dp"
  49. android:layout_marginLeft="5dp"
  50. android:background="#3399ff" >
  51. </LinearLayout>
  52. </LinearLayout>
  53. <LinearLayout
  54. android:layout_width="fill_parent"
  55. android:layout_height="wrap_content"
  56. android:layout_marginTop="5dp"
  57. android:orientation="horizontal" >
  58. <LinearLayout
  59. android:layout_width="108dp"
  60. android:layout_height="108dp"
  61. android:background="#3399ff" >
  62. </LinearLayout>
  63. <LinearLayout
  64. android:layout_width="108dp"
  65. android:layout_height="108dp"
  66. android:layout_marginLeft="5dp"
  67. android:background="#3399ff" >
  68. </LinearLayout>
  69. </LinearLayout>
  70. <LinearLayout
  71. android:layout_width="fill_parent"
  72. android:layout_height="wrap_content"
  73. android:layout_marginTop="5dp"
  74. android:orientation="horizontal" >
  75. <LinearLayout
  76. android:layout_width="108dp"
  77. android:layout_height="108dp"
  78. android:background="#953399ff" >
  79. </LinearLayout>
  80. <LinearLayout
  81. android:layout_width="108dp"
  82. android:layout_height="108dp"
  83. android:layout_marginLeft="5dp"
  84. android:background="#953399ff" >
  85. </LinearLayout>
  86. </LinearLayout>
  87. </LinearLayout>
  88. <LinearLayout
  89. android:layout_width="wrap_content"
  90. android:layout_height="fill_parent"
  91. android:layout_weight="1"
  92. android:orientation="vertical" >
  93. <RelativeLayout
  94. android:layout_width="match_parent"
  95. android:layout_height="fill_parent" >
  96. <LinearLayout
  97. android:layout_width="wrap_content"
  98. android:layout_height="wrap_content"
  99. android:layout_alignParentBottom="true"
  100. android:orientation="vertical" >
  101. <ImageView
  102. android:id="@+id/download_btn"
  103. android:layout_width="36dp"
  104. android:layout_height="36dp"
  105. android:src="@drawable/a" />
  106. <ImageView
  107. android:id="@+id/delete_btn"
  108. android:layout_width="36dp"
  109. android:layout_height="36dp"
  110. android:layout_marginTop="20dp"
  111. android:src="@drawable/b" />
  112. <ImageView
  113. android:id="@+id/set_btn"
  114. android:layout_width="36dp"
  115. android:layout_height="36dp"
  116. android:layout_marginTop="20dp"
  117. android:src="@drawable/c" />
  118. <ImageView
  119. android:id="@+id/etra_btn"
  120. android:layout_width="36dp"
  121. android:layout_height="36dp"
  122. android:layout_marginTop="20dp"
  123. android:src="@drawable/ic_launcher" />
  124. </LinearLayout>
  125. </RelativeLayout>
  126. </LinearLayout>
  127. </LinearLayout>
  128. <LinearLayout
  129. android:id="@+id/lin2"
  130. android:layout_width="wrap_content"
  131. android:layout_height="fill_parent"
  132. android:layout_gravity="right"
  133. android:background="#000000"
  134. android:orientation="vertical"
  135. android:visibility="gone" >
  136. <TextView
  137. android:layout_width="80dp"
  138. android:layout_height="fill_parent"
  139. android:text="dddddddddddd" />
  140. </LinearLayout>
  141. </FrameLayout>

 关于Viewpager的用法大家可以去看一下资料,在此不再详述。这个tab.xml就是用来切换的布局,也就是左右滑动的布局文件。我们在这里用来两个切换布局,可以根据自己的需求动态增删。但是,仔细看官方的程序我们发现,它的背景是不变的。就这需要使用其他的方法来实现,也就是自定义View,下一节将讲述如何自定义View来实现。

需要源码的朋友可以留一下你的邮箱。

其他UI设计日志链接如下:

仿微信导航

仿微信主界面

仿QQ登陆

仿QQ空间





文章来源: panda1234lee.blog.csdn.net,作者:panda1234lee,版权归原作者所有,如需转载,请联系作者。

原文链接:panda1234lee.blog.csdn.net/article/details/8800135

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。