首页 文章 精选 留言 我的

精选列表

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

简单的安卓点击按钮跳转示例(整蛊扣费)

版权声明:本文可能为博主原创文章,若标明出处可随便转载。 https://blog.csdn.net/Jailman/article/details/78016364 实际上并无扣费功能,只是一个简单的按钮功能示例 AndroidManifest.xml文件 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="eu.apps.jmeyer.prankingstudio"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" 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=".testActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest> MainActivity,回退按钮被重定义 package eu.apps.jmeyer.prankingstudio; import android.content.Intent; import android.graphics.Color; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.KeyEvent; import android.view.View; import android.widget.Button; import android.widget.RelativeLayout; import android.widget.TextView; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final Button cost = (Button) findViewById(R.id.costbutton); final Button jump = (Button) findViewById(R.id.jumpbutton); final RelativeLayout layout = (RelativeLayout) this.findViewById(R.id.activity_main); final boolean[] visibility_Flag = {false}; cost.setOnClickListener(new View.OnClickListener(){ public void onClick(View view){ if(visibility_Flag[0]){ Intent intent = new Intent(MainActivity.this, MainActivity.class); startActivity(intent); visibility_Flag[0] = false; } else { layout.setBackgroundColor(Color.GREEN); TextView lblTitle=(TextView)findViewById(R.id.blufftext); lblTitle.setText("恭喜!扣费成功,您目前欠费250元!"); lblTitle.setTextColor(Color.RED); visibility_Flag[0] =true; } } }); jump.setOnClickListener(new View.OnClickListener(){ public void onClick(View view){ Intent intent = new Intent(MainActivity.this, testActivity.class); startActivity(intent); } }); } /** * 监听Back键按下事件,方法1: * 注意: * super.onBackPressed()会自动调用finish()方法,关闭 * 当前Activity. * 若要屏蔽Back键盘,注释该行代码即可 */ @Override public void onBackPressed() { super.onBackPressed(); System.out.println("按下了back键 onBackPressed()"); } /** * 监听Back键按下事件,方法2: * 注意: * 返回值表示:是否能完全处理该事件 * 在此处返回false,所以会继续传播该事件. * 在具体项目中此处的返回值视情况而定. */ @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if ((keyCode == KeyEvent.KEYCODE_BACK)) { System.out.println("按下了back键 onKeyDown()"); return false; }else { return super.onKeyDown(keyCode, event); } } @Override protected void onDestroy() { super.onDestroy(); System.out.println("执行 onDestroy()"); } } testActivity package eu.apps.jmeyer.prankingstudio; import android.app.Activity; import android.os.Bundle; /** * Created by jailman on 2017/9/15. */ public class testActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.testlayout); } } layout activity_main.xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:theme="@android:style/Theme.Black.NoTitleBar" tools:context="eu.apps.jmeyer.prankingstudio.MainActivity"> <TextView android:id="@+id/blufftext" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="点击按钮有惊喜!" android:layout_centerHorizontal="true" /> <Button android:id="@+id/costbutton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="惊喜!" android:layout_below="@+id/blufftext" android:layout_alignParentStart="true" android:layout_marginStart="70dp" android:layout_marginTop="112dp" /> <Button android:id="@+id/jumpbutton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/costbutton" android:layout_alignBottom="@+id/costbutton" android:layout_marginStart="66dp" android:layout_toEndOf="@+id/costbutton" android:text="跳转!" /> </RelativeLayout> layout testlayout.xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/testlayout"> <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="This is test view!" android:layout_marginTop="169dp" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" /> </RelativeLayout> build.gradle apply plugin: 'com.android.application' android { compileSdkVersion 24 buildToolsVersion '25.0.0' defaultConfig { applicationId "eu.apps.jmeyer.prankingstudio" minSdkVersion 19 targetSdkVersion 24 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:24.2.1' testCompile 'junit:junit:4.12' }

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

安卓当下最流行的吸顶效果的实现(上)

开始逐渐领略到ItemDecoration的美~ 今天让我 使用 ItemDecoration 来完成 可推动的悬浮导航栏的效果,最终实现的效果如下图: 具体实现步骤如下: 根据我前面的文章所讲的RecyclerView的基本使用,我们先来完成基本的recyclerView: 第一步:布局里写一个RecyclerView 第二步:实例化 recyclerView=(RecyclerView)findViewById(R.id.recyclerView); 第三步:获取所需的数据 (这里我们来个真实点的情景,去联网请求数据) /** *联网请求所需的url */ publicStringurl="http://api.meituan.com/mmdb/movie/v2/list/rt/order/coming.json?ci=1&limit=12&token=&__vhost=api.maoyan.com&utm_campaign=AmovieBmovieCD-1&movieBundleVersion=6801&utm_source=xiaomi&utm_medium=android&utm_term=6.8.0&utm_content=868030022327462&net=255&dModel=MI%205&uuid=0894DE03C76F6045D55977B6D4E32B7F3C6AAB02F9CEA042987B380EC5687C43&lat=40.100673&lng=116.378619&__skck=6a375bce8c66a0dc293860dfa83833ef&__skts=1463704714271&__skua=7e01cf8dd30a179800a7a93979b430b2&__skno=1a0b4a9b-44ec-42fc-b110-ead68bcc2824&__skcy=sXcDKbGi20CGXQPPZvhCU3%2FkzdE%3D"; //联网获取数据 getDataFromNet(); /** *使用okhttpUtils进行联网请求数据 */ privatevoidgetDataFromNet(){ OkHttpUtils. get() .url(url) .build() .execute(newStringCallback(){ @Override publicvoidonError(okhttp3.Callcall,Exceptione,intid){ Log.e("TAG","联网失败"+e.getMessage()); } @Override publicvoidonResponse(Stringresponse,intid){ Log.e("TAG","联网成功=="+response); //联网成功后使用fastjson解析 processData(response); } }); } /** *使用fastjson进行解析 * *@paramjson */ privatevoidprocessData(Stringjson){ //这里使用GsonFormat生成对应的bean类 JSONObjectjsonObject=parseObject(json); Stringdata=jsonObject.getString("data"); JSONObjectdataObj=JSON.parseObject(data); Stringcoming=dataObj.getString("coming"); List<WaitMVBean.DataBean.ComingBean>comingslist=parseArray(coming,WaitMVBean.DataBean.ComingBean.class); //测试是否解析数据成功 //StringstrTest=comingslist.get(0).getCat(); //Log.e("TAG",strTest+"222"); //解析数据成功,设置适配器--> } } 第四步:解析数据成功后,创建并设置适配器,并传递相关数据 //解析数据成功,设置适配器 MyRecyclerAdapteradapter=newMyRecyclerAdapter(mContext,comingslist); recyclerView.setAdapter(adapter); 适配器: publicclassMyRecyclerAdapterextendsRecyclerView.Adapter{ privatefinalList<WaitMVBean.DataBean.ComingBean>comingslist; privatefinalContextmContext; privatefinalLayoutInflatermLayoutInflater; publicMyRecyclerAdapter(ContextmContext,List<WaitMVBean.DataBean.ComingBean>comingslist){ this.mContext=mContext; this.comingslist=comingslist; mLayoutInflater=LayoutInflater.from(mContext); } @Override publicRecyclerView.ViewHolderonCreateViewHolder(ViewGroupparent,intviewType){ returnnewMyViewHolder(mLayoutInflater.inflate(R.layout.date_item,null)); } @Override publicvoidonBindViewHolder(RecyclerView.ViewHolderholder,intposition){ MyViewHoldermyholder=(MyViewHolder)holder; myholder.setData(position); } @Override publicintgetItemCount(){ returncomingslist.size(); } classMyViewHolderextendsRecyclerView.ViewHolder{ privateTextViewmv_name; privateTextViewmv_dec; privateTextViewmv_date; privateImageViewimageView; publicMyViewHolder(ViewitemView){ super(itemView); mv_name=(TextView)itemView.findViewById(R.id.mv_name); mv_dec=(TextView)itemView.findViewById(R.id.mv_dec); mv_date=(TextView)itemView.findViewById(R.id.mv_date); imageView=(ImageView)itemView.findViewById(R.id.image); } publicvoidsetData(intposition){ WaitMVBean.DataBean.ComingBeancoming=comingslist.get(position); Stringname=coming.getNm(); mv_name.setText(name); Stringdate=coming.getShowInfo(); mv_date.setText(date); Stringdec=coming.getScm(); mv_dec.setText(dec); //注:当你发下图片无法打开是,做个字符串替换即可 StringimagUrl=coming.getImg(); StringnewImagUrl=imagUrl.replaceAll("w.h","50.80"); //使用Glide加载图片 Glide.with(mContext) .load(newImagUrl) .into(imageView); } } } item的布局: <?xmlversion="1.0"encoding="utf-8"?> <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="#ffffff" android:gravity="center_vertical" android:orientation="horizontal"> <ImageView android:id="@+id/image" android:layout_width="70dp" android:layout_height="110dp" android:layout_marginBottom="5dp" android:layout_marginLeft="10dp" android:layout_marginRight="8dp" android:layout_marginTop="5dp"/> <LinearLayout android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginLeft="6dp" android:layout_weight="1" android:orientation="vertical"> <TextView android:id="@+id/mv_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="神奇動物在哪裏" android:textColor="#000000" android:textSize="15sp"/> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="观众" android:textColor="#55000000" android:textSize="14sp"/> <TextView android:id="@+id/tv_people" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="9.0" android:textColor="#FFCE42" android:textSize="18sp"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="|专业" android:textColor="#55000000" android:textSize="14sp"/> <TextView android:id="@+id/tv_professional" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="6.7" android:textColor="#FFCE42" android:textSize="18sp"/> </LinearLayout> <TextView android:id="@+id/mv_dec" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="8dp" android:text="神奇動物城,法師顯超能" android:textColor="#99000000" android:textSize="11sp"/> <TextView android:id="@+id/mv_date" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:text="今天165家影院放映2088场" android:textColor="#99000000" android:textSize="11sp"/> </LinearLayout> </LinearLayout> 第五步:一定不能忘!!! recycleView不仅要设置适配器还要设置布局管理者,否则图片不显示 GridLayoutManagermanager=newGridLayoutManager(this,1); recyclerView.setLayoutManager(manager); 此时RecyclerView简单的完成效果如下: 下面开始做 可推动的 悬浮导航栏: 接下文 本文作者:佚名 来源:51CTO

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

谷歌发布安卓版 Gboard,将搜索添加到键盘

Google 在昨天发布了适用于 Android 的 Gboard 键盘,在 Android 平板键盘的基础上增加了扩展功能和更深入的 Google 服务集成。 Gboard 的 Android 版本在 iOS 发布几个月后。 它在 Android 上的发布取代了 “Google键盘”。 Gboard 能够使用手势输入、插入GIF,并从键盘共享搜索。 更新日志 包括: G按钮(在设置中启用)提供从键盘快速访问搜索 弹出工具栏(当G按钮未启用时)提供对主题、设置、单手模式和搜索的访问 可选专用号码行 最多三种活动语言,优先选择一种(以前必须切换) 手势输入现在称为滑动输入。 搜索表情符号 重新排列的表情符号面板,底部有组选择 表情符号在他们周围有明亮的光环效应 GIF 按钮始终显示,但在没有支持的应用中禁用。 该更新尚未同步到 Google Play,但很快就会发生。 在此期间,用户可以自行下载 APK。 文章转载自 开源中国社区 [http://www.oschina.net]

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

安卓应用下载量是iOS的两倍

【大咖・来了 第7期】10月24日晚8点观看《智能导购对话机器人实践》 苹果和谷歌(微博)都会在每年夏季的开发者大会上公布其应用商店的统计数字。这些数字只是在预先安排好的活动中公布的大概数字,没有可比性,但也能给我们提供一点有用的信息。 去年夏季,苹果和谷歌分别在各自的开发者大会上公布了其应用商店向开发者支付的款额:Google Play在过去12个月里支付了50亿美元,iOS App Store则支付了100亿美元。Android用户数量是iOS的两倍,这等于说平均每个iOS用户在应用上的支出是Android用户大约4倍多。 今年,苹果公布了相同的数字——100亿美元(更确切的说,苹果公布了在今年的WWDC上公布了累计数字300亿美元,而去年公布的累计数字是200亿美元)。这个数字没有增长的部分原因可能是四舍五入的结果,但这亦意味着还是用户消费平均减少,因为iOS的用户群一直在不断增长。谷歌没有在今年的I/O大会上公布其应用商店支出额,但今年早些时候公布的数字是70亿美元。看上去好像Google Play增长比iOS App Store要快,有可能会在今年内反超(除非是苹果把很大一部分零头砍掉了——2013年增长图中的不平滑部分就是四舍五入的结果。) 今年Google Android的用户数仍然接近iOS用户的两倍,这意味着平均每位Android用户的支出现在可能接近iOS用户平均支出的一半。这个数字比去年的四分之一有进步,但差距仍然很大。 另外,今年是自2013年来***次可以比较Android应用和iOS应用的下载量。 在过去的12个月里,Google Play应用被下载500亿次,而iOS应用的下载量为250亿,Google Play的增长显得快一些。由于Google Play拥有更多的用户,每位Android和iOS用户下载的应用数量大概一样大。 顺便提一句,这些数字显示,在过去的一年里,Android和iOS用户总共下载了750亿个(次)应用,在应用上的支出大概是250亿美元。 【责任编辑: chenqingxiang TEL:(010)68476606】

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

数据解读:过半iPhone6卖给了原安卓用户

【大咖・来了 第7期】10月24日晚8点观看《智能导购对话机器人实践》 iPhone6的热销已是不争的事实。但与以往靠自家用户升级拉动不同,此次拉动新款iPhone6销售的主力竟然是其对手Android用户。近日,Citi Research分析显示:仅有20%的iPhone老用户升级到了iPhone 6或iPhone 6 Plus;大约有50%的iPhone 6/6 Plus用户来自其他手机平台,Android占大多数。这个统计确实有些出乎业内的意料。那么iPhone6为何呈现与以往iPhone销售不同的趋势?热销背后究竟掩饰了什么? 众所周知,智能手机产业发展今天,创新已是手机厂商们面临的共性挑战,苹果也不例外。尽管苹果采用的是一年一款新iPhone的策略,但在此周期内每每都要推出具有创新性的手机也不是轻而易举的事情。实际上从iPhone6的发布看,除了大屏之外,其给业内留下的创新的东西并不深刻。而是否推出大屏iPhone在苹果心中始终是个结。最主要的担心就是对于自身平板iPad的冲击。其实早在iPhone6发布之前,iPad就已经下滑,当然最主要的原因就是Android大屏手机的冲击。 既然如此,苹果为何还要推出大屏iPhone呢?这不是给自己的iPad雪上加霜吗?聪明的苹果自然知道iPad和iPone业务对于自身营收、利润乃至股价的影响,与其坐视Android手机的蚕食,变向增加Android手机的销量,不如肥水不留外人田。更为重要的是,从iPhone6的创新看,确实没有明显的可圈可点之处,所以大屏就成为苹果此次推出iPhone6的***亮点。事后的事实也证明苹果此举确实加剧了iPad的下滑(苹果CEO库克本人也承认了这点),但却遏制了Android手机的增长,关键是掩饰了苹果在智能手机阶段性(从iPhone5S到iPhone6期间)创新的真空期,进而为新一代iPhone的创新又多预留出一年左右的缓冲期。 需要说明的iPhone6大屏这个亮点是针对渴望大屏Android用户的,至少与原有的iPhone用户相比。这从前述的iPhone原有用户升级不如Android用户比例看可见一斑。也就是说,苹果之前深知如果不推大屏的话,iPhone6靠原有iPhone用户的拉动效应将非常有限。不是iPhone用户不愿意换机,而确实是因为苹果的用户对于什么才是iPhone的创新相当了解。当然,我们并非否认大屏对于原有iPhone用户没有吸引力,毕竟有20%的原有iPhone用户选择了iPhone6,但业内是否注意到,仍有20%左右的人依然选择了之前的iPhone5S,且目前尚有800万的更早之前的iPhone4S用户没有选择升级iPhone6。原因何在?除了价格因素外,恐怕起决定作用的还是iPhone的创新不足(对于苹果用户而言)。 从上述不难看出苹果对于iPhone6的定位及策略。即以大屏这个Android阵营***的诉求为出发点,在掩饰其对于苹果原有iPhone用户创新不足的同时,既达到了引导Android阵营用户进入iOS阵营目的,同时也为原有iPhone用户期待的创新留出了时间(相信在下一代iPhone中会有所体现),可谓是一箭双雕。其实苹果iPhone6的热销也在启示业内所谓创新终有瓶颈期,那么如何应对?在创新的瓶颈期仍能实现增长,也许除了自身不断加强出创新外,抓住对手和对手用户的痛点不失为一种好的缓冲策略,进而让自己未来的创新更具时间和空间,而不是仓促以创新证明频频发布新品,但收效却甚微。 【责任编辑: chenqingxiang TEL:(010)68476606】

资源下载

更多资源
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部分的功能。

用户登录
用户注册