小DEMO(JAVA关键字学习)一

学习技术最好的方式就是实战,看书看不到的东西太多了,实际操作时会碰到各种书本里提不到的问题,解决这些问题会迅速提升你的能力,你是一个solider,最好成长的方式就是实战。下面我们介绍一下个人做的一个小DEMO:JAVA关键字学习,这可以简单的理解成一本电子书,却也用到了一些技术,有助于初学者提升自己的能力。

进入程序的第一个图用于介绍作用:

第二个页面就进入正题了介绍了Abstract关键字:

总结了一下:本小DEMO共用到了以下几点技术:

1.怎么解决多文字文本的排版问题;

2.怎么更好的实现手势翻页;

3.怎么实现Intent跳转动画效果;

4.怎么实现TTS;

5.如何实现程序开始的动画效果。

下面我们来一一解决这些问题,关于怎么解决多文字文本的排版问题,我想到了html结合webview的方式实现,事先做好html页面,存于asset文件夹下,用webview控件展示html,这样文本效果更好。

关于第二点,为什么说更好的手势翻页?我们知道手势翻页会用到GestureDetector类,为什么讲更好的实现,请看下面的代码,

我们以第一页为例:

package org.yayun.keywordReader;import java.util.Locale;import net.youmi.android.AdManager;import net.youmi.android.banner.AdSize;import net.youmi.android.banner.AdView;import net.youmi.android.spot.SpotManager;import android.app.Activity;import android.content.Context;import android.content.Intent;import android.graphics.Typeface;import android.os.Bundle;import android.speech.tts.TextToSpeech;import android.util.Log;import android.view.Display;import android.view.GestureDetector;import android.view.GestureDetector.OnGestureListener;import android.view.Menu;import android.view.MenuItem;import android.view.MotionEvent;import android.view.View;import android.view.View.OnTouchListener;import android.view.Window;import android.view.WindowManager;import android.webkit.WebView;import android.widget.ImageButton;import android.widget.LinearLayout;import android.widget.TextView;import android.widget.Toast;public class Abstract_activity extends Activity {private TextToSpeech tts;private ImageButton ImageButton01;private WebView webView = null;private GestureDetector detector;private TextView textView = null;private TextView yinbiaoTextView = null;private int mWidth;public boolean onCreateOptionsMenu(Menu menu) {// !!!!!!!!!!!!?menu.add(Menu.NONE, Menu.FIRST + 1, 0, "退出").setIcon(null);menu.add(Menu.NONE, Menu.FIRST + 2, 1, "关于我们").setIcon(null);menu.add(Menu.NONE, Menu.FIRST + 3, 2, "检测更新").setIcon(null);return true;}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {// !!!!!!!!!!!!?switch (item.getItemId()) {case Menu.FIRST + 1:finish();break;case Menu.FIRST + 2:break;case Menu.FIRST + 3:break;default:break;}return false;}public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState); // 生命周期方法SpotManager.getInstance(this).loadSpotAds();SpotManager.getInstance(this).showSpotAds(this);AdManager.getInstance(this).init("c5fbddafb37a478e","eee1729b466a9d36", false);requestWindowFeature(Window.FEATURE_NO_TITLE);// 填充标题?super.setContentView(R.layout.abstract_layout); // 设置要使用的布局管理?AdView adView = new AdView(this, AdSize.FIT_SCREEN);// 加入广告LinearLayout adLayout = (LinearLayout) findViewById(R.id.adLayout);// 加入广告adLayout.addView(adView);// 加入广告tts = new TextToSpeech(this, ttsInitListener);ImageButton01 = (ImageButton) this.findViewById(R.id.ImageButton01);detector = new GestureDetector(new GestureListener());this.textView = (TextView) super.findViewById(R.id.mytext);this.yinbiaoTextView = (TextView) super.findViewById(R.id.yinbiao);Typeface mFace = Typeface.createFromAsset(getAssets(),"font/segoeui.ttf");yinbiaoTextView.setTypeface(mFace);yinbiaoTextView.setText("[æbstrækt]");this.textView.setText("Abstract");this.webView = (WebView) super.findViewById(R.id.myview);webView.loadUrl("file:///android_asset/abstract.html");this.webView.setOnTouchListener(new TouchListener());this.webView.setLongClickable(true);ImageButton01.setOnClickListener(new ImageButton.OnClickListener() {public void onClick(View v) {// TODO Auto-generated method stub/* 传入要说的字符串 */tts.speak("abstract", TextToSpeech.QUEUE_FLUSH, null);}});mWidth = Abstract_activity.getScreenWidth(this);}// 获取屏幕private TextToSpeech.OnInitListener ttsInitListener = new TextToSpeech.OnInitListener() {public void onInit(int status) {// TODO Auto-generated method stub/* 使用美国时区目前不支持中? */Locale loc = new Locale("us", "", "");/* ?查是否支持输入的时区 */if (tts.isLanguageAvailable(loc) == TextToSpeech.LANG_AVAILABLE) {/* 设定语言 */tts.setLanguage(loc);}tts.setOnUtteranceCompletedListener(ttsUtteranceCompletedListener);}};private TextToSpeech.OnUtteranceCompletedListener ttsUtteranceCompletedListener = new TextToSpeech.OnUtteranceCompletedListener() {public void onUtteranceCompleted(String utteranceId) {// TODO Auto-generated method stub}};@Overrideprotected void onDestroy() {tts.shutdown();super.onDestroy();}public static int getScreenWidth(Context context) {WindowManager manager = null;try {manager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();Log.d("11", "cuowu1 ");}Display display = manager.getDefaultDisplay();return display.getWidth();}private class TouchListener implements OnTouchListener {public boolean onTouch(View v, MotionEvent event) {return detector.onTouchEvent(event);}}private int minVelocity = 0;public class GestureListener implements OnGestureListener {public boolean onDown(MotionEvent e) {// TODO Auto-generated method stubreturn false;}public void onShowPress(MotionEvent e) {// TODO Auto-generated method stub}public boolean onSingleTapUp(MotionEvent e) {// TODO Auto-generated method stubreturn false;}public boolean onScroll(MotionEvent e1, MotionEvent e2,float distanceX, float distanceY) {return false;}public void onLongPress(MotionEvent e) {// TODO Auto-generated method stub}public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,float velocityY) {if (e1.getX() – e2.getX() > mWidth / 3&& Math.abs(velocityX) > minVelocity) {// 切换ActivityLog.d("11", "verticalMinDistance ");Intent intent = new Intent(Abstract_activity.this,Assert_activity.class);startActivity(intent);overridePendingTransition(R.anim.fade, R.anim.hold);// Toast.makeText(Abstract_activity.this, "向左手势",// Toast.LENGTH_SHORT).show();} else if (e2.getX() – e1.getX() > mWidth / 3&& Math.abs(velocityX) > minVelocity) {Toast.makeText(Abstract_activity.this, "第一页!",Toast.LENGTH_SHORT).show();}return false;}}}我喜欢旅游,喜欢离开自己过腻歪的城市,

小DEMO(JAVA关键字学习)一

相关文章:

你感兴趣的文章:

标签云: