編輯:關於android開發
如圖當我點擊下一個時會跳轉到別個界面,當我用手勢向右滑動的時候也調轉到下一頁
其中點擊最上面的RelativeLayout則CheckBox會被點擊,並用SharedPreferences來記錄是否被點擊了
package com.org.demo.wangfeng.demo; import com.org.wangfeng.R; import android.app.Activity; import android.app.AlertDialog; import android.app.AlertDialog.Builder; import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import android.util.Log; import android.view.GestureDetector; import android.view.MotionEvent; import android.view.View; import android.view.GestureDetector.SimpleOnGestureListener; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.CheckBox; import android.widget.LinearLayout; import android.widget.RelativeLayout; import android.widget.TextView; import android.widget.Toast; public class FirstDemo extends Activity { // 跳轉到下個界面的按鈕 在跳轉到其他界面時設置了動畫 private Button bb_frist; private GestureDetector mDectector; // 第一個模塊是否設置自動更新的設置 private RelativeLayout rl_settring; private TextView tv_desc; private CheckBox cb_status; // 設置一個SharedPreferences來判斷是否設置了自動更新設置 private SharedPreferences mPreferences; // 第二個模塊設置編輯還是完成的界面 private TextView bb_select; private TextView tv_accout, tv_delete; private LinearLayout ll_selectone, ll_selecttwo; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.fristdemo); mPreferences = getSharedPreferences("config", MODE_PRIVATE); bb_frist = (Button) findViewById(R.id.bb_frist); bb_frist.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub startActivity(new Intent(FirstDemo.this, TwoDemo.class)); finish(); // 設置界面滑動的動畫 overridePendingTransition(R.anim.tran_in, R.anim.tran_out);// 下一頁 } }); // 手勢識別器 mDectector = new GestureDetector(this, new SimpleOnGestureListener() { /** * 監聽手勢滑動事件 e1表示滑動的起點,e2表示滑動終點 velocityX表示水平速度 velocityY表示垂直速度 */ @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { // 判斷縱向滑動幅度是否過大, 過大的話不允許切換界面 if (Math.abs(e2.getRawY() - e1.getRawY()) > 100) { Toast.makeText(FirstDemo.this, "不能這樣劃哦!", Toast.LENGTH_SHORT).show(); return true; } // 判斷滑動是否過慢 if (Math.abs(velocityX) < 100) { Toast.makeText(FirstDemo.this, "滑動的太慢了!", Toast.LENGTH_SHORT).show(); return true; } // 向右劃,上一頁 if (e2.getRawX() - e1.getRawX() > 200) { // showPreviousPage(); return true; } // 向左劃, 下一頁 if (e1.getRawX() - e2.getRawX() > 200) { // showNextPage(); startActivity(new Intent(FirstDemo.this, TwoDemo.class)); finish(); // 設置界面滑動的動畫 overridePendingTransition(R.anim.tran_in, R.anim.tran_out);// 下一頁 return true; } return super.onFling(e1, e2, velocityX, velocityY); } }); rl_settring = (RelativeLayout) findViewById(R.id.rl_settring); tv_desc = (TextView) findViewById(R.id.tv_desc); cb_status = (CheckBox) findViewById(R.id.cb_status); boolean autoUpdata = mPreferences.getBoolean("auto_update", false); if (autoUpdata) { // 自動更新已開啟 tv_desc.setText("自動更新已開啟"); cb_status.setChecked(true); } else { tv_desc.setText("自動更新已關閉"); cb_status.setChecked(false); } rl_settring.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub if (cb_status.isChecked()) { tv_desc.setText("自動更新已關閉"); cb_status.setChecked(false); mPreferences.edit().putBoolean("auto_update", false) .commit(); } else { tv_desc.setText("自動更新已開啟"); cb_status.setChecked(true); mPreferences.edit().putBoolean("auto_update", true) .commit(); } } }); bb_select = (TextView) findViewById(R.id.bb_select); tv_accout = (TextView) findViewById(R.id.tv_accout); tv_delete = (TextView) findViewById(R.id.tv_delete); ll_selectone = (LinearLayout) findViewById(R.id.ll_selectone); ll_selecttwo = (LinearLayout) findViewById(R.id.ll_selecttwo); bb_select.setOnClickListener(new OnClickItemClass()); tv_accout.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub AlertDialog.Builder builder = new Builder(FirstDemo.this); builder.setTitle("是否結算"); builder.setMessage("是否結算"); builder.setPositiveButton("確定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface arg0, int arg1) { // TODO Auto-generated method stub } }); builder.setNegativeButton("否定", null); builder.create().show(); } }); tv_delete.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub AlertDialog.Builder builder = new Builder(FirstDemo.this); builder.setTitle("是否刪除"); builder.setMessage("是否刪除當前信息"); builder.setPositiveButton("確定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface arg0, int arg1) { // TODO Auto-generated method stub Toast.makeText(FirstDemo.this, "刪除成功", Toast.LENGTH_SHORT).show(); } }); builder.setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface arg0, int arg1) { // TODO Auto-generated method stub } }); builder.create().show(); } }); } private class OnClickItemClass implements View.OnClickListener { @Override public void onClick(View arg0) { // TODO Auto-generated method stub // ll_selectone.setVisibility(View.GONE); // ll_selecttwo.setVisibility(View.VISIBLE); Log.d("jiejie", "ddddddddddddd" + bb_select.getText()); if (bb_select.getText().toString().equals("編輯")) { ll_selectone.setVisibility(View.GONE); ll_selecttwo.setVisibility(View.VISIBLE); bb_select.setText("完成"); Log.d("jiejie", "ddbb_select.getText().equals(wancheng)dd" + bb_select.getText()); } else { ll_selectone.setVisibility(View.VISIBLE); ll_selecttwo.setVisibility(View.GONE); bb_select.setText("編輯"); Log.d("jiejie", "ddbb_select.getText().equals(bianji)dd" + bb_select.getText()); } } } @Override public boolean onTouchEvent(MotionEvent event) { mDectector.onTouchEvent(event);// 委托手勢識別器處理觸摸事件 return super.onTouchEvent(event); } }
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <RelativeLayout android:id="@+id/rl_settring" android:layout_width="match_parent" android:layout_height="70dp" android:padding="5dp" > <TextView android:id="@+id/tv_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="自動更新設置" android:textColor="#000" android:textSize="20sp" /> <TextView android:id="@+id/tv_desc" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/tv_title" android:layout_marginTop="3dp" android:text="ddddddd" android:textColor="#a000" android:textSize="17sp" /> <CheckBox android:id="@+id/cb_status" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:clickable="false" android:focusable="false" android:focusableInTouchMode="false" /> <View android:layout_width="match_parent" android:layout_height="0.2dp" android:layout_alignParentBottom="true" android:background="#a000" /> </RelativeLayout> <RelativeLayout android:layout_width="match_parent" android:layout_height="120dp" android:layout_below="@id/rl_settring" android:padding="5dp" > <TextView android:id="@+id/bb_select" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_marginRight="25dp" android:text="編輯" android:textColor="#000" android:textSize="20sp" /> <LinearLayout android:id="@+id/ll_selectone" android:layout_width="match_parent" android:layout_height="60dp" android:layout_alignParentBottom="true" android:orientation="horizontal" > <CheckBox android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1.2" android:text="全選" /> <TextView android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:gravity="center" android:text="共計" android:textColor="#000" android:textSize="18sp" /> <TextView android:id="@+id/tv_accout" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:gravity="center" android:text="結算" android:textColor="#000" android:textSize="18sp" /> </LinearLayout> <LinearLayout android:id="@+id/ll_selecttwo" android:layout_width="match_parent" android:layout_height="60dp" android:layout_alignParentBottom="true" android:orientation="horizontal" android:visibility="gone" > <CheckBox android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1.2" android:text="全選" /> <TextView android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:gravity="center" android:text="移到收藏夾" android:textColor="#000" android:textSize="18sp" /> <TextView android:id="@+id/tv_delete" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:gravity="center" android:text="刪除" android:textColor="#000" android:textSize="18sp" /> </LinearLayout> </RelativeLayout> <Button android:id="@+id/bb_frist" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_alignParentRight="true" android:background="@drawable/btn_selector" android:text="@string/next" /> </RelativeLayout>
tran_in.xml <?xml version="1.0" encoding="utf-8"?> <translate xmlns:android="http://schemas.android.com/apk/res/android" android:duration="300" android:fromXDelta="100%p" android:toXDelta="0" > </translate> tran_out.xml <?xml version="1.0" encoding="utf-8"?> <translate xmlns:android="http://schemas.android.com/apk/res/android" android:duration="500" android:fromXDelta="0" android:toXDelta="-100%p" > </translate> tran_previous_in.xml <?xml version="1.0" encoding="utf-8"?> <translate xmlns:android="http://schemas.android.com/apk/res/android" android:duration="500" android:fromXDelta="-100%p" android:toXDelta="0" > </translate> tran_previous_out.xml <?xml version="1.0" encoding="utf-8"?> <translate xmlns:android="http://schemas.android.com/apk/res/android" android:duration="500" android:fromXDelta="0" android:toXDelta="100%p" > </translate>
Remote Displayer for Android,displayerandroid應用截圖: 作者:sunrain_hjb  
Linux內核系列—11.操作系統開發之ELF格式,linuxelfELF文件的結構如下圖所示: ELF文件由4部分組成,分別是ELF頭(ELF header)、程序頭
生命不息,折騰不止截止到今天,我個人已經折騰了四個小玩意兒:高歌一曲(音樂播放器)、LMOS(x86_64體系的操作系統內核)、LMOSEM(ARM體系的操作系統內核),
Android中Canvas繪圖之PorterDuffXfermode使用及工作原理詳解 概述 類android.graphics.PorterDuffXfermode