首页 文章 精选 留言 我的

精选列表

搜索[安卓系统],共10021篇文章
优秀的个人博客,低调大师

用NumGo实现安卓动画

NumGo是对0~1在一段时间内的变化进行监听的数值生成器(支持插值器),可以根据这些数值实现动画。 项目源码在github,欢迎star:https://github.com/toly1994328/NumGo 一:简单使用:让textView旋转360度动画 mId_tv_hello = findViewById(R.id.id_tv_hello); new NumGo().setOnUpdate(new NumGo.OnUpdate() { @Override public void onUpdate(float rate) { mId_tv_hello.setRotation(rate *360); } }).go(); 简单使用效果 二:基本使用 NumGo numGo = new NumGo(true, 5, 1000); ///////////用构造函数,等价下面三句//////////////////////////// // //设置重复方式 是否是回返式,及0~1后再1~0 /// // numGo.setReverse(true);//0-->1--|1-->0 /// // //numGo.setReverse(false);//0-->1--|0-->1 /// // //设置重复次数 -1无限重复 /// // numGo.setRepeatCount(5); /// // //设置时间 /// // numGo.setTime(10000); /// //更新时监听 numGo.setOnUpdate(new NumGo.OnUpdate() { @Override public void onUpdate(float rate) { mId_tv_hello.setTranslationX(100 * rate); } }); //停止时监听 numGo.setOnStop(new NumGo.OnStop() { @Override public void onStop() { mId_tv_hello.setText("I was Stopped"); } }); //重复时监听 numGo.setOnRepeat(new NumGo.OnRepeat() { @Override public void onRepeat(int count) { mId_tv_hello.setText(mId_tv_hello.getText() + ":" + count); } }); numGo.go();//运行 // numGo.end();//停止 } 基本使用效果 三:插值器使用:目前定义四个简单的插值器 使用 mNumGo1.setInterpolator(new D_Sin_Inter()) 下面四种插值器效果比较 sin式减速 mNumGo1 = new NumGo(); mNumGo1.setInterpolator(new D_Sin_Inter()); mNumGo1.setOnUpdate(new NumGo.OnUpdate() { @Override public void onUpdate(float rate) { mSinD.setTranslationY(-1200 * rate); } }); sin式加速 mNumGo2 = new NumGo(); mNumGo2.setInterpolator(new A_Sin_Inter()); mNumGo2.setOnUpdate(new NumGo.OnUpdate() { @Override public void onUpdate(float rate) { mSinA.setTranslationY(-1200 * rate); } }); x平方式减速: mNumGo3 = new NumGo(); mNumGo3.setInterpolator(new D_X2_Inter()); mNumGo3.setOnUpdate(new NumGo.OnUpdate() { @Override public void onUpdate(float rate) { mXD.setTranslationY(-1200 * rate); } }); x平方式加速: mNumGo4 = new NumGo(); mNumGo4.setInterpolator(new A_X2_Inter()); mNumGo4.setOnUpdate(new NumGo.OnUpdate() { @Override public void onUpdate(float rate) { mXA.setTranslationY(-1200 * rate); } }); 运行: @OnClick(R.id.start) public void onViewClicked() { mNumGo1.go(); mNumGo2.go(); mNumGo3.go(); mNumGo4.go(); }

优秀的个人博客,低调大师

安卓注册登录界面示例

版权声明:本文可能为博主原创文章,若标明出处可随便转载。 https://blog.csdn.net/Jailman/article/details/78020173 AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="online.geekgalaxy.layoutlearn"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".login"> <intent-filter> <action android:name="android.intent.action.MAIN" /> </intent-filter> </activity> <activity android:name=".register"> <intent-filter> <action android:name="android.intent.action.MAIN" /> </intent-filter> </activity> </application> </manifest> MainActivity.java package online.geekgalaxy.layoutlearn; import android.content.DialogInterface; import android.content.Intent; import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //login button final Button login = (Button) findViewById(R.id.button); final String user = "admin"; final String pass = "hello"; login.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { String username = ""; EditText editText1 = (EditText)findViewById(R.id.editText); username = editText1.getText().toString(); String password = ""; EditText editText2 = (EditText)findViewById(R.id.editText2); password = editText2.getText().toString(); if (username.equals(user) & password.equals(pass)) { Intent intent = new Intent(MainActivity.this, login.class); startActivity(intent); } else { new AlertDialog.Builder(MainActivity.this).setTitle("Error!").setMessage("Wrong username or password.") .setNegativeButton("OK",null) .show(); } } }); //register button final Button register = (Button) findViewById(R.id.button2); register.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { //提示框确定是否跳转 new AlertDialog.Builder(MainActivity.this).setTitle("Jump").setMessage("Ready to jump?") .setPositiveButton("Yes", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { Intent intent = new Intent(MainActivity.this, register.class); startActivity(intent); }}) .setNegativeButton("No",null) .show(); } }); } } login.java package online.geekgalaxy.layoutlearn; import android.app.Activity; import android.os.Bundle; /** * Created by jailman on 2017/9/18. */ public class login extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.login); } } register.java package online.geekgalaxy.layoutlearn; import android.app.Activity; import android.os.Bundle; /** * Created by jailman on 2017/9/18. */ public class register extends Activity{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.register); } } activity_main.xml <?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_centerVertical="true" tools:context="online.geekgalaxy.layoutlearn.MainActivity"> <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="68dp" android:text="@string/login" app:layout_constraintRight_toLeftOf="@+id/button2" tools:layout_constraintTop_creator="1" android:layout_marginEnd="68dp" android:layout_marginTop="26dp" app:layout_constraintTop_toBottomOf="@+id/editText2" /> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/register" tools:layout_constraintTop_creator="1" tools:layout_constraintRight_creator="1" android:layout_marginEnd="68dp" app:layout_constraintRight_toRightOf="parent" android:layout_marginTop="26dp" app:layout_constraintTop_toBottomOf="@+id/editText2" /> <EditText android:id="@+id/editText" android:layout_width="240dp" android:layout_height="45dp" android:layout_marginBottom="35dp" android:layout_marginEnd="68dp" android:layout_marginLeft="8dp" android:layout_marginRight="8dp" android:layout_marginStart="68dp" android:ems="10" android:hint="@string/username" android:inputType="textPersonName" app:layout_constraintBottom_toTopOf="@+id/editText2" app:layout_constraintHorizontal_bias="0.516" app:layout_constraintLeft_toLeftOf="@+id/editText2" app:layout_constraintRight_toRightOf="@+id/editText2" tools:layout_constraintLeft_creator="1" tools:layout_constraintRight_creator="1" tools:layout_editor_absoluteX="-15dp" tools:layout_editor_absoluteY="152dp" /> <EditText android:id="@+id/editText2" android:layout_width="240dp" android:layout_height="45dp" android:layout_marginEnd="69dp" android:layout_marginLeft="0dp" android:layout_marginRight="0dp" android:layout_marginStart="69dp" android:ems="10" android:hint="@string/password" android:inputType="textPassword" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="@+id/button" app:layout_constraintRight_toRightOf="@+id/button2" app:layout_constraintTop_toTopOf="parent" tools:layout_constraintBottom_creator="1" tools:layout_constraintLeft_creator="1" tools:layout_constraintRight_creator="1" tools:layout_constraintTop_creator="1" /> <TextView android:id="@+id/textView2" android:layout_width="250dp" android:layout_height="65dp" android:layout_marginBottom="50dp" android:layout_marginLeft="8dp" android:layout_marginRight="8dp" android:autoText="false" android:text="Welcome" android:textAlignment="center" android:textSize="50sp" android:textStyle="bold" app:layout_constraintBottom_toTopOf="@+id/editText" app:layout_constraintHorizontal_bias="0.509" app:layout_constraintLeft_toLeftOf="@+id/editText" app:layout_constraintRight_toRightOf="@+id/editText" /> </android.support.constraint.ConstraintLayout> login.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:weightSum="1"> <TextView android:id="@+id/textView3" android:layout_width="0dp" android:layout_height="118dp" android:layout_marginTop="200dp" android:layout_weight="1" android:text="@string/great_you_ve_login" android:textAlignment="center" android:textSize="24sp" android:textStyle="bold" /> </LinearLayout> register.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center_vertical|center_horizontal" android:orientation="vertical"> <EditText android:id="@+id/editText5" android:layout_width="270dp" android:layout_height="wrap_content" android:ems="10" android:hint="Username" android:inputType="textPersonName" /> <EditText android:id="@+id/editText6" android:layout_width="270dp" android:layout_height="wrap_content" android:ems="10" android:hint="Email" android:inputType="textPersonName" /> <EditText android:id="@+id/editText7" android:layout_width="270dp" android:layout_height="wrap_content" android:ems="10" android:hint="Password" android:inputType="textPassword" /> <EditText android:id="@+id/editText8" android:layout_width="270dp" android:layout_height="wrap_content" android:ems="10" android:hint="Confirm password" android:inputType="textPassword" /> <Button android:id="@+id/button3" android:layout_width="270dp" android:layout_height="wrap_content" android:text="Submit" /> </LinearLayout> </LinearLayout> strings.xml <resources> <string name="app_name">LayoutLearn</string> <string name="login">Login</string> <string name="register">Register</string> <string name="username">Username</string> <string name="password">Password</string> <string name="great_you_ve_login">Great, you\'ve logged in!</string> </resources> build.gradle apply plugin: 'com.android.application' android { compileSdkVersion 25 buildToolsVersion "25.0.3" defaultConfig { applicationId "online.geekgalaxy.layoutlearn" minSdkVersion 19 targetSdkVersion 25 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) compile 'com.android.support:appcompat-v7:25.3.1' compile 'com.android.support.constraint:constraint-layout:1.0.2' testCompile 'junit:junit:4.12' }

优秀的个人博客,低调大师

安卓框架——SlidingMenu使用技巧

SlidingMenu的一些常用属性 原文转载http://blog.csdn.net/zwl5670/article/details/48274109 [java] view plain copy //设置侧滑菜单的位置,可选值LEFT,RIGHT,LEFT_RIGHT(两边都有菜单时设置) menu.setMode(SlidingMenu.LEFT_RIGHT); //设置触摸屏幕的模式,可选只MARGIN,CONTENT menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN); //根据dimension资源文件的ID来设置阴影的宽度 menu.setShadowWidthRes(R.dimen.shadow_width); //根据资源文件ID来设置滑动菜单的阴影效果 menu.setShadowDrawable(R.drawable.shadow); //这两个都是设置滑动菜单视图的宽度,二选一 //设置SlidingMenu离屏幕的偏移量 menu.setBehindOffsetRes(R.dimen.slidingmenu_offset); //设置宽度 menu.setBehindWidth() //设置渐入渐出效果的值 menu.setFadeDegree(0.35f); //设置SlidingMenu与下方视图的移动的速度比,当为1时同时移动,取值0-1 menu.setBehindScrollScale(1.0f); //设置二级菜单的阴影效果 menu.setSecondaryShadowDrawable(R.drawable.shadow); //设置右边(二级)侧滑菜单 menu.setSecondaryMenu(R.layout.right_menu_frame); //为侧滑菜单设置布局 menu.setMenu(R.layout.leftmenu); //把滑动菜单添加进所有的Activity中,可选值SLIDING_CONTENT,SLIDING_WINDOW menu.attachToActivity(this,SlidingMenu.SLIDING_CONTENT); 1、在Activity中通过SlidingMenu构造方法,直接设置侧滑菜单 [java] view plain copy publicclassMainActivityextendsActivity{ @Override protectedvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); SlidingMenumenu=newSlidingMenu(this);//初始化滑动菜单 menu.setMode(SlidingMenu.LEFT);//设置触摸屏幕的模式 menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN); menu.setShadowWidthRes(R.dimen.shadow_width);//设置阴影的宽度 menu.setShadowDrawable(R.drawable.shadow);//设置滑动菜单的阴影效果 //设置滑动菜单视图的宽度 menu.setBehindOffsetRes(R.dimen.slidingmenu_offset); //设置渐入渐出效果的值 menu.setFadeDegree(0.35f); /** *SLIDING_WINDOWwillincludetheTitle/ActionBarinthecontent *sectionoftheSlidingMenu,whileSLIDING_CONTENTdoesnot. */ //把滑动菜单添加进所有的Activity中 menu.attachToActivity(this,SlidingMenu.SLIDING_CONTENT); //为侧滑菜单设置布局 menu.setMenu(R.layout.leftmenu); } } 2、通过把Activity继承SlidingActivity a、继承SlidingActivity b、然后在onCreate中setBehindContentView(R.layout.leftmenu); 设置侧滑菜单的布局 c、通过getSlidingMenu()得到SlidingMenu对象,然后设置样式 [java] view plain copy publicclassMainActivityextendsSlidingActivity{ @Override publicvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); setBehindContentView(R.layout.leftmenu); //configuretheSlidingMenu SlidingMenumenu=getSlidingMenu(); menu.setMode(SlidingMenu.LEFT); //设置触摸屏幕的模式 menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN); menu.setShadowWidthRes(R.dimen.shadow_width); menu.setShadowDrawable(R.drawable.shadow); //设置滑动菜单视图的宽度 menu.setBehindOffsetRes(R.dimen.slidingmenu_offset); //设置渐入渐出效果的值 menu.setFadeDegree(0.35f); /** *SLIDING_WINDOWwillincludetheTitle/ActionBarinthecontent *sectionoftheSlidingMenu,whileSLIDING_CONTENTdoesnot. */ //menu.attachToActivity(this,SlidingMenu.SLIDING_CONTENT); //menu.setMenu(R.layout.leftmenu); } } 3、将SlidingMenu当作普通控件 可以把SlidingMenu作为普通的view,然后在布局中声明。 [java] view plain copy <RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/id_main_ly" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="30dp" android:layout_marginTop="30dp"> <com.jeremyfeinstein.slidingmenu.lib.SlidingMenu xmlns:sliding="http://schemas.android.com/apk/res-auto" android:id="@+id/slidingmenulayout" android:layout_width="120dp" android:layout_height="170dp" android:background="#ffffffff" sliding:behindOffset="0dp" sliding:behindScrollScale="1" sliding:fadeDegree="0.3" sliding:fadeEnabled="true" sliding:touchModeAbove="fullscreen" sliding:viewAbove="@layout/pic"/> </LinearLayout> </RelativeLayout> pic布局: [plain] view plain copy <?xmlversion="1.0"encoding="utf-8"?> <ImageViewxmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="120dp" android:layout_height="170dp" android:src="@drawable/zhy"/> MainActivity: [java] view plain copy packagecom.zhy.zhy_slidemenu_demo03; importandroid.app.Activity; importandroid.os.Bundle; importandroid.view.View; importandroid.view.View.OnClickListener; importcom.jeremyfeinstein.slidingmenu.lib.SlidingMenu; publicclassMainActivityextendsActivity { privateSlidingMenumLeftMenu; @Override protectedvoidonCreate(BundlesavedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mLeftMenu=(SlidingMenu)findViewById(R.id.slidingmenulayout); //configuretheSlidingMenu //SlidingMenumenu=newSlidingMenu(this); mLeftMenu.setMode(SlidingMenu.LEFT); //设置触摸屏幕的模式 mLeftMenu.setShadowWidthRes(R.dimen.shadow_width); mLeftMenu.setShadowDrawable(R.drawable.shadow); mLeftMenu.setMenu(R.layout.leftmenu); mLeftMenu.setOnClickListener(newOnClickListener() { @Override publicvoidonClick(Viewv) { if(mLeftMenu.isMenuShowing()) mLeftMenu.toggle(); } }); //设置滑动菜单视图的宽度 //设置渐入渐出效果的值 /** *SLIDING_WINDOWwillincludetheTitle/ActionBarinthecontent *sectionoftheSlidingMenu,whileSLIDING_CONTENTdoesnot. */ } } 4、SlidingMenu设置左右侧滑菜单例子 上面3个方法,SlidingMenu的布局中控件的事件都需要写在Activity中,这样代码比较臃肿,一般会使用Fragment作为侧滑菜单的布局容器。 核心代码: · [java] view plain copy FragmentleftMenuFragment=newMenuLeftFragment(); ·setBehindContentView(R.layout.left_menu_frame); ·getSupportFragmentManager().beginTransaction() ·.replace(R.id.id_left_menu_frame,leftMenuFragment).commit(); ·SlidingMenumenu=getSlidingMenu(); ·menu.setMode(SlidingMenu.LEFT_RIGHT); ·//设置触摸屏幕的模式 ·menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN); 先给侧滑菜单通过 setBehindContentView(R.layout.left_menu_frame); 设置一个布局,此布局中只有一个FrameLayout,然后使用FragmentManager将Fragment替换掉此Fragment,这样这个 Fragment就作为我们侧滑菜单的布局了,我们的事件处理代码也可以写在Fragement中,而不是Activity中。 MenuLeftFragment [java] view plain copy packagecom.zhy.zhy_slidemenu_demo04; importjava.util.Arrays; importjava.util.List; importandroid.os.Bundle; importandroid.support.v4.app.Fragment; importandroid.view.LayoutInflater; importandroid.view.View; importandroid.view.ViewGroup; importandroid.widget.ArrayAdapter; importandroid.widget.ListAdapter; importandroid.widget.ListView; publicclassMenuLeftFragmentextendsFragment { privateViewmView; privateListViewmCategories; privateList<String>mDatas=Arrays .asList("聊天","发现","通讯录","朋友圈","订阅号"); privateListAdaptermAdapter; @Override publicViewonCreateView(LayoutInflaterinflater,ViewGroupcontainer, BundlesavedInstanceState){ if(mView==null){ initView(inflater,container); } returnmView; } privatevoidinitView(LayoutInflaterinflater,ViewGroupcontainer){ mView=inflater.inflate(R.layout.left_menu,container,false); mCategories=(ListView)mView .findViewById(R.id.id_listview_categories); mAdapter=newArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1,mDatas); mCategories.setAdapter(mAdapter); } } MenuRightFragment packagecom.zhy.zhy_slidemenu_demo04; importandroid.os.Bundle; importandroid.support.v4.app.Fragment; importandroid.view.LayoutInflater; importandroid.view.View; importandroid.view.ViewGroup; publicclassMenuRightFragmentextendsFragment{ privateViewmView; @Override publicViewonCreateView(LayoutInflaterinflater,ViewGroupcontainer, BundlesavedInstanceState){ if(mView==null){ mView=inflater.inflate(R.layout.right_menu,container,false); } returnmView; } } MainActivity [java] view plain copy publicclassMainActivityextendsSlidingFragmentActivity{ privateViewPagermViewPager; privateFragmentPagerAdaptermAdapter; privateList<Fragment>mFragments=newArrayList<Fragment>(); @Override publicvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); this.requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main); //初始化SlideMenu initRightMenu(); //初始化ViewPager initViewPager(); } privatevoidinitViewPager(){ mViewPager=(ViewPager)findViewById(R.id.id_viewpager); MainTab01tab01=newMainTab01(); MainTab02tab02=newMainTab02(); MainTab03tab03=newMainTab03(); mFragments.add(tab01); mFragments.add(tab02); mFragments.add(tab03); /** *初始化Adapter */ mAdapter=newFragmentPagerAdapter(getSupportFragmentManager()){ @Override publicintgetCount(){ returnmFragments.size(); } @Override publicFragmentgetItem(intarg0){ returnmFragments.get(arg0); } }; mViewPager.setAdapter(mAdapter); } privatevoidinitRightMenu(){ FragmentleftMenuFragment=newMenuLeftFragment(); setBehindContentView(R.layout.left_menu_frame); getSupportFragmentManager().beginTransaction() .replace(R.id.id_left_menu_frame,leftMenuFragment).commit(); SlidingMenumenu=getSlidingMenu(); menu.setMode(SlidingMenu.LEFT_RIGHT); //设置触摸屏幕的模式 menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN); menu.setShadowWidthRes(R.dimen.shadow_width); menu.setShadowDrawable(R.drawable.shadow); //设置滑动菜单视图的宽度 menu.setBehindOffsetRes(R.dimen.slidingmenu_offset); //设置渐入渐出效果的值 menu.setFadeDegree(0.35f); //menu.setBehindScrollScale(1.0f); menu.setSecondaryShadowDrawable(R.drawable.shadow); //设置右边(二级)侧滑菜单 menu.setSecondaryMenu(R.layout.right_menu_frame); FragmentrightMenuFragment=newMenuRightFragment(); getSupportFragmentManager().beginTransaction() .replace(R.id.id_right_menu_frame,rightMenuFragment).commit(); } publicvoidshowLeftMenu(Viewview){ getSlidingMenu().showMenu(); } publicvoidshowRightMenu(Viewview){ getSlidingMenu().showSecondaryMenu(); } } MainActivity继承的是SlidingFragmentActivity ,在Activity中FragmentPagerAdapter和viewPager作为主布局,然后分别初始化SlidingMenu的两边的菜单。

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册