当前位置: 编程技术>移动开发
本页文章导读:
▪pngcrush运用 pngcrush使用
pngcrush -d [您想存放新PNG檔的目錄] *.png -iphonepngcrush 是 开放来源, 自由 命令行 计算机程序 那减少大小 PNG 文件。 压缩lossless,意味发生的图象将有质量和源象一样。 pngcrush的主.........
▪ 关于怎么完全退出Activity 关于如何完全退出Activity
相信能看到这里的人,都已经是找过很多文章了,先说需求,A-->B-->C 这样打开页面,在C的时候关闭finish()可以关闭D页面,但显示B页面,需求就是 当在C页面关.........
▪ 最终密码游戏 终极密码游戏
Activityview sourceprint?01 package android.m9; 02 03 import android.app.Activity; 04 import android.graphics.Color; 05 import android.os.Bundle; 06 import android.view.View; 07 import android.view.View.OnClickLi.........
[1]pngcrush运用
来源: 互联网 发布时间: 2014-02-18
pngcrush使用
pngcrush -d [您想存放新PNG檔的目錄] *.png -iphone
pngcrush 是 开放来源, 自由 命令行 计算机程序 那减少大小 PNG 文件。 压缩lossless,意味发生的图象将有质量和源象一样。 pngcrush的主要目的将通过尝试各种各样的压缩水平减少PNG IDAT datastream的大小。 然而, pngcrush可能也使用因为PNG图象的各种操作,例如改变 位深度. 有些操作可能甚而增加文件大小。
有一个任意“-畜生”选择,执行a 强力 易碎,当集合: 而不是使用几个共同的方法之一击碎文件,它将尝试所有。
内容
1 主要操作
2 减少通过取消颜色更正数据filesize
3 图象操作
4 大块和变数据操作
5 参见
6 外部链接
主要操作
对pngcrush的主要用途是为减少在IDAT部分包含的图像数据的大小。 PNG用途 放气 在速度和压缩比可能变化的压缩,从几乎没有压缩根本,但在非常高速到非常好压缩比,虽然以一张减低速度。 PNG压缩机被修造入许多画图程序可能不总申请最大金额压缩可能,并且是在图象从这些节目pngcrush最好执行。
pngcrush在命令行引起一个“优化”文件从使用以下格式unoptimised一:
pngcrush imageIn.png imageOut.png
pngcrush可能不总引起最小的PNG文件可能。 由于使用的另外或穷举搜索战略,其他节目在某些文件可以由几百分之给更好的结果。 OptiPNG, AdvanceCOMP 并且 PNGOUT例如,能关于PNG文件大小有时胜过pngcrush,虽然(和在某些情况下,必需的体力劳动代表用户的)到达结果通常增加花费的时间。
减少通过取消颜色更正数据filesize
pngcrush有一好处其他节目,因为它可能取消所有颜色更正数据(伽玛,白色平衡, ICC颜色外形,标准RGB颜色外形)从PNG文件,使用以下命令行选择:
pngcrush - REM gAMA - REM cHRM - REM iCCP - REM sRGB InputFile.png OutputFile.png
因为多数图表软件埋置额外颜色更正数据,通常不是需要的,这可能导致原物40 %小于的文件大小。 更加巨大的减少来自有256种颜色或较少的PNG图象(被标注的颜色)。
图象操作
pngcrush可以用于改变图象的参量。 例如,如果图象包含10种颜色,但有256个词条色板显示(8位), pngcrush可以用于使色板显示降低到4位一和削调色板对10个词条:
pngcrush - bit_depth 4 - plte_len 10 image1.png image2.png
pngcrush可能也改变图象的颜色类型。 为truecolour图象,改变颜色类型从2到0 (- c 0)转换它成灰度。 为truecolour阿尔法图象,改变颜色类型从6到2去除阿尔法通道。
大块和变数据操作
PNG图象包含大块以关于图象,例如它的决议(phys大块),它是最后更新的时间的信息(时间大块)和原文变数据(文本大块和它的变形)。 与pngcrush用户能编辑或去除那些辅助大块:
pngcrush - res 96 - REM时间-文本b “软件” “pngcrush” image1.png image2.png
上述命令设置图象决议对96 dpi,去除时间戳并且写描述pngcrush的原文变数据大块作为图象的创作软件。
pngcrush -d [您想存放新PNG檔的目錄] *.png -iphone
pngcrush 是 开放来源, 自由 命令行 计算机程序 那减少大小 PNG 文件。 压缩lossless,意味发生的图象将有质量和源象一样。 pngcrush的主要目的将通过尝试各种各样的压缩水平减少PNG IDAT datastream的大小。 然而, pngcrush可能也使用因为PNG图象的各种操作,例如改变 位深度. 有些操作可能甚而增加文件大小。
有一个任意“-畜生”选择,执行a 强力 易碎,当集合: 而不是使用几个共同的方法之一击碎文件,它将尝试所有。
内容
1 主要操作
2 减少通过取消颜色更正数据filesize
3 图象操作
4 大块和变数据操作
5 参见
6 外部链接
主要操作
对pngcrush的主要用途是为减少在IDAT部分包含的图像数据的大小。 PNG用途 放气 在速度和压缩比可能变化的压缩,从几乎没有压缩根本,但在非常高速到非常好压缩比,虽然以一张减低速度。 PNG压缩机被修造入许多画图程序可能不总申请最大金额压缩可能,并且是在图象从这些节目pngcrush最好执行。
pngcrush在命令行引起一个“优化”文件从使用以下格式unoptimised一:
pngcrush imageIn.png imageOut.png
pngcrush可能不总引起最小的PNG文件可能。 由于使用的另外或穷举搜索战略,其他节目在某些文件可以由几百分之给更好的结果。 OptiPNG, AdvanceCOMP 并且 PNGOUT例如,能关于PNG文件大小有时胜过pngcrush,虽然(和在某些情况下,必需的体力劳动代表用户的)到达结果通常增加花费的时间。
减少通过取消颜色更正数据filesize
pngcrush有一好处其他节目,因为它可能取消所有颜色更正数据(伽玛,白色平衡, ICC颜色外形,标准RGB颜色外形)从PNG文件,使用以下命令行选择:
pngcrush - REM gAMA - REM cHRM - REM iCCP - REM sRGB InputFile.png OutputFile.png
因为多数图表软件埋置额外颜色更正数据,通常不是需要的,这可能导致原物40 %小于的文件大小。 更加巨大的减少来自有256种颜色或较少的PNG图象(被标注的颜色)。
图象操作
pngcrush可以用于改变图象的参量。 例如,如果图象包含10种颜色,但有256个词条色板显示(8位), pngcrush可以用于使色板显示降低到4位一和削调色板对10个词条:
pngcrush - bit_depth 4 - plte_len 10 image1.png image2.png
pngcrush可能也改变图象的颜色类型。 为truecolour图象,改变颜色类型从2到0 (- c 0)转换它成灰度。 为truecolour阿尔法图象,改变颜色类型从6到2去除阿尔法通道。
大块和变数据操作
PNG图象包含大块以关于图象,例如它的决议(phys大块),它是最后更新的时间的信息(时间大块)和原文变数据(文本大块和它的变形)。 与pngcrush用户能编辑或去除那些辅助大块:
pngcrush - res 96 - REM时间-文本b “软件” “pngcrush” image1.png image2.png
上述命令设置图象决议对96 dpi,去除时间戳并且写描述pngcrush的原文变数据大块作为图象的创作软件。
[2] 关于怎么完全退出Activity
来源: 互联网 发布时间: 2014-02-18
关于如何完全退出Activity
相信能看到这里的人,都已经是找过很多文章了,先说需求,A-->B-->C 这样打开页面,在C的时候关闭finish()可以关闭D页面,但显示B页面,需求就是 当在C页面关闭,可以把ABC几个页面都关闭了。简单来说,整个程序的退出。
我也把我看过的文章和做过的经验总结一下吧:
1: Android2.1以下的程序,可以用以下方法完全退出
ActivityManager am = (ActivityManager)getSystemService(ACTIVITY_SERVICE); am.restartPackage(getPackageName());
但需要在AndroidManifest.xml声明权限
<uses-permission android:name="android.permission.RESTART_PACKAGES"/>
2:
Android2.2API restartPackage的描述 写道
This method is deprecated.
This is now just a wrapper for killBackgroundProcesses(String); the previous behavior here is no longer available to applications because it allows them to break other applications by removing their alarms, stopping their services, etc.
This is now just a wrapper for killBackgroundProcesses(String); the previous behavior here is no longer available to applications because it allows them to break other applications by removing their alarms, stopping their services, etc.
在2.2里面推出新的方法 killBackgroundProcesses(String packageName). 此函数的API Level最小为8,方法如下
ActivityManager am = (ActivityManager)getSystemService(ACTIVITY_SERVICE); am.killBackgroundProcesses(getPackageName());
需要在AndroidManifest.xml里声明权限
<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES"/>
3:但不知道为什么,我在2.2中 killBackgroundProcesses的方法也是无效的。经过许多文章的阅读,找到了以下的方法
A页面代码如下:
Intent intent = new Intent(); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);//关键! intent.setClass(A.this, B.class); startActivity(intent);
B页面代码如下:
Intent intent = new Intent(); intent.setClass(B.this, C.class); startActivity(intent);
C页面代码如下:
Intent startMain = new Intent(Intent.ACTION_MAIN); startMain.addCategory(Intent.CATEGORY_HOME);//必须,没有这个你可以看看效果~ startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);//可无 startActivity(startMain); System.exit(0);//关键,如果换成 finish()效果表面一样,但实际并无关进程
关键是,A页面(起始页面) C页面(关闭页面) 的设置
其实关于A页面的设置 很多文章都有说,但在C页面这里,却很少了。
通过已上三步,基本能关掉所有进程,因为在任务管理器没有了,如果最后的System.exit(0)换成finish()任务管理器里面仍显示该项目正在运行。
但这里还有一个bug的,就是关闭之后,再次启动程序,会去到B页面。。。 哈哈,这里的解决方法就很多了,根据大家的业务需求去做吧。
在Android做应用层,如果你想做好,想把体验做得更贴切,其实也是很复杂的事情。
希望大家看到这个文章能觉得有用,谢谢已阅者!
1 楼
1037055520
2011-08-25
但这里还有一个bug的,就是关闭之后,再次启动程序,会去到B页面。。。 哈哈,这里的解决方法就很多了,根据大家的业务需求去做吧。
请问:如果要回到启动模拟器的最初界面,应该怎么做呢?
请问:如果要回到启动模拟器的最初界面,应该怎么做呢?
2 楼
1037055520
2011-08-25
可以举例说明一下 解决的办法么?灰常感谢。。
[3] 最终密码游戏
来源: 互联网 发布时间: 2014-02-18
终极密码游戏
Activity
view sourceprint?
01 package android.m9;
02
03 import android.app.Activity;
04 import android.graphics.Color;
05 import android.os.Bundle;
06 import android.view.View;
07 import android.view.View.OnClickListener;
08 import android.widget.Button;
09 import android.widget.EditText;
10 import android.widget.TextView;
11
12 public class main extends Activity {
13 /** Called when the activity is first created. */
14 private TextView logo;
15 private EditText etStart, etEnd;
16 private TextView tv;
17 private EditText guess;
18 private Button reset, submit;
19 private EditText result;
20 private int key;
21 private int myguess;
22
23 @Override
24 public void onCreate(Bundle savedInstanceState) {
25 super.onCreate(savedInstanceState);
26 setContentView(R.layout.main);
27 // get id for widgets
28 logo = (TextView) findViewById(R.id.logo);
29 logo.setTextColor(Color.GRAY);
30 etStart = (EditText) findViewById(R.id.etStart);
31 etEnd = (EditText) findViewById(R.id.etEnd);
32 tv = (TextView) findViewById(R.id.tv);
33 tv.setText(R.string.tv);
34 guess = (EditText) findViewById(R.id.guess);
35 reset = (Button) findViewById(R.id.reset);
36 submit = (Button) findViewById(R.id.submit);
37 result = (EditText) findViewById(R.id.result);
38 // set not enabled to input
39 result.setEnabled(false);
40 etStart.setEnabled(false);
41 etStart.setText("" + 0);
42 etEnd.setEnabled(false);
43 etEnd.setText("" + 100);
44 result.setEnabled(false);
45 // random number
46 key = (int) (Math.random() * 100);
47 // set listener
48 reset.setOnClickListener(new OnClickListener() {
49 public void onClick(View v) {
50 // TODO Auto-generated method stub
51 key = (int) (Math.random() * 100);
52 guess.setText("");
53 etStart.setText("0");
54 etEnd.setText("100");
55 }
56 });
57 submit.setOnClickListener(new OnClickListener() {
58 public void onClick(View v) {
59 // TODO Auto-generated method stub
60 myguess = (Integer.decode(guess.getText().toString()))
61 .intValue();
62 if (key == myguess)
63 result.setText(R.string.bingo);
64 else {
65 if (myguess > key) {
66 etEnd.setText("" + myguess);
67 } else {
68 etStart.setText("" + myguess);
69 }
70 guess.setText("");
71 }
72 }
73 });
74 }
75
76 }
[代码] 布局xml
view sourceprint?
01 <?xml version="1.0" encoding="utf-8"?>
02 <LinearLayout
03 xmlns:android="http://schemas.android.com/apk/res/android"
04 android:layout_width="fill_parent"
05 android:orientation="vertical"
06 android:layout_height="wrap_content"
07 android:padding="15dip">
08 <TextView
09 android:id="@+id/logo"
10 android:layout_width="fill_parent"
11 android:layout_height="wrap_content"
12 android:gravity="center_horizontal"
13 android:text="@string/logo">
14 </TextView>
15 <TableLayout
16 android:layout_width="fill_parent"
17 android:layout_height="wrap_content"
18 android:orientation="vertical">
19 <TableRow
20 android:id="@+id/tableRow1"
21 android:layout_width="wrap_content"
22 android:layout_height="wrap_content"
23 android:gravity="center_horizontal">
24 <EditText
25 android:id="@+id/etStart"
26 android:layout_width="fill_parent"
27 android:layout_height="wrap_content"
28 android:width="80dip">
29 </EditText>
30 <TextView
31 android:id="@+id/tv"
32 android:layout_width="fill_parent"
33 android:layout_height="wrap_content">
34 </TextView>
35 <EditText
36 android:id="@+id/etEnd"
37 android:layout_width="fill_parent"
38 android:layout_height="wrap_content"
39 android:width="80dip">
40 </EditText>
41 </TableRow>
42 <TableRow
43 android:id="@+id/tableRow2"
44 android:layout_width="wrap_content"
45 android:layout_height="wrap_content"
46 android:gravity="center_horizontal">
47 <Button
48 android:text="@string/reset"
49 android:layout_width="fill_parent"
50 android:id="@+id/reset"
51 android:layout_height="wrap_content">
52 </Button>
53 <EditText
54 android:id="@+id/guess"
55 android:layout_width="fill_parent"
56 android:layout_height="wrap_content"
57 android:numeric="integer"
58 android:width="50dip">
59 </EditText>
60 <Button
61 android:text="@string/submit"
62 android:layout_width="fill_parent"
63 android:id="@+id/submit"
64 android:layout_height="wrap_content">
65 </Button>
66 </TableRow>
67 </TableLayout>
68 <EditText
69 android:padding="30dip"
70 android:id="@+id/result"
71 android:layout_width="fill_parent"
72 android:layout_height="wrap_content"
73 android:width="150dip"
74 android:gravity="center_horizontal">
75 </EditText>
76 </LinearLayout>
[代码] string.xml
view sourceprint?1 <?xml version="1.0" encoding="utf-8"?>
2 <resources>
3 <string name="app_name">FinalCode</string>
4 <string name="logo">FinalCode</string>
5 <string name="tv">~</string>
6 <string name="reset">开始</string>
7 <string name="submit">确定</string>
8 <string name="bingo">恭喜您猜对了!^ ^</string>
9 </resources>
Activity
view sourceprint?
01 package android.m9;
02
03 import android.app.Activity;
04 import android.graphics.Color;
05 import android.os.Bundle;
06 import android.view.View;
07 import android.view.View.OnClickListener;
08 import android.widget.Button;
09 import android.widget.EditText;
10 import android.widget.TextView;
11
12 public class main extends Activity {
13 /** Called when the activity is first created. */
14 private TextView logo;
15 private EditText etStart, etEnd;
16 private TextView tv;
17 private EditText guess;
18 private Button reset, submit;
19 private EditText result;
20 private int key;
21 private int myguess;
22
23 @Override
24 public void onCreate(Bundle savedInstanceState) {
25 super.onCreate(savedInstanceState);
26 setContentView(R.layout.main);
27 // get id for widgets
28 logo = (TextView) findViewById(R.id.logo);
29 logo.setTextColor(Color.GRAY);
30 etStart = (EditText) findViewById(R.id.etStart);
31 etEnd = (EditText) findViewById(R.id.etEnd);
32 tv = (TextView) findViewById(R.id.tv);
33 tv.setText(R.string.tv);
34 guess = (EditText) findViewById(R.id.guess);
35 reset = (Button) findViewById(R.id.reset);
36 submit = (Button) findViewById(R.id.submit);
37 result = (EditText) findViewById(R.id.result);
38 // set not enabled to input
39 result.setEnabled(false);
40 etStart.setEnabled(false);
41 etStart.setText("" + 0);
42 etEnd.setEnabled(false);
43 etEnd.setText("" + 100);
44 result.setEnabled(false);
45 // random number
46 key = (int) (Math.random() * 100);
47 // set listener
48 reset.setOnClickListener(new OnClickListener() {
49 public void onClick(View v) {
50 // TODO Auto-generated method stub
51 key = (int) (Math.random() * 100);
52 guess.setText("");
53 etStart.setText("0");
54 etEnd.setText("100");
55 }
56 });
57 submit.setOnClickListener(new OnClickListener() {
58 public void onClick(View v) {
59 // TODO Auto-generated method stub
60 myguess = (Integer.decode(guess.getText().toString()))
61 .intValue();
62 if (key == myguess)
63 result.setText(R.string.bingo);
64 else {
65 if (myguess > key) {
66 etEnd.setText("" + myguess);
67 } else {
68 etStart.setText("" + myguess);
69 }
70 guess.setText("");
71 }
72 }
73 });
74 }
75
76 }
[代码] 布局xml
view sourceprint?
01 <?xml version="1.0" encoding="utf-8"?>
02 <LinearLayout
03 xmlns:android="http://schemas.android.com/apk/res/android"
04 android:layout_width="fill_parent"
05 android:orientation="vertical"
06 android:layout_height="wrap_content"
07 android:padding="15dip">
08 <TextView
09 android:id="@+id/logo"
10 android:layout_width="fill_parent"
11 android:layout_height="wrap_content"
12 android:gravity="center_horizontal"
13 android:text="@string/logo">
14 </TextView>
15 <TableLayout
16 android:layout_width="fill_parent"
17 android:layout_height="wrap_content"
18 android:orientation="vertical">
19 <TableRow
20 android:id="@+id/tableRow1"
21 android:layout_width="wrap_content"
22 android:layout_height="wrap_content"
23 android:gravity="center_horizontal">
24 <EditText
25 android:id="@+id/etStart"
26 android:layout_width="fill_parent"
27 android:layout_height="wrap_content"
28 android:width="80dip">
29 </EditText>
30 <TextView
31 android:id="@+id/tv"
32 android:layout_width="fill_parent"
33 android:layout_height="wrap_content">
34 </TextView>
35 <EditText
36 android:id="@+id/etEnd"
37 android:layout_width="fill_parent"
38 android:layout_height="wrap_content"
39 android:width="80dip">
40 </EditText>
41 </TableRow>
42 <TableRow
43 android:id="@+id/tableRow2"
44 android:layout_width="wrap_content"
45 android:layout_height="wrap_content"
46 android:gravity="center_horizontal">
47 <Button
48 android:text="@string/reset"
49 android:layout_width="fill_parent"
50 android:id="@+id/reset"
51 android:layout_height="wrap_content">
52 </Button>
53 <EditText
54 android:id="@+id/guess"
55 android:layout_width="fill_parent"
56 android:layout_height="wrap_content"
57 android:numeric="integer"
58 android:width="50dip">
59 </EditText>
60 <Button
61 android:text="@string/submit"
62 android:layout_width="fill_parent"
63 android:id="@+id/submit"
64 android:layout_height="wrap_content">
65 </Button>
66 </TableRow>
67 </TableLayout>
68 <EditText
69 android:padding="30dip"
70 android:id="@+id/result"
71 android:layout_width="fill_parent"
72 android:layout_height="wrap_content"
73 android:width="150dip"
74 android:gravity="center_horizontal">
75 </EditText>
76 </LinearLayout>
[代码] string.xml
view sourceprint?1 <?xml version="1.0" encoding="utf-8"?>
2 <resources>
3 <string name="app_name">FinalCode</string>
4 <string name="logo">FinalCode</string>
5 <string name="tv">~</string>
6 <string name="reset">开始</string>
7 <string name="submit">确定</string>
8 <string name="bingo">恭喜您猜对了!^ ^</string>
9 </resources>
最新技术文章: