当前位置:  编程技术>移动开发
本页文章导读:
    ▪锁屏治理的简单实现        锁屏管理的简单实现如前面所说,我在方案公司工作,日常负责锁屏的开发。由于设计过很多锁屏,为了能够像小米手机中的主题切换中,实现百变锁屏功能。 再次我简单说下锁屏管理的思.........
    ▪ addChildViewController ipad 中Controller的嵌套跟叠加        addChildViewController ipad 中Controller的嵌套和叠加1.addChildViewController 在 base controller中添加子的controller,会自动调用子的controller中viewDidload,viewWillAppear等视图方法,可以完成一个controller叠加各种.........
    ▪ 调起百度map客户端之导航功能       调起百度地图客户端之导航功能该Demo的意思就是通过该程序去调起手机上已安装了的百度地图android客户端来进行导航,其实,个人觉得该功能实际意义不大,因为如果手机上已安装了百度地.........

[1]锁屏治理的简单实现
    来源: 互联网  发布时间: 2014-02-18
锁屏管理的简单实现
如前面所说,我在方案公司工作,日常负责锁屏的开发。由于设计过很多锁屏,为了能够像小米手机中的主题切换中,实现百变锁屏功能。
再次我简单说下锁屏管理的思路,由于涉及到公司代码机密问题。有的地方我只会简单点到为止,估计细节如果读者有一定的功力的话,也能猜的出来时怎么实现的。

下面贴现锁屏管理的效果图片。

在锁屏管理中,出现了锁屏预览界面和锁屏的名称,这个类似于Launcher中的图标。我们就可以利用这样的思路来实现相同的功能。

首先在锁屏管理中,要能查询这个手机上面一共安装了多少个锁屏apk。类似于Launcher一样,需要查询出多少应用有图标。

Launcher中识别的条件如下所示。

<application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:name=".TestlightActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

主要的标签是<category android:name="android.intent.category.LAUNCHER" />


那么我们的锁屏界面如何能查询呢?一般的Apk锁屏,都是在屏幕熄灭的时候,监听广播,然后把系统锁屏给禁止掉,最后显示我们的锁屏Activity,这样就完成了一个最简单锁屏了。

利用上面锁屏的思路,我们可以查询所有锁屏Apk。然后再接受到系统广播后,就选择性的指定某一个apk作为显示的锁屏。

void queryAllLockScreen() {
		Context context = this;
		PackageManager pm = context.getPackageManager();

		Intent it = new Intent("com.locktest.LOCK_SCREEN");
		it.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
		List<ResolveInfo> all = pm.queryIntentActivities(lockIntent, 0);

		for (ResolveInfo info : all) {
			System.out.println(info.activityInfo.packageName);
			System.out.println(info.activityInfo.name);
		}
	}

	/**
	 * 开启activity
	 */
	private void initIntent() {
		lockIntent = new Intent("com.fx.locktest.LOCK_SCREEN");
		String packageName = null; // 数据库中得到,没有具体实现
		String className = null; // 数据库中得到,没有具体实现
		lockIntent.setClassName(packageName, className);
		lockIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
	}

/**
 * 屏幕变亮的广播
 */
private BroadcastReceiver screenReceiver = new BroadcastReceiver() {


	public void onReceive(Context context, Intent intent) {
		if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF) || intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
			startActivity(lockIntent);
		}
	}
};



最后涉及到锁屏指定以及锁屏数据保存问题。根据上面代码可以看出,所有的锁屏最主要的需要保存的数据有package以及activity的路径。这样我们就实现代码了。


由于保存的数据比较少,且是键值对的形式,个人在实现的时候,刚刚开始使用的是cottentprovider,但是这样保存比较麻烦,同时获取数据也是比较麻烦的,最后就使用了Android内置的sharepreference来保存,简单而且使用。

好了,就简单介绍到这边,由于机密问题(当然这个也不是什么大秘密),说的比较简单。

如有疑问,欢迎前来讨教。


1楼xia215266092昨天 18:08csdn的编辑器太难用了。

    
[2] addChildViewController ipad 中Controller的嵌套跟叠加
    来源: 互联网  发布时间: 2014-02-18
addChildViewController ipad 中Controller的嵌套和叠加

1.addChildViewController 在 base controller中添加子的controller,会自动调用子的controller中viewDidload,viewWillAppear等视图方法,可以完成一个controller叠加各种视图

2.base 的controller必须是UIViewController,如果是 UINavigationController,则没法控制子controller frame的大小

示例代码:

    BaseNavController * nav = [[BaseNavController alloc] initWithRootViewController:agendaController];
    nav.view.autoresizingMask = UIViewAutoresizingNone;
    [nav.view addGestureRecognizer:[[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(dragView:)]];
    [self addChildViewController:nav];
    
    
    nav.view.frame =  CGRectMake(270, -20, DeviceWidth - 270, DeviceHeight - 200);//homeViewLeftMenuViewWidth
    
    nav.view.backgroundColor = [UIColor yellowColor];
    [self.view addSubview:nav.view];



    
[3] 调起百度map客户端之导航功能
    来源: 互联网  发布时间: 2014-02-18
调起百度地图客户端之导航功能

该Demo的意思就是通过该程序去调起手机上已安装了的百度地图android客户端来进行导航,其实,个人觉得该功能实际意义不大,因为如果手机上已安装了百度地图客户端,我们可以直接就使用它进行导航,该程序只是负责去调起百度地图客户端的导航功能,而本程序并不任何导航功能,不过了解一下怎么调用也好,代码如下:

Activity:

package com.home;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;

import com.baidu.mapapi.navi.BaiduMapAppNotSupportNaviException;
import com.baidu.mapapi.navi.BaiduMapNavigation;
import com.baidu.mapapi.navi.NaviPara;
import com.baidu.platform.comapi.basestruct.GeoPoint;

public class NaviActivity extends Activity {

	// 天安门坐标
	double mLat1 = 39.915291;
	double mLon1 = 116.403857;
	// 百度大厦坐标
	double mLat2 = 40.056858;
	double mLon2 = 116.308194;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_navi_demo);
		TextView text = (TextView) findViewById(R.id.navi_info);
		text.setText(String.format("起点:(%f,%f)\n终点:(%f,%f)", mLat1, mLon1,
				mLat2, mLon2));
	}

	/**
	 * 开始导航
	 * 
	 * @param view
	 */
	public void startNavi(View view) {
		int lat = (int) (mLat1 * 1E6);
		int lon = (int) (mLon1 * 1E6);
		GeoPoint pt1 = new GeoPoint(lat, lon);
		lat = (int) (mLat2 * 1E6);
		lon = (int) (mLon2 * 1E6);
		GeoPoint pt2 = new GeoPoint(lat, lon);
		// 构建 导航参数
		NaviPara para = new NaviPara();
		para.startPoint = pt1;
		para.startName = "从这里开始";
		para.endPoint = pt2;
		para.endName = "到这里结束";

		try {

			BaiduMapNavigation.openBaiduMapNavi(para, this);

		} catch (BaiduMapAppNotSupportNaviException e) {
			e.printStackTrace();
			AlertDialog.Builder builder = new AlertDialog.Builder(this);
			builder.setMessage("您尚未安装百度地图app或app版本过低,点击确认安装?");
			builder.setTitle("提示");
			builder.setPositiveButton("确认", new OnClickListener() {
				@Override
				public void onClick(DialogInterface dialog, int which) {
					dialog.dismiss();
					BaiduMapNavigation.GetLatestBaiduMapApp(NaviActivity.this);
				}
			});

			builder.setNegativeButton("取消", new OnClickListener() {
				@Override
				public void onClick(DialogInterface dialog, int which) {
					dialog.dismiss();
				}
			});

			builder.create().show();
		}
	}
}

布局XML:

<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="@android:color/white"
    tools:context=".NaviDemo" >

    <TextView
        android:id="@+id/navi_info"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:textColor="@android:color/black"
        android:textSize="16sp" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/navi_info"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="76dp"
        android:onClick="startNavi"
        android:text="开始导航" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/navi_info"
        android:layout_alignParentLeft="true"
        android:layout_marginBottom="57dp"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:text="@string/navi_tip"
        android:textColor="@android:color/black"
        android:textSize="16sp" />

</RelativeLayout>


String:navi_tip

<string name="navi_tip">本功能为调起百度地图Android客户端(V5.0及以上版本)的导航功能,用户必须已安装百度地图客户端,如果没有安装则提示用户下载安装百度地图客户端。</string>

附上图片效果:




    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
oracle iis7站长之家
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3