android仿qq发布说说选择视频

来源:思维能力 发布时间:2013-05-13 点击:

android仿qq发布说说选择视频篇一

Android经典案例之我是QQ大盗

江西省南昌市2015-2016学年度第一学期期末试卷

(江西师大附中使用)高三理科数学分析

试卷紧扣教材和考试说明,从考生熟悉的基础知识入手,多角度、多层次地考查了学生的数学理性思维能力及对数学本质的理解能力,立足基础,先易后难,难易适中,强调应用,不偏不怪,达到了“考基础、考能力、考素质”的目标。试卷所涉及的知识内容都在考试大纲的范围内,几乎覆盖了高中所学知识的全部重要内容,体现了“重点知识重点考查”的原则。 1.回归教材,注重基础

试卷遵循了考查基础知识为主体的原则,尤其是考试说明中的大部分知识点均有涉及,其中应用题与抗战胜利70周年为背景,把爱国主义教育渗透到试题当中,使学生感受到了数学的育才价值,所有这些题目的设计都回归教材和中学教学实际,操作性强。 2.适当设置题目难度与区分度

选择题第12题和填空题第16题以及解答题的第21题,都是综合性问题,难度较大,学生不仅要有较强的分析问题和解决问题的能力,以及扎实深厚的数学基本功,而且还要掌握必须的数学思想与方法,否则在有限的时间内,很难完成。 3.布局合理,考查全面,着重数学方法和数学思想的考察

在选择题,填空题,解答题和三选一问题中,试卷均对高中数学中的重点内容进行了反复考查。包括函数,三角函数,数列、立体几何、概率统计、解析几何、导数等几大版块问题。这些问题都是以知识为载体,立意于能力,让数学思想方法和数学思维方式贯穿于整个试题的解答过程之中。

二、亮点试题分析

1.【试卷原题】11.已知A,B,C是单位圆上互不相同的三点,且满足ABAC,则ABAC的最小值为( )



1

41B.

23C.

4D.1

A.

【考查方向】本题主要考查了平面向量的线性运算及向量的数量积等知识,是向量与三角的典型综合题。解法较多,属于较难题,得分率较低。



【易错点】1.不能正确用OA,OB,OC表示其它向量。



2.找不出OB与OA的夹角和OB与OC的夹角的倍数关系。



【解题思路】1.把向量用OA,OB,OC表示出来。

2.把求最值问题转化为三角函数的最值求解。

22

【解析】设单位圆的圆心为O,由ABAC得,(OBOA)(OCOA),因为



,所以有,OBOAOCOA则OAOBOC1

ABAC(OBOA)(OCOA)

2

OBOCOBOAOAOCOA

OBOC2OBOA1



设OB与OA的夹角为,则OB与OC的夹角为2

11

所以,ABACcos22cos12(cos)2

22

1

即,ABAC的最小值为,故选B。

2

【举一反三】

【相似较难试题】【2015高考天津,理14】在等腰梯形ABCD中,已知

AB//DC,AB2,BC1,ABC60 ,动点E和F分别在线段BC和DC上,且,1BEBC,DFDC,则AEAF的最小值为.

9

【试题分析】本题主要考查向量的几何运算、向量的数量积与基本不等式.运用向量的几何

运算求AE,AF,体现了数形结合的基本思想,再运用向量数量积的定义计算AEAF,体

现了数学定义的运用,再利用基本不等式求最小值,体现了数学知识的综合应用能力.是思维能力与计算能力的综合体现. 【答案

11

【解析】因为DFDC,DCAB,

92

11919CFDFDCDCDCDCAB,

9918

29 18

AEABBEABBC,1919AFABBCCFABBCABABBC,

1818

19192219AEAFABBCABBCABBC1ABBC

181818



2117172919199

 421

cos120

921818181818

21229

当且仅当. 即时AEAF的最小值为

92318

2.【试卷原题】20. (本小题满分12分)已知抛物线C的焦点F1,0,其准线与x轴的

交点为K,过点K的直线l与C交于A,B两点,点A关于x轴的对称点为D. (Ⅰ)证明:点F在直线BD上; (Ⅱ)设FAFB

8

,求BDK内切圆M的方程. 9

【考查方向】本题主要考查抛物线的标准方程和性质,直线与抛物线的位置关系,圆的标准方程,韦达定理,点到直线距离公式等知识,考查了解析几何设而不求和化归与转化的数学思想方法,是直线与圆锥曲线的综合问题,属于较难题。

【易错点】1.设直线l的方程为ym(x1),致使解法不严密。

2.不能正确运用韦达定理,设而不求,使得运算繁琐,最后得不到正确答案。 【解题思路】1.设出点的坐标,列出方程。 2.利用韦达定理,设而不求,简化运算过程。 3.根据圆的性质,巧用点到直线的距离公式求解。

【解析】(Ⅰ)由题可知K1,0,抛物线的方程为y24x

则可设直线l的方程为xmy1,Ax1,y1,Bx2,y2,Dx1,y1, 故

xmy1y1y24m2

整理得,故 y4my402

y4xy1y24

2

y2y1y24

则直线BD的方程为yy2xxx2即yy2

x2x1y2y14

yy

令y0,得x121,所以F1,0在直线BD上.

4

y1y24m2

(Ⅱ)由(Ⅰ)可知,所以x1x2my11my214m2,

y1y24

x1x2my11my111 又FAx11,y1,FBx21,y2

故FAFBx11x21y1y2x1x2x1x2584m,

2

2

则84m





84

,m,故直线l的方程为3x4y30或3x4y30 93

{android仿qq发布说说选择视频}.

故直线

BD的方程3x

30或3x30,又KF为BKD的平分线,

3t13t1

,故可设圆心Mt,01t1,Mt,0到直线l及BD的距离分别为54y2y1

-------------10分 由

3t15

3t143t121

 得t或t9(舍去).故圆M的半径为r

953

2

14

所以圆M的方程为xy2

99

【举一反三】

【相似较难试题】【2014高考全国,22】 已知抛物线C:y2=2px(p>0)的焦点为F,直线5

y=4与y轴的交点为P,与C的交点为Q,且|QF|=4(1)求C的方程;

(2)过F的直线l与C相交于A,B两点,若AB的垂直平分线l′与C相交于M,N两点,且A,M,B,N四点在同一圆上,求l的方程.

【试题分析】本题主要考查求抛物线的标准方程,直线和圆锥曲线的位置关系的应用,韦达定理,弦长公式的应用,解法及所涉及的知识和上题基本相同. 【答案】(1)y2=4x.

(2)x-y-1=0或x+y-1=0. 【解析】(1)设Q(x0,4),代入

y2=2px,得

x0=,

p

8

8pp8

所以|PQ|,|QF|=x0=+.

p22p

p858

由题设得+=p=-2(舍去)或p=2,

2p4p所以C的方程为y2=4x.

(2)依题意知l与坐标轴不垂直,故可设l的方程为x=my+1(m≠0). 代入y2=4x,得y2-4my-4=0. 设A(x1,y1),B(x2,y2), 则y1+y2=4m,y1y2=-4.

故线段的AB的中点为D(2m2+1,2m), |AB|m2+1|y1-y2|=4(m2+1).

1

又直线l ′的斜率为-m,

所以l ′的方程为x+2m2+3.{android仿qq发布说说选择视频}.

m将上式代入y2=4x,

4

并整理得y2+-4(2m2+3)=0.

m设M(x3,y3),N(x4,y4),

则y3+y4y3y4=-4(2m2+3).

m{android仿qq发布说说选择视频}.

4

22

2故线段MN的中点为E22m+3,-,

mm

|MN|=

4(m2+12m2+1

1+2|y3-y4|=.

mm2

1

由于线段MN垂直平分线段AB,

1

故A,M,B,N四点在同一圆上等价于|AE|=|BE|=,

211

22从而+|DE|=2,即 444(m2+1)2+

2222

2m++22=

mm

4(m2+1)2(2m2+1)

m4

化简得m2-1=0,解得m=1或m=-1, 故所求直线l的方程为x-y-1=0或x+y-1=0.

三、考卷比较

本试卷新课标全国卷Ⅰ相比较,基本相似,具体表现在以下方面: 1. 对学生的考查要求上完全一致。

即在考查基础知识的同时,注重考查能力的原则,确立以能力立意命题的指导思想,将知识、能力和素质融为一体,全面检测考生的数学素养,既考查了考生对中学数学的基础知识、基本技能的掌握程度,又考查了对数学思想方法和数学本质的理解水平,符合考试大纲所提倡的“高考应有较高的信度、效度、必要的区分度和适当的难度”的原则. 2. 试题结构形式大体相同,即选择题12个,每题5分,填空题4 个,每题5分,解答题8个(必做题5个),其中第22,23,24题是三选一题。题型分值完全一样。选择题、填空题考查了复数、三角函数、简易逻辑、概率、解析几何、向量、框图、二项式定理、线性规划等知识点,大部分属于常规题型,是学生在平时训练中常见的类型.解答题中仍涵盖了数列,三角函数,立体何,解析几何,导数等重点内容。

3. 在考查范围上略有不同,如本试卷第3题,是一个积分题,尽管简单,但全国卷已经不考查了。

android仿qq发布说说选择视频篇二

Android实现仿QQ登录可编辑下拉框

Android实现仿QQ登录可编辑下拉菜单

在Android里,直接提供的Spinner控件虽然可以实现下拉菜单的效果,但其效果并不理想,很多时候我们需要类似手机QQ那样既可以在文本框中直接输入编辑文字,可以在下拉菜单中选中或者删除菜单选项,并且下拉菜单并不是以遮罩整个手机屏幕方式,而是以浮动在屏幕上的效果出现。下面呢,就来实现一下这些效果。 最后效果:

此次主要以EdiText、PopupWindow、ListView及Adapter来实现这种下拉效果。具体实现步骤就不一步步详细介绍了,直接贴完整代码吧,注释比较详细,相信都能看得懂。

Activity代码:

package com.zw.select;

import java.util.ArrayList;

import android.app.Activity;

import android.graphics.drawable.BitmapDrawable;

import android.os.Bundle;

import android.os.Handler;

import android.os.Handler.Callback;

import android.os.Message;

import android.view.View;

import android.widget.Button;

import android.widget.EditText;

import android.widget.ImageView;

import android.widget.LinearLayout;

import android.widget.LinearLayout.LayoutParams;

import android.widget.ListView;

import android.widget.PopupWindow;

//主界面Activity

public class SelectActivity extends Activity implements Callback {

//PopupWindow对象 private PopupWindow selectPopupWindow= null; //自定义Adapter private OptionsAdapter optionsAdapter = null; //下拉框选项数据源 private ArrayList<String> datas = new ArrayList<String>();; //下拉框依附组件 private LinearLayout parent; //下拉框依附组件宽度,也将作为下拉框的宽度 private int pwidth; //文本框 private EditText et; //下拉箭头图片组件 private ImageView image; //恢复数据源按钮 private Button button; //展示所有下拉选项的ListView private ListView listView = null; //用来处理选中或者删除下拉项消息 private Handler handler; //是否初始化完成标志 private boolean flag = false;

{android仿qq发布说说选择视频}.

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.select);

}

/**

* 没有在onCreate方法中调用initWedget(),而是在onWindowFocusChanged方法中调用,

* 是因为initWedget()中需要获取PopupWindow浮动下拉框依附的组件宽度,在onCreate方法中是无法获取到该宽度的

*/

@Override public void onWindowFocusChanged(boolean hasFocus) { } super.onWindowFocusChanged(hasFocus); while(!flag){ } initWedget(); flag = true;

/** * 初始化界面控件 */ private void initWedget(){ //初始化Handler,用来处理消息 handler = new Handler(SelectActivity.this); //初始化界面组件 parent = (LinearLayout)findViewById(R.id.parent); et = (EditText)findViewById(R.id.edittext); image = (ImageView)findViewById(R.id.btn_select); //获取下拉框依附的组件宽度

int width = parent.getWidth();

pwidth = width;

//设置点击下拉箭头图片事件,点击弹出PopupWindow浮动下拉框

image.setOnClickListener(new View.OnClickListener() {

@Override public void onClick(View v) { } if(flag){ } //显示PopupWindow窗口 popupWindwShowing(); });

//初始化PopupWindow

initPopuWindow();

button = (Button)findViewById(R.id.refresh);

//设置点击事件,恢复下拉框列表数据,没有什么作用,纯粹是为了方便多看几次效果而设置

} button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { } initDatas(); optionsAdapter.notifyDataSetChanged(); });

* 初始化填充Adapter所用List数据 */ private void initDatas(){ datas.clear(); datas.add("北京");

datas.add("上海");

datas.add("广州");

datas.add("深圳");

datas.add("重庆");

datas.add("青岛");

datas.add("石家庄");

} /**

* 初始化PopupWindow

*/

private void initPopuWindow(){

initDatas();

//PopupWindow浮动下拉框布局

View loginwindow =

(View)this.getLayoutInflater().inflate(R.layout.options, null); listView = (ListView) loginwindow.findViewById(R.id.list);

//设置自定义Adapter

optionsAdapter = new OptionsAdapter(this, handler,datas); listView.setAdapter(optionsAdapter);

selectPopupWindow = new PopupWindow(loginwindow,

pwidth,LayoutParams.WRAP_CONTENT, true);

selectPopupWindow.setOutsideTouchable(true);

//这一句是为了实现弹出PopupWindow后,当点击屏幕其他部分及Back键时PopupWindow会消失,

//没有这一句则效果不能出来,但并不会影响背景

//本人能力极其有限,不明白其原因,还望高手、知情者指点一下

selectPopupWindow.setBackgroundDrawable(new BitmapDrawable()); }

/**

* 显示PopupWindow窗口

*

* @param popupwindow

*/

public void popupWindwShowing() {

//将selectPopupWindow作为parent的下拉框显示,并指定selectPopupWindow在Y方向上向上偏移3pix,

//这是为了防止下拉框与文本框之间产生缝隙,影响界面美化

//(是否会产生缝隙,及产生缝隙的大小,可能会根据机型、Android系统版本不同而异吧,不太清楚)

selectPopupWindow.showAsDropDown(parent,0,-3);

}

/**

* PopupWindow消失

*/

public void dismiss(){

selectPopupWindow.dismiss();

}

/**

* 处理Hander消息

*/

@Override public boolean handleMessage(Message message) { Bundle data = message.getData(); switch(message.what){ } case 1: //选中下拉项,下拉框消失 int selIndex = data.getInt("selIndex"); et.setText(datas.get(selIndex)); dismiss(); break; //移除下拉项数据 int delIndex = data.getInt("delIndex"); datas.remove(delIndex); //刷新下拉列表 optionsAdapter.notifyDataSetChanged(); break; case 2:

android仿qq发布说说选择视频篇三

仿QQ聊天系统课程设计

目录

绪论................................................................................................................................ 2 一.需求分析................................................................................................................ 2

1.1软件功能需求分析.......................................................................................... 3 1.2 安全需求分析................................................................................................. 3 二.总体设计................................................................................................................ 4

2.1 软件结构图..................................................................................................... 4 2.2 功能描述......................................................................................................... 4

2.2.1注册功能概要..................................................................................... 5 2.2.2登录功能概要..................................................................................... 5 2.2.3聊天功能概要..................................................................................... 6 2.3 安全设计......................................................................................................... 7 三.数据库设计............................................................................................................ 7

3.1概念结构设计.................................................................................................. 7 3.2逻辑结构设计.................................................................................................. 8 3.3物理结构设计.................................................................................................. 8 四.详细设计................................................................................................................ 8

4.1 用户聊天模块总体流程图............................................................................ 9 4.2 服务端模块.................................................................................................... 9 4.3 客户端模块.................................................................................................. 10 五.编码...................................................................................................................... 15 六.结论...................................................................................................................... 17 学习体会...................................................................................................................... 18 致谢.............................................................................................................................. 18 参考文献...................................................................................................................... 18

绪论

随着现代技术的不断输入和信息化的广泛普及,移动网络作为一种新兴事物,在近些年得到了前所未有的普及和深入,移动网络上的各种应用层出不穷,给各个阶层、各个年龄段的用户提供了不同的个性化的服务。而现代中小型企业的领导认识到进一步提高企业信息化的必要性。为使企业能在瞬息万变的信息时代生存下去,适应激烈的市场竞争,现代企业要求加强员工之间的交流和通信能力,尤其是领导和员工之间的共同能力,实时的交流系统就是在这种条件下诞生的。

在这个信息化时代,手机已成为继固话之后最为通俗的交流工具,“聊天”成了生活的必需品,这就有了系统下人与人之间的多样会话方式—QQ聊天。传统会话聊天或许是面对面闲话家常或许是通过打电话进行交流,但都存在各种不便及弊端 。而手机QQ,在手机系统下,占用手机相对很小的空间,系统的记录了QQ好友的信息,不仅突破了各种条件的束缚,减轻了机主的负担,更方便了使用者的通讯交流。

综上所述,本课题主要研究基于Android的移动聊天系统,以更好的用户体验性为目的开发出界面简洁,用户易操作的移动即时通信聊天工具。该聊天工具的主要功能:用户注册,登录,好友一对一聊天,添加新好友,修改个人信息等。在该即时通信工具中利用Bmob实现Android端与Bmob服务端的数据操作。Bmob对数据的增删改查找做了很好地封装,以及其批量的处理。客户端之间通过服务器对数据的转发实现相互通信。

一.需求分析

随着经济全球化的推进以及企业激烈的竞争,改善企业内部及整个供应链各环节的管理、调度资源配置,迅速适应客户的新需求和市场新机遇,是企业赢得竞争胜利的决定性因素。

需求分析是软件分析中的一个重要步骤。它的基本任务是要准确地分析出系统应用者的需要,以及系统目标必须具备哪些功能。这些功能必须准确

地,完整地体现出用户的要求。

1.1软件功能需求分析

通过对用户需求的市场调查的分析,确定反应用户需求的系统逻辑模型,把整个设计划分成3个单元,分别是程序启动、用户界面、后台服务。使用Android和java编程语言及网络数据库相结合,编写一个基于android端的移动聊天系统软件。这个系统提供多个用户及时并发通信的平台。未注册用户可以注册成系统成员,已注册用户可以通过登录进入聊天系统。在系统中用户可以选择与某一个用户聊天,用户可以查找好友或附近的人,可以添加好友或把好友加黑名单等。  用户注册 :用户在注册界面填入相关正确信息后,后台对其进行处理。  用户登录:用户输入自己的QQ帐号及密码后,点击登录,后台对其进行验

证,以及好友的查找,登录成功后返回该用户的会话界面。

 聊天:用户选定聊天对象后,对其发送信息,信息将由后台转发给选定的聊

天对象,进行,提示,显示。

 后台运行 用户可以退出主界面,将聊天软件在后台运行,当有消息传入时,

消息会用广播的形势显示。  后台管理:对用户的管理。

1.2 安全需求分析

由于Android系统自身具备的开放源码的特征,它的安全性能成为信息安全领域研究的一个重要课题。Android的安全性能主要体现在两个方面:Android的系统安全和数据安全。Android系统安全是指智能终端本身的安全,是对操作系统的保护,防止未授权的访问及对授权用户服务的拒绝或对未授权用户服务的允许,包括行为检测、记录等措施。Android的数据安全指确保存储数据完整性、合法性二个方面,要求做到系统正确地传输数据,授权程序顺利地读取数据。

Android安全中的一个重要的设计点是在默认的情况下应用没有权限执行对其他应用程序、操作系统或用户的有害操作,这些操作包括读取用户的隐私数据,访问网络,保持设备活动等等,应用程序的进程是一个安全的黑盒子,在没

有给它权限的时候它不能干扰其他应用程序。

二.总体设计

系统采用流行的C/S结构模式。系统的分析设计采用面向对象的技术,应用Visio等工具进行辅助设计。

2.1 软件结构图

图2.1 软件结构图

2.2 功能描述

进入该软件,进入登录界面,如果没有账号,则可以点击立即注册,进入注册界面进行注册,登录进入主界面,显示会话、联系人、设置,通过选择相应菜单进行相关操作。

2.2.1注册功能概要

 输入注册需要的信息,且保证正确  参与者:用户  执行者:用户

 前提条件:开启程序,进入注册界面

用户注册流程图:

图2.2.1 用户注册流程图

2.2.2登录功能概要  判断输入信息格式  服务器验证输入信息  跳转进入好友列表界面 登录流程图:

android仿qq发布说说选择视频篇四

Android插件化的思考——仿QQ一键换肤,思考比实现更重要!

Android插件化的思考——仿QQ一键

换肤,思考比实现更重要!

关于QQ的换肤,他们的实现思路我不是很清楚,但是你可以看一下这张换肤的截图

我们想使用哪个主题就直接下载就好了,这一实现的过程我们大致的可以猜想:

首选是下载到本地指定文件夹,然后通过插件加载到我们的apk,最后应用为皮肤,逻辑大致是这样的逻辑了,那我们是不是应该动动手啊动动脑?

首选我们新建一个工程好了——

PlugInSample

一.实现思路

其实说起来,这个插件的实现思路,确实是比较的麻烦,思来想去,还是一种办法比较靠谱,首先,我们刻意去获取手机上所有的安装的/未安装的程序,过滤掉没用的,留下我们的插件apk,我们的插件apk怎么去辨别呢?我们可用通过设置sharedUserId,然后用实体类把插件名称和包名保存下来,有了包名,就比较好说了,我们可用获取插件的上下文,也就是createPackageContext,然后就可以做点坏事了,我们可以去剖析我们的R文件

因为R文件里面都是静态的原因,我们很容易联想到反射机制,是的,我们可以再一次过

滤掉无用的信息,通过我们的PathClassLoader去加载,访问我们的内加载器反射到我们的图片ID,也就是后面的那段数字,然后,嘿嘿,就可以使用了,是不是思路比较清晰了?这里要注意的就是图片命名统一,这样就比较号过来,那具体我们应该怎么做?

二.PlugIn主程序

我们写一个Spinner,每次切换就直接换肤怎么样?OK,每次换的时候就从插件APK里加载我们的图片资源,看起来是比较顺畅的逻辑,那我们具体该怎么做呢?

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout

android:id="@+id/mLinearLayout"

xmlns:android="

android:layout_width="match_parent"

android:layout_height="match_parent"

android:gravity="center"

android:orientation="vertical">

<Spinner

android:id="@+id/mSpinner"

android:layout_width="wrap_content"

android:layout_height="wrap_content"/>

</LinearLayout>

1.初始化

/**

* 初始化View

*/

private void initView() {

//初始化控件

mSpinner = (Spinner) findViewById(R.id.mSpinner);

}

当然,我这刚应用就一个View,但是实际开发当中可不止,所以步骤一定要明了

2.获取所有的插件

/**

* 获取手机里的插件

*

* @return

*/

private List<PlugInBean> findPlugIn() {

mList = new ArrayList<>();

//获取相关信息

PackageManager mPackageManager = getPackageManager();

//获取卸载/未安装的安装包信息

List<PackageInfo> mUninstallPackage = mPackageManager.getInstalledPackages(PackageManager.GET_UNINSTALLED_PACKAGES); //遍历拿到我们的信息

for (PackageInfo info : mUninstallPackage) {

String pkgNmae = info.packageName;

//获取shareId,根据id判断是否是我们的ID

String shareUserId = info.sharedUserId;

if (!TextUtils.isEmpty(shareUserId)) {

//如果id相同

if (shareUserId.equals("com.liuguilin.share")) {

//且排除自己的包名

if (!pkgNmae.equals(getPackageName())) {

//这个就是我们的插件了

String lable = mPackageManager.getApplicationLabel(info.applicationInfo).toString();

PlugInBean bean = new PlugInBean();

bean.setLabelNmae(lable);

bean.setPackagNmae(pkgNmae);

mList.add(bean);

}

}

}

}

return mList;

}

这里就是过滤了一下,通过sharedUserId去拿到我们的插件APK了,然后就可以拿到我们的包名和应用名,他返回给我们一个数据集

//所有的插件

List<PlugInBean> allPlugIn = findPlugIn();

3.加载皮肤数据

/**

* 加载皮肤

*

* @param allPlugIn

*/

private void LoadSkin(List<PlugInBean> allPlugIn) {{android仿qq发布说说选择视频}.

//遍历

for (PlugInBean bean : allPlugIn) {

HashMap<String, Object> mMap = new HashMap<>();

mMap.put("lable", bean.getLabelNmae());

mMap.put("package", bean.getPackagNmae());

mData.add(mMap);

}

//建立Adapter并且绑定数据源

mAdapter = new SimpleAdapter(this, mData, android.R.layout.simple_list_item_1, new String[]{"lable"}, new int[]{android.R.id.text1});

//设置数据

mSpinner.setAdapter(mAdapter);

//设置监听事件

mSpinner.setOnItemSelectedListener(this);

}

我们通过刚才的数据集便可以把我们拿到的数据给直接显示出来了,这里其实可以判断一下size是否为0,如果为0的话也就没有插件,OK,我们设置adapter和监听,做到这里,其实你可以运行一下,虽然我们现在什么都没有,我们要做的还有很多

4.获取插件Context

/**

* 选中监听事件

*

* @param adapterView

* @param view

* @param i

* @param l

*/

@Override

public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) { PlugInBean bean = mList.get(i);

//插件的包名

String packageNmae = bean.getPackagNmae();

Context mContext = null;

try {

//无视警告 访问代码

mContext = createPackageContext(packageNmae, CONTEXT_IGNORE_SECURITY | CONTEXT_INCLUDE_CODE);

} catch (PackageManager.NameNotFoundException e) {

e.printStackTrace();

}

//获取图片

getImg(packageNmae, mContext);

//通过ID加载插件的图片

getWindow().setBackgroundDrawable(mContext.getResources().getDrawable(mListId.get(i))); }

@Override

public void onNothingSelected(AdapterView<?> adapterView) {

}

这里的代码就比较有意思,一定要仔细看,我们首先拿到选中的item的包名,通过我们的createPackageContext拿到我们的上下文,通过这两个我们可用拿到我们的资源ID,也就是R清单里面的ID,然后直接设置window的背景,这里为了好看才设置window的背景,实际上你要设置的是你根布局的背景,那好,我们来看一下如何通过插件的上下文和包名拿到R清单的资源ID

5.获取插件图片 / 返回图片R文件ID / 反射R文件

/**

* 获取插件图片 / 返回图片R文件ID / 反射R文件

*

* @param packageNmae

* @param mContext

*/

private void getImg(String packageNmae, Context mContext) {

//类加载器反射插件

PathClassLoader pathClass = new PathClassLoader(mContext.getPackageResourcePath(), ClassLoader.getSystemClassLoader()); //反射 $ 访问类加载器

try {

Class<?> forNmae = Class.forName(packageNmae + ".R$drawable", true, pathClass);

//拿到所有图片的id

Field[] files = forNmae.getDeclaredFields();

for (Field id : files) {

//过滤 / 这里的命名可以注意一下

if (id.getName().startsWith("img")) {

int drawId = 0;

////这就是我们图片R下的ID

drawId = id.getInt(R.drawable.class);

mListId.add(drawId);

}

}

} catch (ClassNotFoundException e) {

e.printStackTrace();

} catch (IllegalAccessException e) {

android仿qq发布说说选择视频篇五

34个最实用的Android精彩案例源码

主要带大家实现各种 APP中常用的功能,以及通过自定义 View,

上一篇:2分钟的自我介绍范文
下一篇:20出头的瑶族范文
推荐内容

Copyright @ 2013 - 2018 学习网 All Rights Reserved

学习网 版权所有 京ICP备16605803号