`

Android隐式抽屉及缩放控制(20)

阅读更多
  • 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来实现这个功能,这就交给读者朋友们。

实现效果如下:




 
 
 

  • 大小: 447.3 KB
  • 大小: 39.8 KB
  • 大小: 73.5 KB
  • 大小: 1.8 KB
  • 大小: 14.1 KB
  • 大小: 17 KB
1
2
分享到:
评论

相关推荐

    android UI进阶之android中隐藏的layout 抽屉的使用方法

    `DrawerLayout`是Android Design Support Library的一部分,提供了更现代且易于使用的抽屉实现,支持更丰富的手势控制和更佳的兼容性。 总的来说,`SlidingDrawer`是Android中实现抽屉效果的一种传统方式,虽然已被...

    Android隐式信息流检测的本体模型.pdf

    传统的信息泄漏检测技术在面对Android应用中特有的隐式信息流动时显得力不从心,因此作者提出了一个结合控制结构本体模型与语义网规则语言(SWRL)推理规则的Android隐式信息流(IIF)推理方法。 文章首先分析了在...

    隐式广义预测控制matlab程序

    隐式广义预测控制(Implicit Generalized Predictive Control, IGPC)是一种先进的控制策略,它在预测控制领域具有广泛的应用。MATLAB作为一种强大的数学计算和建模环境,是实现IGPC算法的理想工具。本程序提供了...

    SlidingDrawer隐式抽屉之基础

    这个组件在Android API Level 8(即Android 2.2 Froyo)及之前版本中被广泛使用,但在后来的API版本中逐渐被更现代的Slideout Navigation Drawer所取代。尽管如此,理解SlidingDrawer的工作原理对于历史遗留项目或者...

    Android review 显示意图激活与隐式意图激活

    同时,为了安全和隐私考虑,接收隐式意图的组件应该有相应的权限控制,防止未授权的访问。 在`MultiActivity`这样的项目中,可能会展示如何通过这两种意图类型在多个Activity之间导航和实现跨应用功能。可能包含一...

    隐式广义预测自适应控制

    本程序是广义预测的隐式算法,不用辨识对象模型参数,而是根据输入/输出数据直接辨识求取最优控制律中的参数,因而避免了在线求取吐蕃图方程所带来的大量中间运算,减少了计算工作量,节省了时间。

    Android 隐式Intent的实例详解

    “Android 隐式Intent 的实例详解” Android 隐式Intent 是一种特殊的 Intent,用于在不明确设置激活对象的前提下寻找最匹配的组件。它的核心思想是通过在 AndroidManifest.xml 文件中设置意图过滤器,来指定 ...

    2011.09.07(2)——— android 跨进程通信之隐式intent

    这篇博客"2011.09.07(2)——— android 跨进程通信之隐式intent"主要探讨了Android中的隐式Intent如何用于实现IPC。隐式Intent是一种灵活的机制,让一个应用能够启动另一个并未明确声明的组件,只要后者声明了可以...

    Android中使用隐式方式打开一个新的Activity

    因此,谨慎使用隐式Intent,并确保有足够的权限控制。 7. **自定义Intent**: 开发者也可以定义自己的Action、Data和Category,以实现更个性化的跨Activity交互。例如,创建一个用于分享图片的Intent,可以自定义一...

    隐式切换主控制器代码

    "隐式切换主控制器代码"是一个高级编程技巧,用于在运行时动态地更改应用的主视图控制器,而无需用户感知到明显的界面跳转。这种技术常见于构建具有多种模式或状态的应用,如多账户系统、夜间模式切换等场景。 首先...

    ImplicitGPC.rar_diophantine_predictive direct_隐式广义预测_隐式预测控制_预测控制

    隐式广义预测控制(Implicit Generalized Predictive Control, IGPC)是一种先进的控制策略,它在预测控制领域占据重要地位。IGPC的核心思想是通过预测未来一段时间内的系统行为,然后根据预测结果制定当前的控制...

    Android显式启动与隐式启动Activity的区别介绍

    在Android应用开发中,Activity是用户界面的基本单元,它负责处理用户的交互和展示内容。启动Activity有两种主要方式:显式启动和隐式启动,这两种方式各有特点,适用于不同的场景。 **显式启动(Explicit Intent)...

    android显示意图和隐式意图的区别

    ### Android显示意图和隐式意图的区别 在Android开发过程中,`Intent`是应用内部各组件之间进行通信的重要机制之一。通过`Intent`可以启动Activity、Service等组件,并且可以在组件间传递数据。根据使用场景的不同...

    android隐式意图激活自定义界面和系统应用界面的实例

    下面小编就为大家带来一篇android隐式意图激活自定义界面和系统应用界面的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    JGPC.rar_JGPC_广义预测控制_隐式 广义预测_隐式预测控制

    本资源集中探讨的是针对单变量系统的隐式广义预测控制,这是一种在传统GPC基础上发展起来的优化控制方法。 首先,我们要理解什么是广义预测控制。传统的预测控制基于模型预测,通过预测未来一段时间内系统的行为,...

    android中隐式intent的使用说明2022优秀文档.pptx

    Android 中隐式 Intent 的使用说明 Android 中的 Intent 机制是 Android 应用程序之间通信的基础,Intent 负责描述一次操作的动作、动作涉及数据、附加数据等信息,然后 Android 系统根据 Intent 的描述找到对应的...

    android隐式意图激活浏览器的实现方法

    Android 隐式意图激活浏览器的实现方法 Android 隐式意图是一种特殊的 Intent,它可以在 Android 系统中激活指定的应用程序,而不需要明确指定要启动的应用程序。通过使用隐式意图,可以实现 Android 应用程序之间...

    Android应用隐式调用检测技术的研究.pdf

    Android 应用隐式调用检测技术的研究 本文研究了 Android 应用隐式调用检测技术,旨在检测 Android 应用程序中的恶意行为。该技术基于静态分析和动态分析相结合的方法,通过反编译提取应用程序的权限特征,并对源...

Global site tag (gtag.js) - Google Analytics