- SlidingDrawer是一种抽屉型组件,当用户打开这个小抽屉以后会出一个大礼包,就是一系列的程序集,玩过手机版的植物大战僵尸的知道手机界面本来就小,而为了节省空间就会用一个小小抽屉或箭头标志,这样就解决了布局空间紧张问题。
其方法有这几种:
首先定义main.xml布局文件:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="fill_parent" tools:context=".MainActivity" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/hello_world" /> <SlidingDrawer android:orientation="horizontal" android:id="@+id/slidingdrawer1" android:layout_width="fill_parent" android:layout_height="fill_parent" android:content="@+id/content" android:handle="@+id/handle" > <ImageView android:id="@+id/handle" android:src="@drawable/ic" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <LinearLayout android:id="@+id/content" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > </LinearLayout> </SlidingDrawer> </RelativeLayout>
之后我们想要添加的组件添加到linearlayout:content里面,它相当于抽屉,把软件程序集藏得好好地,图片imageview相当于抽屉拉手,一个标志作用
现在定义Activity:
public class MainActivity extends Activity { private SlidingDrawer slid=null; private ImageView image=null; private ImageView handle=null; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); image=new ImageView(this); image.setImageResource(R.drawable.draw); LinearLayout layout = (LinearLayout) super.findViewById(R.id.content) ; layout.addView(image); this.slid = (SlidingDrawer) super.findViewById(R.id.slidingdrawer1) ; this.handle = (ImageView) super.findViewById(R.id.handle) ; //打开隐藏抽屉 this.slid.setOnDrawerOpenListener(new OnDrawerOpenListenerImpl()) ; //关闭隐藏抽屉 this.slid.setOnDrawerCloseListener(new OnDrawerCloseListenerImpl()) ; //拖动隐藏抽屉组件 this.slid.setOnDrawerScrollListener(new OnDrawerScrollListenerImpl()) ; } private class OnDrawerOpenListenerImpl implements OnDrawerOpenListener { @Override public void onDrawerOpened() { MainActivity.this.handle.setImageResource(R.drawable.right) ; } } private class OnDrawerCloseListenerImpl implements OnDrawerCloseListener { @Override public void onDrawerClosed() { MainActivity.this.handle.setImageResource(R.drawable.ic) ; } } private class OnDrawerScrollListenerImpl implements OnDrawerScrollListener { @Override public void onScrollEnded() { Toast.makeText(MainActivity.this, "窗口拖动结束。", Toast.LENGTH_SHORT).show() ; } @Override public void onScrollStarted() { Toast.makeText(MainActivity.this, "正在拖动窗口。", Toast.LENGTH_SHORT).show() ; } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } }
这里为了简单起见只显示一张图片,读者可以随意加组件。
- 缩放组件
就是下面这个组件
现在我们来完成一个实例,文字放大器,这一方面做好了我们就能轻松实现图片放大缩小了
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/LinearLayout1" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/hello_world" /> <ZoomControls android:id="@+id/zoomControls1" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout>
Activity代码:
public class MainActivity extends Activity { private ZoomControls zoomControls; private int size; private TextView text; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); this.zoomControls=(ZoomControls)super.findViewById(R.id.zoomControls); this.text=(TextView)super.findViewById(R.id.text); this.zoomControls.setOnZoomInClickListener(new ZoomIn()); this.zoomControls.setOnZoomOutClickListener(new ZoomOut()); } //更改文字大小 private class ZoomIn implements OnClickListener{ @Override public void onClick(View arg0) { // TODO Auto-generated method stub MainActivity.this.size=size+2; MainActivity.this.text.setTextSize(size); } } //更改文字大小 private class ZoomOut implements OnClickListener{ @Override public void onClick(View arg0) { // TODO Auto-generated method stub MainActivity.this.size=size-2; MainActivity.this.text.setTextSize(size); } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } }
仔细发现缩放组件其实就是按钮,所用的监听方法也是按钮的,那么得到的启示就是我们可以用更漂亮的imagebutton来实现这个功能,这就交给读者朋友们。
实现效果如下:
相关推荐
其实在android的lanucher就是一个抽屉,打开它就可以看到安装的应用。相信大家都见过用过。下面我们就来做个相同的效果,当然只是UI上差不多相同的效果。 slidingDrawer这个控件使用非常简单,基本在xml里面配置就...
SlidingDrawer隐式抽屉
隐式广义预测控制matlab程序,可以实现仿真,可以自己高扭矩情况调节内部参,达到自己想要的状态,部分程序已经注释,阅读相当于i容易
Android review 显示意图激活与隐式意图激活
Android隐式信息流检测的本体模型.pdf
本程序是广义预测的隐式算法,不用辨识对象模型参数,而是根据输入/输出数据直接辨识求取最优控制律中的参数,因而避免了在线求取吐蕃图方程所带来的大量中间运算,减少了计算工作量,节省了时间。
Android显示意图隐式意图的区别
Android中使用隐式方式打开一个新的Activity!
下面小编就为大家带来一篇android隐式意图激活自定义界面和系统应用界面的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
这是简单的隐式抽屉,像我们平时的左右滑动的效果。
主要介绍了Android 隐式Intent的实例详解的相关资料,隐式意图就是在不明确设置激活对象的前提下寻找最匹配的组件,需要的朋友可以参考下
android中隐式intent的使用说明2022优秀文档.pptx
android中隐式intent的传递方法2022优秀文档.pptx
隐式广义预测自校正控制器程序,基于Clarke广义预测控制的最优控制率,直接辨识控制律中G矩阵,无需求解Diophantine方程。内含两个最小相位系统控制例程以及一个非最小相位系统控制例程。
显示Intent和隐式Intent的区别
android中隐式intent与activity的匹配原则2022优秀文档.pptx
Android应用隐式调用检测技术的研究.pdf
一行代码,可以巧妙切换主控制器,实现你想要的效果,不信你可试试
Android 遇到版本坑 这很正常 比如android 8 之后 对隐式广播进行了限制 Android《第一行代码》中有些内容,现版本已经淘汰了。 但是我们还想学习一下这个技术怎么办? 方法1:突破隐式广播的限制 方法2:回到过去 ...
Android Studio Intent隐式启动,发短信,拨号,打电话,访问网页等实例代码 功能 创建5个按钮,隐式启动、发短信、拨号按钮、电话按钮、打开网页按钮。通过使用Intent来完成各自按钮下的功能 代码目录如下 详细代码...