有没有一个模版用了很久的android手机网站模版

1193人阅读
自己写一个快速开发android模板
& & 有时候有些代码以前写过,再开发的时候拿来用,就可以节约很多时间,毕竟写过的以前肯定有所了解,再写一次就没必要了,所以这次自己总结出很多应用都需要的一些共性的东西,写到一个模板,以后直接拿来用。首先分析一下:
& &1.一个应用,首先需要一个欢迎页面,用于展示公司logo啊,或者应用logo,大概展示两三秒。
& &2.然后就是登陆注册页面,几乎没有应用是没有登陆注册的吧?
& &3.打印吐司,activity跳转,activity覆盖别的activity,这些基本方法。
& &4.网络连接,处理json
& &5.主页面framents,大部分应用有,也加上吧
& &6.自定义actionbar,不用系统自带的,自定义的会比较灵活
总结了6点,以后还有的话,继续补充,首先一步一步来....
& 一,一个应用,首先需要一个欢迎页面,用于展示公司logo啊,或者应用logo,大概展示两三秒。
& &这个简单,学过安卓的都会,直接上代码:
public class UiSlashActivity extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.ui_slash);
protected void onStart() {
super.onStart();
new Handler().postDelayed(new Thread() {
public void run() {
startActivity(new Intent(UiSlashActivity.this,UiStartActivity.class));
我这里展示的是三秒,可根据实际需求更改,这里注意的是要全屏展示,至于布局代码就不贴了,我的布局只是一个imageview。
二,然后就是登陆注册页面,几乎没有应用是没有登陆注册的吧?
在slashactivity和login,register之间还有一个选择注册还是登陆的startactivity,这个startactivity只有两个按钮,登陆,或者注册,代码很简单,就不贴了,便于理解,上图吧
我看过很多应用的这个页面都是登陆注册按钮不同颜色的,其中注册按钮比较多的是白色,但是还是按自己需求,更改颜色。
然后就是登陆注册页面啦,这两个页面都是startactivity的子页面,可以在主配置文件配置,代码如下:
android:name=&com.example.ui.UiLoginActivity&
android:label=&@string/login&
android:parentActivityName=&com.example.ui.UiStartActivity&&
&/activity&
android:name=&com.example.ui.UiRegisterActivity&
android:parentActivityName=&com.example.ui.UiStartActivity&
android:label=&@string/register&
&/activity&
这样做的效果是登陆注册页面都有一个返回按钮在actionbar上面。登陆注册页面代码每个应用差别略大,这里不说,我自己写的就只有一个editext和两个按钮。登陆进去了,就是主页面了。下面介绍主页面。
三.主页面framents,大部分应用有,也加上吧
我这里开始没有按上面总结的来写了,因为感觉从自己登陆进去写这个角度会比较顺。从总体到详细嘛。
主页面比较复杂,一个activity,好几个frament。先说底下的导航栏,可以用button,也可以自己重写view,这里选择重写view,同时为了实现横拖,也可以转换frament还要有个viewpaper,我这里以三个frament为例。
public class UiMyFramentActivity extends FragmentActivity implements EventListener,OnPageChangeListener,OnClickListener{
private ViewPager mViewP//下面三个frament
private ContactFragment contactF
private MyInformationFragment myInformationF
private RecentFragment recentF
private Fragment[]
private FragmentPagerAdapter mA
private int currentTabI//当前是哪个frament
private List&BottomTabView& views = new ArrayList&BottomTabView&();//存放底部导航栏的view
BottomTabView one =
BottomTabView two =
BottomTabView three =
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.frament_footer);
initView();
private void initView(){
mViewPager = (ViewPager) findViewById(R.id.id_viewpager);
initTab();
mAdapter = new FragmentPagerAdapter(getSupportFragmentManager())
public int getCount()
return fragments.
public Fragment getItem(int arg0)
return fragments[arg0];
mViewPager.setAdapter(mAdapter);
// mViewPager.setPageTransformer(true, new MyTransformer());
mViewPager.setOnPageChangeListener(this);
one = (BottomTabView) findViewById(R.id.id_indicator_one);
two = (BottomTabView) findViewById(R.id.id_indicator_two);
three = (BottomTabView) findViewById(R.id.id_indicator_three);
views.add(one);
views.add(two);
views.add(three);
one.setOnClickListener(this);
two.setOnClickListener(this);
three.setOnClickListener(this);
one.setIconAlpha(1.0f);
private void initTab(){
recentFragment = new RecentFragment();
contactFragment = new ContactFragment();
myInformationFragment = new MyInformationFragment();
fragments = new Fragment[] {recentFragment, contactFragment ,myInformationFragment };
getSupportFragmentManager().beginTransaction().add(R.id.fragment_container, recentFragment).
add(R.id.fragment_container, contactFragment).add(R.id.fragment_container, myInformationFragment).hide(contactFragment).show(recentFragment).commit();
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
private static long firstT
public void onBackPressed() {
// TODO Auto-generated method stub
if (firstTime + 2000 & System.currentTimeMillis()) {
super.onBackPressed();
Toast.makeText(UiMyFramentActivity.this,&one more click to quit&,Toast.LENGTH_LONG).show();
firstTime = System.currentTimeMillis();
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
* 此方法是在状态改变的时候调用,其中arg0这个参数有三种状态(0,1,2)。
* arg0 ==1的时辰默示正在滑动,arg0==2的时辰默示滑动完毕了,arg0==0的时辰默示什么都没做。
public void onPageScrollStateChanged(int arg0) {
if (arg0&0){
ContactFragment temp = (ContactFragment)fragments[1];
// temp.resetSideBar();
public void onPageScrolled(int position, float positionOffset,
int positionOffsetPixels) {
if (positionOffset & 0)
BottomTabView left = views.get(position);
BottomTabView
right = views.get(position + 1);
left.setIconAlpha(1 - positionOffset);
right.setIconAlpha(positionOffset);
public void onPageSelected(int arg0) {
Log.i(&frament&, &create &+arg0);
fragments[arg0].onResume();
if(arg0==1){
one.setDrawFlag(false);
public void onClick(View v) {
resetOtherTabs();
switch (v.getId())
case R.id.id_indicator_one:
views.get(0).setIconAlpha(1.0f);
//views.get(0).setDrawFlag(!views.get(0).getDrawFlag());
mViewPager.setCurrentItem(0, false);
case R.id.id_indicator_two:
views.get(1).setIconAlpha(1.0f);
mViewPager.setCurrentItem(1, false);
case R.id.id_indicator_three:
views.get(2).setIconAlpha(1.0f);
mViewPager.setCurrentItem(2, false);
* 重置其他的Tab
private void resetOtherTabs()
for (int i = 0; i & views.size(); i++)
views.get(i).setIconAlpha(0);
这样就可以实现点击底部导航栏,或者横拖实现framents的切换了,
public void onBackPressed() {
// TODO Auto-generated method stub
if (firstTime + 2000 & System.currentTimeMillis()) {
super.onBackPressed();
Toast.makeText(UiMyFramentActivity.this,&one more click to quit&,Toast.LENGTH_LONG).show();
firstTime = System.currentTimeMillis();
}上面的函数值得注意,很多应用有个防止由于用户错误操作导致应用退出的方案,就是一定时间内点击返回键两次才退出应用,上面这个函数就是实现这个功能的,两秒内,点击返回键两次将退出应用!至于frament这里就不说了,每个应用差别太大,这里只写大概相同的地方。
四,自定义的actionbar
actionbar也是千变万化的,比较常见的就是中间一个标题,左右两个各一个图标,或者右边有个隐藏多个选项的按钮,这里就说说第一种
&?xml version=&1.0& encoding=&utf-8&?&
&RelativeLayout xmlns:android=&/apk/res/android&
style=&@style/ActionBar&
android:baselineAligned=&false&
android:focusable=&true& &
&LinearLayout
android:id=&@+id/header_layout_leftview_container&
android:layout_width=&wrap_content&
android:layout_height=&fill_parent&
android:layout_alignParentLeft=&true&
android:gravity=&center_vertical|left&
android:orientation=&horizontal& &
&/LinearLayout&
&LinearLayout
android:id=&@+id/header_layout_middleview_container&
android:layout_width=&wrap_content&
android:layout_height=&fill_parent&
android:layout_centerHorizontal=&true&
android:layout_centerVertical=&true&
android:gravity=&center&
android:orientation=&horizontal& &
android:id=&@+id/header_htv_subtitle&
android:layout_width=&wrap_content&
android:layout_height=&wrap_content& /&
&/LinearLayout&
&LinearLayout
android:id=&@+id/header_layout_rightview_container&
android:layout_width=&wrap_content&
android:layout_height=&fill_parent&
android:layout_alignParentRight=&true&
android:gravity=&center_vertical|right&
android:orientation=&horizontal& &
&/LinearLayout&
&/RelativeLayout&
这是中间的标题。使用即可,主要是变化太多。根据需求可以更改。
五,杂七杂八的工具类
加密,压缩,处理字符串等。
public class AppUtil {
/* md5 加密 */
static public String md5 (String str) {
MessageDigest algorithm =
algorithm = MessageDigest.getInstance(&MD5&);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
if (algorithm != null) {
algorithm.reset();
algorithm.update(str.getBytes());
byte[] bytes = algorithm.digest();
StringBuilder hexString = new StringBuilder();
for (byte b : bytes) {
hexString.append(Integer.toHexString(0xFF & b));
return hexString.toString();
return &&;
/* 首字母大写 */
static public String ucfirst (String str) {
if (str != null && str != &&) {
= str.substring(0,1).toUpperCase()+str.substring(1);
/* 为 EntityUtils.toString() 添加 gzip 解压功能 */
public static String gzipToString(final HttpEntity entity, final String defaultCharset) throws IOException, ParseException {
if (entity == null) {
throw new IllegalArgumentException(&HTTP entity may not be null&);
InputStream instream = entity.getContent();
if (instream == null) {
return &&;
// gzip logic start
if (entity.getContentEncoding().getValue().contains(&gzip&)) {
instream = new GZIPInputStream(instream);
// gzip logic end
if (entity.getContentLength() & Integer.MAX_VALUE) {
throw new IllegalArgumentException(&HTTP entity too large to be buffered in memory&);
int i = (int)entity.getContentLength();
if (i & 0) {
String charset = EntityUtils.getContentCharSet(entity);
if (charset == null) {
charset = defaultC
if (charset == null) {
charset = HTTP.DEFAULT_CONTENT_CHARSET;
Reader reader = new InputStreamReader(instream, charset);
CharArrayBuffer buffer = new CharArrayBuffer(i);
char[] tmp = new char[1024];
while((l = reader.read(tmp)) != -1) {
buffer.append(tmp, 0, l);
} finally {
reader.close();
return buffer.toString();
/* 为 EntityUtils.toString() 添加 gzip 解压功能 */
public static String gzipToString(final HttpEntity entity)
throws IOException, ParseException {
return gzipToString(entity, null);
public static SharedPreferences getSharedPreferences (Context ctx) {
return ctx.getSharedPreferences(&com.app.demos.sp.global&, Context.MODE_PRIVATE);
public static SharedPreferences getSharedPreferences (Service service) {
return service.getSharedPreferences(&com.app.demos.sp.global&, Context.MODE_PRIVATE);
/////////////////////////////////////////////////////////////////////////////////
// 业务逻辑
/* 判断int是否为空 */
static public boolean isEmptyInt (int v) {
Integer t = new Integer(v);
return t == null ? true :
/* 获取毫秒数 */
public static long getTimeMillis () {
return System.currentTimeMillis();
/* 获取耗费内存 */
public static long getUsedMemory () {
long total = Runtime.getRuntime().totalMemory();
long free = Runtime.getRuntime().freeMemory();
return total -
六,网络连接,json处理
网络连接,我使用了android-async-http框架,使用别人的框架会比较安全,因为别人做的时候考虑到了网络链接上很多安全的问题,而这一块的知识我没太深入了解,所以还是用别人的好,处理json就一个工具类就可以了,也是根据需求自己改了,因为有的人喜欢把收到的json信息 封装到一个类里面,有的时候又不需要。
写个博客总结可以说是温故而知新啊,以前写的东西,现在都忘得差不多,重新看以后发现有代码上面还有很多不足,还需要对这些代码进行优化,继续努力!
代码下载:http://download.csdn.net/detail/u30227
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:13505次
排名:千里之外
原创:25篇
评论:18条
(1)(4)(2)(3)(8)(1)(6)
(window.slotbydup = window.slotbydup || []).push({
id: '4740881',
container: s,
size: '200,200',
display: 'inlay-fix'当前位置: >>
放心用手机 Android手机安全软件评测
放心用手机 Android手机安全软件评测
随着智能手机的普及,手机的安全性问题也日益提到了每个人的日程上。手机上常见的安全问题有:
  电话号码被盗:轻则广告骚扰,重则自己或亲友被骗。
  炒股、支付宝账号密码被盗:钱财洗劫一空。
  响一声电话、吸费陷井:话费很快耗尽。
  手机丢失:除手机本身
外,以上灾难全降临。
  为此,手机安全软件也应运而生。那么,究竟哪一款能为我们的手机保驾护航呢?今天我们就来考察一下Android手机上的安全软件。
  【测试平台】
  三星 GT-S5570,其上搭载Android 2.2.1操作系统。
  【参测软件】
  做杀毒软件得有一定的功底,于是,我们选择了电脑杀毒软件的手机版,共七款:
  (金山)手机卫士
  诺顿手机杀毒软件(汉化)
  QQ手机管家
  EC安全管理
  AVG Mobilation Antivirus
  瑞星手机安装软件
  360手机卫士
  【测试项目】
  这七款安全软件中,功能各异,有的多有的少,我们就以下大家最关心的问题进行测评。
  1.反恶意软件
  与电脑杀毒软件类似,我们最关心它们的查杀效果、查杀速度,能否在向手机拷贝文件或安装应用软件时进行查杀。另外,安装手机安全软件时虽然会自带病毒库,但免不了过时,为此,我们还测试了是否支持“云”查杀功能。所谓的“云”查杀是指通过手机网络连接到杀毒软件开发商的病毒库对病毒进行处理。这种杀毒方式的最大优势在于病毒库数据充足且随时处理最新状态,可有效抑制新型病毒。
  2.短信、呼叫过滤
  手机,核心功能在于通话和收发短信,这也是安全的重灾区。相信任何手机用户都收到过广告或骚扰短信、电话,“响一声电话”。为此,我们测试了这几款安全软件的黑白名单功能。另外,黑白名单只能躲过“明枪”,但难防“暗箭”,理所当然地,我们还应测试它们能否根据短信中的关键词(比如:性、女、费用、钱)进行智能过滤。
  3.流量控制
  目前,手机已能让我们网如影随,除包月外的流量费一般都很高,稍有不慎几十上百的费用就付之东流了,流量控制也是我们测试的项目之一。
  4.私密空间
  对私密好友发来的短信能否隐藏起来供以后悄悄观看?对私密好友打来的电话,能否设置不同的铃声或按设定内容自动回复短信,等方便时再回话?既然名为手机安全软件,那么这些功能应该有吧。
  表一:以上各项测试结果
  注:实时查杀是指向手机拷贝文件或安装其他软件时,自动查杀病毒。
  测试总结:总的来看,国内手机安全软件在通话、短信等安全防范上功能不相上下,而国外软件不太注意这些功能,国外软件更注意的是远程锁定或擦除功能。
  【特技展台】
  现在软件的同质化倾向严重,以上各款软件,有没有各自的独家秘技呢,让我们仔细查看。
  金山手机卫士
  金山手机卫士植入了软件推荐列表,实用性较强,几乎都是免费的软件工具,省得我们自己四处寻找了(见图1)。
  QQ安全助手
  QQ树大招风,QQ密码、Q币、游戏账号被盗事件屡有发生。安装QQ安全助手后可按提示下载并增加“QQ令牌”组件,可多增加一层安全防护(见图2)。
  瑞星手机杀毒软件
  瑞星手机杀毒软件能显示出手机中各项进程的耗电量(见图3),为我们关闭不常用的程序提供了重要依据,达到省电的目的。另外,瑞星还可对手机中的文件进行加密处理、书写加密日记等。
  360手机卫士
  你的手机是不是常被莫名扣费?360手机卫士可帮你查询(见图4)。另外,360还有一个所谓的“通话防窃听保护”,不过不知其工作原理,无条件测试效果如何。
  诺顿和ES
  它们的特色功能主要表现在防盗上。如果手机丢失,最担心的是可能是其中的通讯薄、私密短信外泄。诺顿或ES的远程锁定或擦除功能,可通过发送一则短信将被窃手机自动锁定起来(见图5)或自动擦除通讯簿中的电话号码。
  【友情推荐】
  这几款软件中,杀毒与短信、呼叫过滤功能不相上下,如果还有特殊需要求,推荐如下的选择:
  担心手机丢失:选用ES或诺顿。
  担心别人使用自己手机中的程序:ES安全管理。另外,AVG也有这一功能,但只能试用13天。
  保护Q币、游戏账号:QQ安全助手。
  保护手机中的文件(包括照片、音乐、视频等各种文件)或书写加密日记:瑞星手机杀毒软件。
  本次测评的其他工具中,它们有的功能以上几款几乎都有。最让人失望的是AVG,测试时我们发现有的功能无法使用,有的尚处于测试阶段,有的还有试用天数限制。
安卓手机杀毒软件乐安全使用测评_计算机软件及应用_IT/计算机_专业资料。功能特色...用户需设置“安全手机”和“数据备份邮箱” 才能完整使用乐安全手机防盗功 能...针对人们日常在使用手机的过程中存在的问题,整个项目基于 Android 开发平台,采用 ...通过反复不断的调试及测试,该手机安全卫士软件基本实现了用户所需的功能, 具有...通过反复不断的调试及测试,该手机安全卫士软件基本实现了用户所需的功能, 具有...软件开发背景智能手机成为现代人们生活和工作的必须品,它的普及促进了基于 Android...文档包括安卓手机的系统安全性介绍,常用手机安全软件介绍安卓手机的系统安全性 1...虚拟化等做出了测试,结果显示黑莓 OS 的安全性最好,而安卓系统的安全性则 排...清理大师、猎豹清理大师、360 清理大师是排行靠前的三款主 流的手机清理软件。...图:安卓清理大师、猎豹清理大师、360 清理大师 经测试, 安卓清理大师、 猎豹...如何保证安卓手机安全_计算机软件及应用_IT/计算机_专业资料。如何保持安卓智能手机的安全 安卓手机在近年来发展迅速, 相对于苹果手机它在中国有更多的用户, 根据调查...2015 年上半年手机安全报告前言 2015 年上半年,Android 安全形势持续严峻,基于腾讯手机管家安全服务的腾讯移动 安全实验室上半年数据显示,上半年新增 Android 病毒包...《Android 项目实战――手机安全卫士》 面试题答案第 1 章项目简介 1、 请问 Android 程序的真正入口是什么。 Android 程序的真正入口是 Application 类的 onCreate...手机安卓系统简介及测试经验总结一、Android 简介 Android(安卓)系统是手机或一些平板电脑等终端的操作系统,可以说是现 在最流行的系统之一。是目前最流行的手机智能...(软件) 06017 车晓岩 指导教师: 2014 年 6 月 1 日 基于 Android 的手机安全管理软件的设计与实现 摘要:移动互联网时代,手机已成为人们的生活必需...
All rights reserved Powered by
copyright &copyright 。文档资料库内容来自网络,如有侵犯请联系客服。9款好看又实用的手机APP UI模板
我的图书馆
9款好看又实用的手机APP UI模板
一款优秀的界面设计,最重要的两点应该是产品本身的UI和用户体验(UX),唯有将二者完美结合才能称作优秀的设计作品。但随着智能手机及各类设计工具的发展,用户对手机界面设计的要求也与日俱增。这也就解释了为什么手机应用市场有很多APP功能差不多,但我们只使用一款就够了,而这一款必定有更优的界面设计及用户体验。App界面设计出色与否将直接影响App用户的体验。要提高UI设计水平,除了经历一定的实践及积累,还可以动手临摹或欣赏一些手机UI设计作品,提高审美能力、增加设计灵感。今天小编给大家挑选了9款由国内外设计大咖制作的高质量手机APP UI模板,涵盖摄影、新闻、游戏、美食、房地产等板块,附有具体的手机支持版本及下载地址哦。看看有没有你中意的APP模板吧,Enjoy!(一)Android手机模板1. 游戏类-Fortin Quiz Pro推荐:★★★&这是一款安卓手机上在线测试的游戏APP模板,其中的问题是以“图片+文字”的组合形式出现,并且按照不同的难易度进行了分类。此外,这款模板包含非传统的语音测试方式,且支持国外的Google Leaderboard排行榜,可以与好友实时分享测试分数,看看谁更机智呢!价格:$23软件版本:Android 4.1+2. 新闻类-Android News App推荐:★★★★&&这款模板主要由安卓客户端及带有MYSQL服务器的PHP组成,可以帮助你快速搭建起自己的新闻平台。一大亮点功能就是它能根据用户的具体要求来启用、禁用功能。如果你希望找到一款支持多国语言的模板,那么这款模板就会派上用场了。价格:$18软件版本:Android 4.0+3. 生活类-City Guide推荐:★★★★&&City Guide是一款提供实时定位及导航的APP模板,有8种不同的配色主题,同时支持动画效果、响应式设计等。它最大的优点在于使用本地的SQL数据库来存储数据,从而最大限度地让我们摆脱对互联网的依赖。价格:$20软件版本:Android 4.0+4. 美食类-Recipes推荐:★★★★★&&一看便知这是一款专为美食达人打造的美食菜谱类App。小伙伴可以通过在它的Android Studio中创建自己喜欢的食谱、分类、推送通知、In-App Purchase、购物清单等。此外,国民也推出过这款Recipes模板的原型例子,其中添加了图片及滚动的微交互,达到了极高还原性,非常适合刚上手的设计菜鸟参考借鉴。价格:$25软件版本:Android 4.0+(二)iOS手机模板5. 摄影类-PhotoGram推荐:★★★★&&PhotoGram是一款可高度自定义的摄影模板,提供多种有趣、有用的功能:滤镜,尺寸裁剪,光效调整,文字/视频添加等。照片美化后,可以通过自带的分享按钮,分享给身边的小伙伴,一秒见证黑科技!价格:$19软件版本:iOS 3.1+6. 项目管理类-Task Reminder推荐:★★★★&&如果你也认同只有合理的计划才能高效办事,那么这款模板会是你的菜!这是当下iOS客户端中最流行的项目管理类App之一,可无限制创建任务及提醒清单,友好的开发环境及设计也受众多程序员的青睐。价格:$49软件版本:iOS 7.0+7. 购物类-Store Finder推荐:★★★★★&&不可否认,网购已经成为很多人日常生活中密不可分的一种消费方式。但不可避免有时候需要在实体商店中购买的情况,例如需要试穿的衣服或鞋子等。这种情况下,像Store Finder这类App就派上用场了。支持手势及缩放,也可离线操作。价格:$21软件版本:iOS 8.0+8. 房地产类-Real Estate Finder推荐:★★★★&&顾名思义,这是一款能帮助用户获取房地产类资讯的App。可以通过卫星定位及Apple地图,进行实时搜索及导航。同时集成多种通讯方式:电话、短信和电子邮件,一步就到位。价格:$23软件版本:iOS 7.0+(三)跨平台通用模板9. ionWordPress推荐:★★★★★&&这是一款适用于多个平台(包括Android/iOS/WordPress)的通用App模板,拥有精致的界面及可利用后期开发的语言环境支持,支持HTML5/CSS/JavaScript等。常用的主要页面:登陆/注册页面、菜单页面、详情页面、工作台页面等都能找到。价格:$19软件版本:Android 4.+, iOS 6.1+, WordPress 4.0+以上便是小编推荐大家可以下载使用的精美App UI模板。如果你也想亲自制作一套“低调奢华有内涵”的App UI模板,那可以试试这款工具。除了海量的封装组件(200个)及图标(3000个)资源,摩客现推出了直接导入设计模板的功能,用户可以根据不同的设计需求来选择、修改示例项目,提高效率、激发灵感。如果感兴趣的小伙伴,可以看看这里更多的App及网页。&&更多模板APP模板及UI资源网站:1.&Themeforest&- 超全的App模板及网站主题平台网址:2.&W3Layouts&– 付费、免费的APP及图标资源平台网址:3.&Graphicriver&– 搜罗App及网页相关所有字体、图标等素材资源网址:4.&Pinterest&– 在线UI图片合辑社区网址:5.&Template Monster&– 多平台兼容的应用、网站UI素材库网址:6.&PNGTree&-提供高质量及多种格式图片资源平台,可免费下载网址:如果有任何建议或意见,欢迎随时交流。
TA的最新馆藏
喜欢该文的人也喜欢

我要回帖

更多关于 android 打印标签模版 的文章

 

随机推荐